# hyperframes-ai-video-generation Turn a topic prompt into a polished, AI-voiced vertical YouTube Short. One command, fire and forget. ```bash archon workflow run create-classic-short --no-worktree "What is RAG?" ``` That's it. The workflow researches the topic, drafts a paced narration, generates TTS (free Kokoro locally, or paid ElevenLabs β€” your choice), edits an HTML+GSAP composition, lints it, and opens a browser preview. Render is always manual β€” `npx hyperframes render videos/` when you're ready. The repo ships with **three templates out of the box** β€” `classic` (brand-neutral default, blue + dark), `archon` (Archon-branded), `anthropic` (Anthropic-branded) β€” and you can [build your own brand](#want-a-different-brand-or-look) by asking your coding agent. > ## πŸš€ Just tell your coding agent to do it > > The fastest way through this whole README is to **not** read it yourself. Open this repo in [Claude Code](https://claude.ai/code) (or any agentic coding tool) and paste one of these: > > **To generate a video with a shipped template:** > > > _"Read the README and set everything up so I can generate my first video. The topic is: **[your idea or URL here]**."_ > > **To build your own brand/style first, then generate:** > > > _"Read the README. Look at `templates/shorts/classic/`, `templates/shorts/archon/`, and `templates/shorts/anthropic/` as references, then create a new short template for **[your brand name, URL, or vibe β€” e.g. "my SaaS at example.com", "a cyberpunk dev tool", "Linear"]**. Pick the palette, gradient, wordmark, and CTA URL yourself based on the brand. When the template is built and lints clean, generate my first video with it. The topic is: **[your idea or URL here]**."_ > > The agent will install the system deps, walk you through any keys it needs (Kokoro is free / no key required; ElevenLabs needs an API key), optionally clone + restyle a template for your brand, run the matching `archon workflow run create--short`, and hand you the preview URL. You just supply the inputs. The stack: **[Archon](https://archon.diy)** (workflow harness) + **[Claude Code](https://claude.ai/code)** (planning + composition editing) + **[HyperFrames](https://hyperframes.heygen.com/)** (HTML/GSAP video framework) + **[Kokoro](https://github.com/hexgrad/kokoro)** (free local TTS, default) or **[ElevenLabs](https://elevenlabs.io)** (paid premium TTS) β€” both return word-level timestamps. Total runtime per short: ~20-30 min depending on research depth. ## Quick Start > ### πŸ€– For the coding agent β€” ask the user these two questions first > > If you're an AI coding agent reading this README to set things up, **do not assume defaults**. Ask the user these two questions and tailor everything below to their answers. > > **1. Which TTS engine do you want β€” Kokoro or ElevenLabs?** > > - _Kokoro_ β€” free, local, no API key, Apache-licensed, ~325MB one-time model download, runs on CPU. High quality (MOS 4.5). Preset voices only β€” no voice cloning. > - _ElevenLabs_ β€” paid (~$5/M chars), premium quality, supports Instant Voice Cloning. Requires an `ELEVENLABS_API_KEY` from [elevenlabs.io](https://elevenlabs.io). > > Install ONLY the deps for the engine they picked (don't install both) and configure ONLY that engine's block in `.archon/.env`. > > **If they pick ElevenLabs, walk them through getting set up β€” don't just point them at a link.** Specifically: > > 1. **Tell them to create an ElevenLabs account** at https://elevenlabs.io. The free tier is fine for testing (10,000 chars/month β‰ˆ 5-6 shorts); the Starter plan ($5/mo, 30,000 chars) is the realistic minimum for regular use. > 2. **Walk them to the API key page**: log in β†’ click their avatar (top-right) β†’ "API Keys" β†’ "Create API Key" β†’ copy the value. Tell them to paste it as `ELEVENLABS_API_KEY=...` in `.archon/.env`. **Never commit this file** β€” it's already gitignored. > 3. **Ask whether they want a preset voice or their own voice clone:** > - _Preset voice_ β€” set `ELEVENLABS_VOICE_ID=nPczCjzI2devNBz1zQrb` (Brian, mature American male β€” the documented default for shorts). Other presets: Adam `pNInz6obpgDQGcFmaJgB`, Daniel `onwK4e9ZLuTAKqWW03F9`. Or run `python scripts/list_voices.py` after setup to browse. > - _Voice clone_ β€” direct them to elevenlabs.io β†’ "Voices" β†’ "Add Voice" β†’ "Instant Voice Clone", upload 1-3 minutes of clean audio (their own voice for personalized narration), then copy the new voice's ID from the voice page URL or the voice library detail panel. > 4. **Confirm the rest of the tuning vars are filled in** with the tested-good shorts defaults from `.env.example` (these are NOT the ElevenLabs platform defaults β€” the platform defaults sound flatter on shorts): > - `ELEVENLABS_MODEL_ID=eleven_multilingual_v2` > - `ELEVENLABS_STABILITY=0.40` > - `ELEVENLABS_SIMILARITY_BOOST=0.75` > - `ELEVENLABS_STYLE=0.70` > - `ELEVENLABS_SPEED_SHORTS=1.15` > - `ELEVENLABS_USE_SPEAKER_BOOST=true` > 5. **Verify**: after `.archon/.env` is filled in, run a one-line smoke test before kicking off the full workflow: > ```bash > python -c "import os; from dotenv import load_dotenv; load_dotenv('.archon/.env'); print('OK' if os.getenv('ELEVENLABS_API_KEY') else 'MISSING KEY')" > ``` > If it prints `MISSING KEY`, the `.env` file isn't being read β€” most likely the path is wrong or the line is commented out. > > The full tuning matrix (what each knob does, when to adjust it) is in [`.env.example`](.env.example) and the ["Voice tuning"](#voice-tuning-elevenlabs) section below β€” surface that to the user if they ask "what does X setting do?" > > **2. Do you want to use one of the shipped templates as-is, or customize the look first?** > > - _Use shipped as-is_ β€” pick `classic` (brand-neutral default), `archon`, or `anthropic`. No template work needed; go straight to step 5 (run the workflow). > - _Customize the style only (reskin)_ β€” different palette, wordmark, and CTA URL, but the same scene layouts as the source template. Route to ["Adding your own template" β†’ Option A or B](#adding-your-own-template-let-your-coding-agent-do-it). > - _Customize the scenes too (redesign)_ β€” different visual layouts inside each phase, so the video doesn't look identical to the shipped templates. Route to ["Adding your own template" β†’ Option C](#option-c--redesign-the-scenes-different-layouts-same-phase-rhythm). > > **If they want to customize, ask a follow-up: "briefly describe what you want."** Brand name, target website, vibe, palette inspiration, any specific scene layouts they care about. One or two sentences is enough for Option B; Option C benefits from a per-phase layout direction (see the alternatives table in that section). > > Only after both answers are confirmed: proceed with the install steps below, then build/pick the template, then run the matching workflow. Three install commands, one config file, one workflow run. ### 1. Install Claude Code ```bash # macOS / Linux / WSL curl -fsSL https://claude.ai/install.sh | bash # Windows (PowerShell) irm https://claude.ai/install.ps1 | iex ``` Then `claude /login` once to authenticate. ### 2. Install Archon (binary, no setup wizard needed) ```bash # macOS / Linux curl -fsSL https://archon.diy/install | bash # Windows (PowerShell) irm https://archon.diy/install.ps1 | iex # Homebrew brew install coleam00/archon/archon ``` Point Archon at Claude Code (binary installs don't bundle it): ```bash # macOS / Linux / WSL β€” add to ~/.bashrc or ~/.zshrc export CLAUDE_BIN_PATH="$HOME/.local/bin/claude" # Windows (PowerShell profile) $env:CLAUDE_BIN_PATH = "$env:USERPROFILE\.local\bin\claude.exe" ``` You do **NOT** need to run `archon setup` β€” that's only for the source-install path (which clones the Archon repo). The binary just works against this repo's pre-configured `.archon/` directory. On first workflow run, Archon lazily creates `~/.archon/archon.db` (SQLite, single file, no schema setup required). ### 3. Install system deps You need Node β‰₯22, Python β‰₯3.10, ffmpeg, jq, and bun. ```bash # macOS (Homebrew) brew install node python ffmpeg jq oven-sh/bun/bun # Windows (winget + bun installer) winget install OpenJS.NodeJS Python.Python.3.12 Gyan.FFmpeg jqlang.jq irm bun.sh/install.ps1 | iex # Linux (Debian / Ubuntu) β€” apt's `nodejs` is too old on most LTS releases; # use NodeSource for Node 22. curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash - sudo apt install -y nodejs python3 python3-venv python3-pip ffmpeg jq unzip curl -fsSL https://bun.sh/install | bash ``` Then the Python TTS deps. Use a virtualenv so `pip` doesn't fight your system Python (Ubuntu 24.04+ blocks bare `pip install` via PEP 668): ```bash python3 -m venv .venv source .venv/bin/activate # macOS / Linux # .venv\Scripts\activate # Windows PowerShell # Pick ONE of these β€” see "TTS engines" below for the tradeoff. # Free local TTS (Kokoro, no API key) pip install kokoro python-dotenv soundfile numpy # OR commercial TTS (ElevenLabs, paid API) pip install elevenlabs python-dotenv ``` If you chose Kokoro, also install **espeak-ng** system-wide (needed for phoneme conversion): ```bash # macOS brew install espeak # Ubuntu / Debian sudo apt install espeak-ng # Windows: download the .msi installer # https://github.com/espeak-ng/espeak-ng/releases ``` Activate the venv (`source .venv/bin/activate`) in any shell where you'll run `archon workflow run` β€” the workflow's TTS step calls `python scripts/kokoro-tts.py` or `python scripts/elevenlabs-tts.py` and needs the chosen package on the active interpreter's path. ### 4. Clone + configure ```bash git clone https://github.com/coleam00/hyperframes-ai-video-generation cd hyperframes-ai-video-generation cp .env.example .archon/.env ``` Open `.archon/.env` and fill in the TTS settings for whichever engine you picked: **For Kokoro (free, local):** - `KOKORO_VOICE=af_heart` (or any voice from the [Kokoro voice catalog](https://huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md)) - `KOKORO_LANG_CODE=a` (`a`=American English, `b`=British, `j`=Japanese, etc.) - Speed defaults already shipped β€” see `.env.example`. **For ElevenLabs (paid, premium quality):** - `ELEVENLABS_API_KEY` β€” your key from [elevenlabs.io](https://elevenlabs.io) - `ELEVENLABS_VOICE_ID` β€” either your clone's ID or a preset (Brian `nPczCjzI2devNBz1zQrb` is the documented default) - The other 7 settings ship with the **tested-good defaults** for shorts (see "Voice tuning" below). ### 5. Run it Pick a template aesthetic. **`classic` is the default** β€” brand-neutral, works for any topic: ```bash # Classic (brand-neutral dark theme, bright blue + sky blue) β€” DEFAULT archon workflow run create-classic-short --no-worktree "Your topic here" # Archon-themed (dark blue + cyan/magenta gradient hero) archon workflow run create-archon-short --no-worktree "Your topic here" # Anthropic-themed (near-black + warm orange/cream gradient hero) archon workflow run create-anthropic-short --no-worktree "Your topic here" ``` Want a different brand? See "[Want a different brand or look?](#want-a-different-brand-or-look)" below β€” the fastest path is asking your coding agent to clone an existing template and re-skin it. 20-30 minutes later the studio opens with the finished short. Render with `npx hyperframes render videos/ -o videos//out/.mp4`. --- ## What the workflow does Each template ships with its own three-node Archon workflow at `.archon/workflows/create-