mirror of
https://github.com/digitalsamba/claude-code-video-toolkit.git
synced 2026-09-18 19:41:13 +08:00
290d7d345b
* Adopt uv for Python dependency management Replace manual pip/venv setup with `uv sync` (pyproject.toml + uv.lock), and switch all tool invocations across docs, skills, commands, and examples to `uv run`. Optional extras: --extra whisper, --extra modal. tools/requirements.txt is kept as a pip fallback. * FIX: bring uv migration current with main — post-June deps and docs Adds websocket-client (60db websocket transport) to core deps and a 'youtube' extra for the google-* packages (tools/youtube_upload.py), regenerates uv.lock, bumps pyproject version to 0.18.0, and converts the 51 'python3 tools/…' invocations added since the PR was opened (60db, YouTube, Kiro docs, publish command) to 'uv run'. Verified with uv sync --frozen --extra youtube; voiceover, sixtydb_tts, youtube_upload and migrate_to_kiro all run through the project environment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Asharib Ali <asharibarain4@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
83 lines
4.1 KiB
Bash
83 lines
4.1 KiB
Bash
# ============================================================
|
|
# Claude Code Video Toolkit — Environment Variables
|
|
# ============================================================
|
|
# All keys are OPTIONAL. The toolkit works without any of them.
|
|
# You only need keys for the specific features you want to use.
|
|
#
|
|
# Quick setup: Run /setup in Claude Code for a guided walkthrough.
|
|
# ============================================================
|
|
|
|
|
|
# --- Cloudflare R2 (file transfer for cloud GPU tools) ---
|
|
# Free tier: 10GB storage, 10M ops/month, zero egress fees
|
|
# Setup: https://dash.cloudflare.com → R2 Object Storage → Create bucket
|
|
# This makes cloud GPU tools faster and more reliable.
|
|
# Without it, tools fall back to free file hosting services.
|
|
# R2_ACCOUNT_ID=your_account_id_here
|
|
# R2_ACCESS_KEY_ID=your_access_key_id_here
|
|
# R2_SECRET_ACCESS_KEY=your_secret_access_key_here
|
|
# R2_BUCKET_NAME=video-toolkit
|
|
|
|
|
|
# --- Cloud GPU: Modal (recommended) ---
|
|
# $30/month free compute on Starter plan (just add a payment method)
|
|
# Setup: uv sync --extra modal && uv run modal setup
|
|
# Deploy: uv run modal deploy docker/modal-{tool}/app.py
|
|
# Endpoint URLs are printed after each deploy — paste them here.
|
|
# MODAL_QWEN3_TTS_ENDPOINT_URL=https://yourname--video-toolkit-qwen3-tts-....modal.run
|
|
# MODAL_FLUX2_ENDPOINT_URL=https://yourname--video-toolkit-flux2-....modal.run
|
|
# MODAL_IMAGE_EDIT_ENDPOINT_URL=https://yourname--video-toolkit-image-edit-....modal.run
|
|
# MODAL_UPSCALE_ENDPOINT_URL=https://yourname--video-toolkit-upscale-....modal.run
|
|
# MODAL_MUSIC_GEN_ENDPOINT_URL=https://yourname--video-toolkit-music-gen-....modal.run
|
|
# MODAL_SADTALKER_ENDPOINT_URL=https://yourname--video-toolkit-sadtalker-....modal.run
|
|
# MODAL_DEWATERMARK_ENDPOINT_URL=https://yourname--video-toolkit-dewatermark-....modal.run
|
|
# LTX-2 also needs a Modal secret named `huggingface-token` (gated weights) and an
|
|
# A100-80GB, which requires a payment method on your Modal account.
|
|
# MODAL_LTX2_ENDPOINT_URL=https://yourname--video-toolkit-ltx2-....modal.run
|
|
|
|
|
|
# --- Cloud GPU: RunPod (alternative) ---
|
|
# Pay-as-you-go, ~$0.44/hr GPU time
|
|
# Setup: https://runpod.io/console/user/settings → API Keys
|
|
# Endpoint IDs are auto-created by each tool's --setup command.
|
|
# RUNPOD_API_KEY=your_api_key_here
|
|
# RUNPOD_QWEN3_TTS_ENDPOINT_ID=
|
|
# RUNPOD_FLUX2_ENDPOINT_ID=
|
|
# RUNPOD_QWEN_EDIT_ENDPOINT_ID=
|
|
# RUNPOD_UPSCALE_ENDPOINT_ID=
|
|
# RUNPOD_SADTALKER_ENDPOINT_ID=
|
|
# RUNPOD_ACESTEP_ENDPOINT_ID=
|
|
# RUNPOD_ENDPOINT_ID=
|
|
|
|
|
|
# --- AI Voiceover ---
|
|
# Qwen3-TTS: Free (runs on your cloud GPU above). No key needed.
|
|
# ElevenLabs: Premium cloud TTS (pay-per-character, optional)
|
|
# ELEVENLABS_API_KEY=your_api_key_here
|
|
# ELEVENLABS_VOICE_ID=your_voice_id_here
|
|
#
|
|
# 60db: Premium cloud TTS (https://60db.ai), used via --provider 60db
|
|
# Get a key at https://60db.ai. VOICE_ID is optional (falls back to the
|
|
# 60db default voice; list yours with: uv run tools/sixtydb_tts.py --list-voices)
|
|
# SIXTYDB_API_KEY=sk_live_your_key
|
|
# SIXTYDB_VOICE_ID=your_voice_id_here
|
|
|
|
|
|
# --- YouTube upload (tools/youtube_upload.py) ---
|
|
# YouTube uploads use OAuth 2.0 (acting on behalf of a channel), NOT an API key.
|
|
# One-time setup (see docs/youtube-upload.md for the full walkthrough):
|
|
# 1. Google Cloud Console -> create a project -> enable "YouTube Data API v3".
|
|
# 2. OAuth consent screen -> External -> add your channel's Google account as a Test user.
|
|
# 3. Credentials -> Create OAuth client ID -> Application type "Desktop app".
|
|
# 4. Download the client_secret_*.json and point the var below at it (absolute path).
|
|
# 5. Log in once (opens a browser): uv run tools/youtube_upload.py --auth
|
|
# NOTE: unaudited API projects MAY have public uploads force-locked to private, but
|
|
# this mainly affects uploads to OTHER channels — first-party uploads to your own
|
|
# channel generally publish public/scheduled fine. "Testing"-mode refresh tokens
|
|
# expire after ~7 days (re-run --auth). The tool reports the actual returned privacy.
|
|
# YOUTUBE_CLIENT_SECRETS_FILE=/absolute/path/to/client_secret.json
|
|
#
|
|
# Optional: override where per-account refresh tokens are cached
|
|
# (default: <workspace>/_internal/.youtube/, which is gitignored).
|
|
# YOUTUBE_TOKEN_DIR=/absolute/path/to/token/cache/dir
|