Skip to content

feat(newsletter-reels): add a skill for issue and post motion reels - #176

Merged
axsaucedo merged 12 commits into
masterfrom
feat/newsletter-reels-skill
Oct 18, 2026
Merged

axsaucedo merged 12 commits into
masterfrom
feat/newsletter-reels-skill

Conversation

@axsaucedo

Copy link
Copy Markdown
Collaborator

This adds a newsletter-reels skill that turns a newsletter issue into motion-graphics reels: one 1920x1080 reel for the issue itself and one 1080x1350 reel per article post, 20-30 s each with music, built as five competing directions per topic by parallel headless Opus workers and reviewed in a local gallery before anything is rendered.

It is the distilled version of the issue 409 run. The first pass there was rough in ways that are now baked into the briefs: frame 0 has to work as the feed thumbnail with the brand and the topic on it, logos are SVG vectors that transform through their own pieces rather than dissolving into particles (the Mistral pixel-M reel is the reference), every revision resumes the worker that built the reel, and the mp4s are exported once at the end instead of every round.

The motion engine is a vendored copy of the portrait-adapted z-motion-reel from the marketplace, with its marketplace update and issue-report steps removed so it never calls out. Around it are the scripts: prepare.py builds the per-topic inputs from the issue and its grounding notes, logos.py collects brand SVGs and rejects anything with scripts or external references, launch.sh and resume.sh run the workers staggered and capped at 10, gallery.py serves the review page with per-topic picks and score/m1/m2 audio choices, swap_music.py lays a stock track under a reel cut to the film's exact length, and export.py renders the picks into the issue's post folders. The stock-music library lives in a gitignored .music/ in the main checkout, so nothing licensed or third-party is committed.

Codex verified the scripts against the real 409 data: prepare reproduced the topic folders (0-issue byte-for-byte), the gallery served the six picks with the right formats and no page errors, one stock-music variant came out at exactly the film's duration, and one real export produced a valid h264+aac mp4. The launch and resume scripts were only exercised with CLAUDE_BIN=echo, not with real workers; the real worker runs happened from the prototype scripts in tmp/reels/409. Lint, check:ratchet and build pass.

Two things I'm not sure about. The engine still keeps its shared Python venv under ~/.config/slt-agentic-marketplace/motion-reel/venv, which works on this machine but is an odd home for a repo skill; moving it is a small follow-up. And the skill leans on one owner's taste notes from a single run, so references/learnings.md is meant to grow each issue rather than be read as settled.

…eferences

SKILL.md walks the run end to end: prepare inputs and SVG logos, five directions per topic, a staggered launch explained to the owner first, the gallery gate, revision rounds resumed on the same worker, stock or composed music, and one export at the end. The briefs carry the rules issue 409 converged on (frame 0 is a brand-and-topic thumbnail, logos transform through their own anatomy, HTML builds only), and the references keep the 409 directions with the picks marked plus the learnings.
The owner uploads the reels by hand, and tmp/ inside the repo is too hard to reach from a file picker. export.py now also copies every pick, named by its topic folder, to ~/Desktop/newsletter-<N>-reels/ (overridable with --desktop), and the skill opens that folder at hand-over.
…ake reels step 10 of the issue

briefs.py turns tmp/reels/<N>/directions.md into one brief per direction from briefs/worker.md, appending the issue-reel brief and the 1920x1080 format for topic 0, keeping existing briefs unless --force. A Sonnet test run rendered all 30 for issue 409 with no placeholders left and the right format per topic. The worker brief's time-budget line no longer tells workers to export, and it reads every facts*.md.

newsletter-issue now proposes reels in its step-1 plan and runs them as numbered step 10, after the owner signs off the text; events and post-publication shift to 11 and 12. The reels SKILL.md notes that launch.sh and resume.sh are unproven on real workers and says what tracks the music library needs.
@axsaucedo
axsaucedo merged commit 97191f4 into master Oct 18, 2026
6 checks passed
@axsaucedo
axsaucedo deleted the feat/newsletter-reels-skill branch October 18, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant