Video Setup
Ten minutes, once. At the end the creator has:
- the tools the other skills call, installed and checked,
- : who they are, how they talk, what they believe, what they can prove. Every script is written from it,
- the editing studio ready, so the first edit starts right away,
- permission rules, so Claude can run ffmpeg, yt-dlp and Remotion without asking each time,
- if they want: their accounts connected through Treg (audit and publishing), and the keys for translation and images.
How to run it
- Talk in the creator's language. Simple words, no jargon.
- One question per message. Offer choices when you can, recommended first.
- Never invent anything about them: a fact you don't have becomes a question or a .
1. Tools
Run the checks and show one line per tool (✓ version, or ✗ missing):
bash
node -v
ffmpeg -version
yt-dlp --version
deno --version
git --version
| Tool | Used by | macOS | Windows | Linux |
|---|
| Node 18+ | video-edit (Remotion) | | winget install OpenJS.NodeJS.LTS
| nodejs.org or your package manager |
| ffmpeg | video-edit, video-steal, long-to-short-videos, video-translate, video-publish | | winget install Gyan.FFmpeg
| |
| yt-dlp | video-viral, video-steal, long-to-short-videos, voice.md from videos | | winget install yt-dlp.yt-dlp
| pipx install "yt-dlp[default]"
|
| deno | yt-dlp on YouTube (it needs a JavaScript runtime) | comes with yt-dlp | winget install DenoLand.Deno
| curl -fsSL https://deno.land/install.sh | sh
|
| git, build tools | video-edit (gets the Remotion template, builds whisper.cpp) | | | sudo apt install git build-essential
|
| Codex (optional) | codex-images | , then | same | same |
Give the commands for what is missing and let them run them (or run them yourself if they say so). Scripting-only users (video-script, video-viral) only need yt-dlp and deno. Codex is only for
and needs a ChatGPT plan; skip it if they don't want images.
- Windows: after , close and reopen the terminal (and Claude Code), or the new commands are not found.
- YouTube changes often. When yt-dlp fails on a link that plays in the browser, update it first (,
winget upgrade yt-dlp.yt-dlp
, ).
2. The folder
Create it at the root of the current project:
text
video-agent/
├── voice.md who they are and how they talk (step 4)
├── swipe.md hooks that worked in their niche (video-viral)
├── audit.md what works on their own Instagram (video-audit)
├── log.md one line per script written, so nothing repeats
├── scripts/ one file per week (video-script)
├── takes/ raw recordings (phone, camera, webcam, screen)
├── edits/ one folder per edited video (video-edit): final.mp4, post.md, cover.jpg, published.md
├── repurpose/ one plan per long video (long-to-short-videos)
├── images/ generated images not tied to a video (codex-images)
├── studio/ the Remotion project (step 3)
├── .env their API keys, never shared (step 6)
└── .tmp/ scratch files, deleted after each run
If the project is in git, add these lines to its
(videos are heavy; the text files stay tracked):
gitignore
video-agent/takes/
video-agent/edits/**/*.mp4
video-agent/studio/public/
video-agent/studio/out/
video-agent/studio/node_modules/
video-agent/studio/whisper.cpp/
video-agent/.tmp/
video-agent/.env
holds keys: it must be ignored even if they skip the rest.
3. The studio
The editing studio (Remotion, whisper.cpp for the captions, a speech model) takes 5 to 15 minutes and about 2 GB to set up. Ask: now (recommended if they will edit soon, the first edit then starts right away), or later (video-edit does it the first time it runs).
Now: run step 2 of
("The studio"), including the
and
compositions and the
check. Say what is downloading and how big before starting. Only for video-edit, long-to-short-videos and video-translate; scripting-only users skip it.
4. voice.md
First the two settings at the top of the file: the language they record in, and their brand color (the accent of captions and cards; default
, a yellow that reads on any footage). Then ask how to build the rest:
- From their videos (recommended when they have posted before): 3 to 5 links of their best talking videos (YouTube, Shorts, TikTok, Instagram reels). Pull the transcripts ( = their language code: , , ):
bash
yt-dlp --skip-download --write-auto-subs --write-subs --sub-langs "<lang>.*" --sub-format vtt -o "video-agent/.tmp/%(id)s.%(ext)s" "<url>"
Read them and fill the template from what they actually say: their real phrases, their pace (words ÷ minutes of speech), the words they repeat, the way they open and close. Then ask only what the transcripts can't tell (positions, proof, off limits, the ask). Delete after.
YouTube links almost always give a transcript. TikTok sometimes does, Instagram almost never: for those, ask for a YouTube link or switch to the interview.
- From an interview: ask the template's questions one at a time, in plain words ("What do you believe that most people in your niche get wrong?").
Either way, ask them to paste 3 short texts they wrote themselves, before any AI tool (a caption, a message, an email). They go in "Real samples" and teach the scripts their rhythm.
Write
from
references/voice-template.md. Then read it back to them in 5 lines and ask what is wrong. A voice file is never finished: say they can run
any time to update it.
5. Permissions
The other skills run the same few commands again and again. Pre-approve them for this project. Show the rules, ask, then
merge them into
. Create the file if it is missing. Keep every key and rule already there, and never remove anything.
json
{
"permissions": {
"allow": [
"Bash(yt-dlp *)",
"Bash(ffmpeg *)",
"Bash(ffprobe *)",
"Bash(npx remotion *)",
"Bash(node sub.mjs *)"
]
}
}
- Only these. Never add , , or a rule for a whole interpreter (, ).
- Rules in the shared apply once the folder is trusted. A creator who keeps this project in git and doesn't want to share the rules can use
.claude/settings.local.json
instead (same format, personal).
- Each skill also lists its own commands in its , which covers the turn the skill runs in. These rules cover every other turn.
6. Accounts and keys (optional)
Three things, each only if they want the skill that needs it. Ask once, in one message:
| For | What | Cost |
|---|
| and | Treg, with their Instagram, TikTok and YouTube connected | free on their own accounts |
| (and 's music level and sound effects, optional) | an ElevenLabs API key | their ElevenLabs plan |
| Codex logged in with their ChatGPT account | their ChatGPT plan |
ElevenLabs: they create a key at elevenlabs.io/app/settings/api-keys and paste it themselves into
as
(create the empty file and open it for them). Never ask for a key in the chat. Check it is there without printing it:
grep -c ELEVENLABS_API_KEY video-agent/.env
.
Codex:
, then they run
(browser, "Sign in with ChatGPT").
Treg
yt-dlp reads YouTube for free. TikTok and Instagram hide their numbers from scripts, a creator's own stats sit behind their login, and posting needs their accounts.
Treg fills that gap: their own accounts connected once (stats and publishing, free), other creators' public numbers for about $0.001 a call. New verified accounts get $1.00 of credit once, enough for hundreds of calls.
Two ways to plug it in:
- CLI, macOS and Linux. It needs uv (recommended, it fetches the right Python), or pipx or pip with Python 3.12 or 3.13. There is no Windows installer.
bash
curl -fsSL https://treg.to/install.sh | sh
treg login
opens the browser (GitHub, Google or an email code).
- MCP, any OS, nothing to install:
claude mcp add --transport http treg https://treg.to/mcp/
, then to sign in. Each , , and below becomes the MCP tool , , or .
Their own accounts (connecting needs the CLI).
asks for the rights to read their stats and to post; posting still waits for their yes on each video:
bash
treg connections connect --provider instagram --capability post
treg connections connect --provider tiktok --capability post
treg connections connect --provider youtube --capability post
treg connections ls
Each
opens the platform's own login; they approve it there. Connect only the platforms they post on. Instagram needs a professional account (Creator or Business, a free switch in the app: Profile → menu → Account type and tools). Treg prints tips on stderr: add
when you read its JSON.
Instagram connected: offer
right after, it is the best first look at what works for them.
How every Treg call works, the rule for all the skills:
treg catalog search "<what you want to do>"
: describe the job, not a vendor ("list a TikTok account's videos with view counts").
- : the parameters and the price. Say the price before calling. Their own connected accounts are marked free.
treg call <id> --query key=value
. A failed call is not charged. shows what is left; a 402 error means the balance is empty.
Permissions: add only the free, read-only commands, so every paid
still asks first:
json
"Bash(treg catalog *)",
"Bash(treg balance)",
"Bash(treg connections ls)"
7. Wrap up
Show what is ready (✓ or skipped, one line each) and the path forward:
- : what works on their own Instagram (fills audit.md).
- : what works in their niche (fills swipe.md; once a month).
- : this week's scripts, hooks first, humanized.
- Record them: phone, camera or webcam, one take per script, saved in
video-agent/takes/<slug>.mp4
.
- : a short (vertical) or a full YouTube video (horizontal).
- : a creator's reel they love into a style can use.
- : a long video into finished shorts.
- : a take in another language, in their voice.
- : thumbnails and covers.
- : YouTube, Instagram and TikTok.
Later
jumps to one part:
,
,
(rebuild or update voice.md),
,
,
.