A Claude Code plugin that makes BAISH Instagram reels from talking-head clips in the house style. You review the video on a local page where you pause, draw and comment, and Claude works through your comments.
- Install Google Chrome if it isn't installed.
- In the Claude desktop app, open the Code tab and start a session on your Mac (local, not cloud).
- Click + → Plugins → Add plugin, add the marketplace
baisharg/baish-reels, and install baish-reels. Or type these two lines in a Code session:/plugin marketplace add baisharg/baish-reels /plugin install baish-reels@baish - Type: "Quiero hacer un reel nuevo" and drag in the folder with your clips. Claude checks your Mac, installs what's missing, and asks you about the video.
Your reels are saved in ~/baish-reels/<name>/. The finished file is in its export/ folder.
- Clips → transcript. Claude transcribes every take and asks you to check names and numbers.
- The cut. Claude proposes which takes to use and where to trim each one, in plain words, then builds a first version: captions, punch-ins and the end card.
- The plan. Claude proposes the graphics (name cards, quote cards, the number moment…) and asks you for the sources of any quote or figure.
- The review page opens in Chrome. Play the video, pause on anything you want changed, press C, draw on the frame, write the change, and save. Once you've collected your comments, press Enviar a Claude. The page updates by itself as Claude finishes each change. Green means done, orange means Claude has a question for you.
- Export. Claude renders the Instagram file and cover images, and tells you what to double-check: names, quotes, the comment keyword, and lip sync with sound on.
skills/baish-reel/
SKILL.md the workflow Claude follows (written for a non-technical, Spanish-speaking teammate)
reference/STYLE.md house style: palette, type, layout, motion, don'ts
kit/ copied into every new reel
video/ the renderer (canvas engine, studio.html, render.mjs), brand fonts, logo
src/baish.js brand components: captions, name/quote cards, bars, stat takeover, sticker, end panel…
src/footage.js footage layer (reads footage/manifest.js written by cut.py)
src/review.js the review page UI (es/en by browser language, ?lang=)
review/ server.mjs (page + comments API), cli.mjs (Claude's side), watch.sh (batch notifications)
scripts/ doctor.sh · new-reel.sh · transcribe.py · cut.py · review.sh · export.sh · analyze.py
templates/ reel.js and the starter scene cut.py writes on first run
examples/10pct/ the first reel ("10% en 10 años"): scene file, storyboard, reel.js, edl
- House-style changes (new component, palette tweak): edit
kit/andreference/STYLE.md, test on a reel, then bumpversionin.claude-plugin/plugin.json. Existing reels keep their own copy of the kit. To update one, copykit/video/src/*.jsover it. - Updates reaching teammates: private marketplaces don't auto-update by default. Teammates enable it in
/plugin→ Marketplaces → baish → Enable auto-update, or run/plugin marketplace update baish. - Needs on the teammate's Mac: Homebrew, Node ≥ 18, ffmpeg, uv, and Google Chrome.
scripts/doctor.shchecks them all. The first transcription downloads Whisper large-v3 (~3 GB), and each reel folder is about 1 GB (clips, frames, Python env). - The review loop, technically:
studio.htmlserved over http renders the reel live, so no encode is needed to review. Every component callsmark()into an on-screen registry, and a comment records which registered elements the drawing touches (for an arrow, the element at its tip), plus the scene and the words being spoken. Comments live inreview/comments.json, and screenshots inreview/shots/. "Send" writesreview/inbox/bN.json. Claude watches that folder, applies the fixes, checks them withcli.mjs compare, and answers withdoneorask. The page polls a hash ofvideo/srcand reloads when it changes.