Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions .claude/commands/generate-voiceover.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,34 +154,34 @@ Before gathering configuration, check if we're in a project context:

**ElevenLabs — Per-scene mode (recommended):**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--scene-dir public/audio/scenes \
--json
```

**ElevenLabs — With concat for SadTalker:**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--scene-dir public/audio/scenes \
--concat public/audio/voiceover-concat.mp3 \
--json
```

**ElevenLabs — Single-file mode (legacy):**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--script "SCRIPT_PATH" \
--output "public/audio/voiceover.mp3" \
--json
```

**Qwen3-TTS — Per-scene mode:**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--provider qwen3 \
--speaker SPEAKER_NAME \
--scene-dir public/audio/scenes \
Expand All @@ -190,8 +190,8 @@ Before gathering configuration, check if we're in a project context:

**Qwen3-TTS — With brand clone profile:**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--provider qwen3 \
--brand BRAND_NAME \
--scene-dir public/audio/scenes \
Expand All @@ -200,8 +200,8 @@ Before gathering configuration, check if we're in a project context:

**Qwen3-TTS — With tone preset:**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--provider qwen3 \
--speaker Ryan \
--tone warm \
Expand All @@ -211,8 +211,8 @@ Before gathering configuration, check if we're in a project context:

**Qwen3-TTS — With custom instruction (overrides --tone):**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--provider qwen3 \
--speaker Ryan \
--instruct "Speak warmly and calmly" \
Expand All @@ -222,8 +222,8 @@ Before gathering configuration, check if we're in a project context:

**Qwen3-TTS — Single-file mode:**
```bash
cd PROJECT_DIR
python /Users/conalmullan/work/video/tools/voiceover.py \
cd REPO_ROOT/PROJECT_DIR
python ../tools/voiceover.py \
--provider qwen3 \
--speaker Ryan \
--script "SCRIPT_PATH" \
Expand Down Expand Up @@ -264,8 +264,8 @@ Before gathering configuration, check if we're in a project context:

## Tool Location

- Voiceover tool: `/Users/conalmullan/work/video/tools/voiceover.py`
- Qwen3-TTS tool: `/Users/conalmullan/work/video/tools/qwen3_tts.py`
- Voiceover tool: `tools/voiceover.py` (run from the toolkit root, or use `../tools/voiceover.py` from a project directory)
- Qwen3-TTS tool: `tools/qwen3_tts.py`
- Config: `_internal/toolkit-registry.json` (voice ID)
- API Key: `.env` file (`ELEVENLABS_API_KEY` for ElevenLabs, `RUNPOD_API_KEY` + `RUNPOD_QWEN3_TTS_ENDPOINT_ID` for Qwen3)

Expand Down
8 changes: 4 additions & 4 deletions .claude/commands/record-demo.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Before gathering configuration, check if we're in a project context:
**For Interactive Mode:**
Run the interactive recording script:
```bash
cd /Users/conalmullan/work/video/playwright
cd REPO_ROOT/playwright
npx tsx scripts/record-interactive.ts \
--url "USER_URL" \
--name "USER_NAME" \
Expand Down Expand Up @@ -106,9 +106,9 @@ Before gathering configuration, check if we're in a project context:

## Script Locations

- Interactive script: `/Users/conalmullan/work/video/playwright/scripts/record-interactive.ts`
- Flow templates: `/Users/conalmullan/work/video/playwright/scripts/flows/`
- Output (default): `/Users/conalmullan/work/video/playwright/output/`
- Interactive script: `playwright/scripts/record-interactive.ts`
- Flow templates: `playwright/scripts/flows/`
- Output (default): `playwright/output/`

## Viewport Presets

Expand Down
8 changes: 8 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ When adding or modifying commands, skills, or templates, update these files:
| New component | `CLAUDE.md` (Shared Components table) |
| New transition | `README.md` (Scene Transitions), `lib/transitions/README.md` |

If your change affects Codex compatibility, also update:

| What Changed | Update These Files |
|--------------|-------------------|
| Codex migration flow | `README.md` ("Using with Codex"), `docs/getting-started.md`, `scripts/migrate_to_codex.py` |
| Claude guidance source | `CLAUDE.md` and then re-run `python3 scripts/migrate_to_codex.py --force` to regenerate the Codex block in `AGENTS.md` |
| Generated resource list or warnings | `README.md` and `docs/getting-started.md` |

**Quick verification:** After adding a command, grep for it across docs:
```bash
grep -r "/your-command" README.md CLAUDE.md
Expand Down
56 changes: 56 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,62 @@ Then in Claude Code:

**That's it.** `/setup` walks you through everything interactively — cloud GPU provider, file transfer, voice config. `/video` creates a project from a template and guides you through the whole workflow.

## Using with Codex

This toolkit is built around Claude Code assets in `.claude/` and `CLAUDE.md`, but it also ships an experimental migration script for Codex.

```bash
python3 scripts/migrate_to_codex.py --force
```

This does two things:

1. Installs Codex skills into `~/.codex/skills`
2. Appends or updates a generated Codex block in the repository root `AGENTS.md` from `CLAUDE.md`

Resources created or updated by `python3 scripts/migrate_to_codex.py --force`:

1. `~/.codex/skills/acestep/`
2. `~/.codex/skills/elevenlabs/`
3. `~/.codex/skills/ffmpeg/`
4. `~/.codex/skills/frontend-design/`
5. `~/.codex/skills/ltx2/`
6. `~/.codex/skills/moviepy/`
7. `~/.codex/skills/playwright-recording/`
8. `~/.codex/skills/qwen-edit/`
9. `~/.codex/skills/remotion/`
10. `~/.codex/skills/remotion-best-practices/`
11. `~/.codex/skills/runpod/`
12. `~/.codex/skills/brand/`
13. `~/.codex/skills/contribute/`
14. `~/.codex/skills/design/`
15. `~/.codex/skills/generate-voiceover/`
16. `~/.codex/skills/record-demo/`
17. `~/.codex/skills/redub/`
18. `~/.codex/skills/scene-review/`
19. `~/.codex/skills/setup/`
20. `~/.codex/skills/skills/`
21. `~/.codex/skills/template/`
22. `~/.codex/skills/versions/`
23. `~/.codex/skills/video/`
24. `~/.codex/skills/video-toolkit/`
25. `~/.codex/skills/voice-clone/`
26. A generated Codex block inside `AGENTS.md` in the repository root

Important:

1. The migration script manages only a generated block inside the repository root `AGENTS.md`.
2. Manual `AGENTS.md` content outside that block is preserved.
3. The generated block is derived from `CLAUDE.md`, so changes to `CLAUDE.md` should be followed by `python3 scripts/migrate_to_codex.py --force`.

To remove the installed Codex skills later:

```bash
python3 scripts/migrate_to_codex.py --reset
```

`--reset` removes the toolkit skills previously installed under `~/.codex/skills` and removes the generated Codex block from `AGENTS.md`. It does not delete other user skills and it does not remove the rest of `AGENTS.md`.

**What's free:** The toolkit leans heavily on open-source AI models — voiceovers (Qwen3-TTS), image generation (FLUX.2), music (ACE-Step), and more. You deploy them to your own cloud GPU account and run them at cost. Cloudflare R2 has a generous free tier (10GB, zero egress), and Modal gives $30/month free compute on the Starter plan — more than enough for a few 5-minute videos a month.

**Requirements:** [Node.js](https://nodejs.org/) 18+ and [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Python 3.9+ recommended for AI tools. FFmpeg optional.
Expand Down
8 changes: 8 additions & 0 deletions codex/migration_map.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"skip_commands": [],
"skip_skills": [
"openclaw-video-toolkit"
],
"command_name_overrides": {},
"skill_name_overrides": {}
}
31 changes: 31 additions & 0 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,37 @@ No API keys needed. Edit `src/config/sprint-config.ts` to customize content.

Or configure manually: `cp .env.example .env` and edit with your API keys.

## Optional: Codex Setup

If you use Codex instead of Claude Code, install the toolkit's Codex-compatible wrappers and regenerate `AGENTS.md` from `CLAUDE.md`:

```bash
python3 scripts/migrate_to_codex.py --force
```

This installs toolkit skills into `~/.codex/skills` and appends or updates a generated Codex block in the repository root `AGENTS.md`.

Resources created or updated by the migration script:

1. Toolkit skills under `~/.codex/skills/`
2. Command-wrapper skills under `~/.codex/skills/`
3. A generated Codex block inside repository root `AGENTS.md`

Important:

1. The script manages only a generated block inside the repository root `AGENTS.md`.
2. Manual `AGENTS.md` content outside that block is preserved.
3. The generated block is derived from `CLAUDE.md`.
4. Re-run `python3 scripts/migrate_to_codex.py --force` after updating `CLAUDE.md`.

To remove the installed toolkit skills later:

```bash
python3 scripts/migrate_to_codex.py --reset
```

`--reset` removes the generated Codex block from `AGENTS.md`, but does not remove the rest of the file.

## Your First Video

The easiest way to create a video is using the `/video` command:
Expand Down
4 changes: 2 additions & 2 deletions docs/qwen-edit-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ python tools/test_qwen_edit.py --image photo.jpg --prompt "description" --seed 4

## Files Created

```
/Users/conalmullan/work/video/
```text
<toolkit-root>/
├── conor_bond.png
├── conor_neo.png
├── conor_wick.png
Expand Down
Loading