skill
pich
Drop a raw video, get a finished Reel. /pich turns a talking-head clip into a captioned, edited vertical video with automatic QA — a skill for Claude Code & AI agents.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/karayunusemre2003-hue/pich itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 21, 2026Drop a raw video. Get a finished Reel. Type /pich video.mov and your AI agent turns a raw talking-head clip into
a finished vertical Reel/Short/TikTok — cuts, captions, cards, music — and checks it automatically before you post. A Claude Code skill (works with any
agent that can run shell commands) plus plain Python/FFmpeg scripts.
What you get
From one plan.json and one FFmpeg pass:
- Speech-safe cuts — pauses removed, never a clipped syllable (every cut edge is measured).
- Verified captions — two Whisper models plus a per-phrase isolated pass flag misheard words before they become captions.
- Hook card on frame 0, info cards, icons (200k+ open-source via Iconify), verified brand logos.
- Step slide with live PiP, or a brag-style Hyperframes motion segment (animated counters, charts) with the speaker still on screen.
- Stock B-roll from Pexels: full-screen cutaways, or video cards over the camera.
- Music ducked under the voice, SFX, broadcast loudness (-14 LUFS).
- Hook A/B previews: render the first 3 s of several hooks side by side, pick one.
Then qa_reel.py checks the result: a layer covering the eyes or mouth (macOS Vision on the clean source frame),
captions the speaker doesn't actually say, music masking a word, A/V drift per segment, loudness, black last frame,
estimated Instagram UI overlap. Broken renders fail loudly, so you never post one by accident.
Requirements
- macOS or Linux, Python 3.11+,
ffmpeg/ffprobe,pip install pillow - whisper.cpp (
whisper-clion PATH) + models:scripts/setup_models.sh(~2 GB) - Optional: Node 20+ for Hyperframes motion segments (
npx hyperframes),librsvg(rsvg-convert) on Linux for icons/logos - Optional keys (free):
PEXELS_API_KEYfor stock,BRANDFETCH_API_KEYfor logos Simple Icons lacks - The face check uses macOS Vision; on Linux it is skipped with a warning
Install as a Claude Code skill
git clone https://github.com/<you>/pich ~/.claude/skills/pich
~/.claude/skills/pich/scripts/setup_models.sh
Then, in Claude Code:
/pich ~/Movies/take3.mov
The agent builds the first pass automatically (cuts, verified captions placed away from the face, music, loudness),
checks the words the speech models disagreed on, writes a hook and adds cards/icons/B-roll for what you actually say,
renders, runs the QA and hands you the finished file. Add direction in plain words: /pich take3.mov --lang tr, punchy, no music.
No agent? One command does the automatic pass:
python3 scripts/pich.py take3.mov --lang en --hook "TIP|Raw take|finished Reel" --cta "Follow|for more|Follow"
Try it without your own footage
python3 examples/demo/make_demo.py # synthetic 12 s source + B-roll + plan.json
python3 scripts/render_reel.py examples/demo/plan.json demo.mp4 --preview
python3 scripts/qa_reel.py demo.mp4 --plan examples/demo/plan.json --no-asr
examples/motion-template/ is a ready Hyperframes segment ("When does it pay off?": setup hours → minutes saved
per day → break-even day → profit) to adapt for your own numbers.
How it works
| Step | Tool |
|---|---|
| Speech phrases, pauses, cut-edge check | scripts/speech_map.py |
| Transcript with suspicious-word report | scripts/transcribe.py |
| Render plan.json (single FFmpeg pass) | scripts/render_reel.py — schema: references/render-reel-plan.md |
| Automatic QA | scripts/qa_reel.py |
| Hook A/B | scripts/hook_variants.py |
| Icons / stock / logos | scripts/iconify.py, scripts/stock.py, scripts/fetch_logos.py |
Every overlay is anchored to source seconds inside a kept segment, so changing the cuts never slides a card away from the words it belongs to.
Rights and privacy
- No music and no brand logos are bundled. Music needs
"rights_checked": true(or the generated pad); logos need a source URL and a verification date. Trademarks belong to their owners — show a logo only when the brand is named. - Stock and icons record author and license in the render manifest.
- Keys are read from environment variables only; nothing is uploaded except the API calls you run.
Tests
python3 -m unittest discover -s tests -v
Synthetic fixtures (no footage needed), a golden filter graph for the demo plan, and QA that must FAIL on broken renders. Tests that need network, keys or models skip themselves.
License
MIT — see LICENSE. Third-party components: THIRD_PARTY_NOTICES.md.