newsletter-promo — Claude Code skill: promo clip from a newsletter
Turns one newsletter edition into a 12–20 second promo clip for LinkedIn, Instagram or X: a hook, three proof frames and an end card.
npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a claude-codeWhat newsletter-promo does
The skill reads your edition first, then asks for four things: the link or full text, the hook, three real images or clips from the edition, and the end card text. The hook is the single question or promise the edition answers. If you don't have one, it proposes three drawn from the edition's own lines and waits for you to pick.
The timeline is fixed. Three seconds for the hook, eight for the three proof frames at roughly 2.5 seconds each with a 3–5 word label, four for the newsletter name and a free-read call to action. Then the skill hands you a build brief to paste into Claude, which produces one self-contained index.html at the size you set. The brief bans typewriter text, glow, bouncing, gradients on type and any claim or number that isn't in it.
Before anything else it looks for brand.md and MOTION.md. Without them you either run brand-intake first or supply hex codes, a font and a logo file — the skill won't call a result on-brand otherwise. Proof frames have to be attached files, not links. Export sizes are 1080 x 1350 for LinkedIn and 1080 x 1920 for Stories and Reels.
What it helps with
- turn a fresh edition into a promo clip
- draft a hook question from the edition's own lines
- fit three proof frames into a 15-second timeline
- get a vertical cut for Stories and Reels
- write an end card with the newsletter name and link
Example prompts for the agent
- make a promo for my newsletter from this edition
- build a 15-second teaser, here are three frames and the end card
- I need a trailer for this issue for LinkedIn, propose the hook yourself
How to install newsletter-promo
1Skills CLI (Vercel)
npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a claude-code2Manually: put the files in place
~/.claude/skills/newsletter-promo/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/newsletter-promo/
1Skills CLI (Vercel)
npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a codex2Manually: put the files in place
.agents/skills/newsletter-promo/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a cursor2Manually: put the files in place
.cursor/skills/newsletter-promo/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install charlie947/motion-graphics-skills newsletter-promo2Manually: put the files in place
.github/skills/newsletter-promo/SKILL.md1Skills CLI (Vercel)
npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a gemini-cli2Platform CLI
gemini skills install https://github.com/charlie947/motion-graphics-skills --path skills/newsletter-promoManually: put the files in place
.devin/skills/newsletter-promo/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about newsletter-promo
How do I install newsletter-promo in Claude?
Run npx skills add charlie947/motion-graphics-skills --skill newsletter-promo -a claude-code. The skill lands at ~/.claude/skills/newsletter-promo/SKILL.md.
What does newsletter-promo do?
It turns a newsletter edition into a 12–20 second promo clip: a hook, three proof frames with short labels, and an end card with the newsletter name and where to read it.
What do I need before running it?
The edition link or full text, a hook, three real images or clips from the edition, and the end card wording. It also expects brand.md and MOTION.md, or hex codes, a font and a logo file — otherwise it points you to brand-intake first.
Source text
SKILL.md · MIT
--- name: newsletter-promo description: Turn a newsletter edition into a 12-20 second promo clip for LinkedIn, Instagram or X that drives people to read and subscribe. Hook question, three proof frames from the edition, then the newsletter name and where to read it. Use when someone says "promo for my newsletter", "trailer for this edition", "get people to my Substack", "teaser video" or "promote this issue". --- # Newsletter promo, built in code A promo does one job: make someone want the full edition. Show the best bits, never the whole thing. **Before you start:** read `brand.md` and `MOTION.md` if they exist. If not, run `brand-intake` first, or ask for hex codes, a font and a logo file. Never call a result on-brand without them. ## Step 1: Ask for four things, then wait 1. **The edition link** or the full text. Read it before anything else. 2. **The hook.** The one question or promise the edition answers. If none is given, propose three from the edition's own lines and wait for a pick. 3. **Three proof frames.** Real images, charts or clips from the edition. Attached files only. 4. **The ending card,** word for word: newsletter name, where to read it, and an optional subscriber count with its source. ## Step 2: Structure (15 seconds) | Time | Frame | |---|---| | 0-3s | The hook, big. A question works better than a statement. | | 3-11s | Three proof frames, about 2.5s each, each with a 3-5 word label. | | 11-15s | Newsletter name, "Read it free at [URL]", held still. | ## Step 3: Build brief (paste into Claude Code) ``` Build one self-contained HTML file called index.html: a 15-second promo at [WIDTH] x [HEIGHT] for my newsletter edition, using only the files I attached. Hook (0-3s): "[HOOK]" in bold condensed type, [TEXT] on [BG], key words in [ACCENT]. Proof (3-11s): my three attached images in this order, each held about 2.5 seconds with a slow push-in and this label: [LABEL 1], [LABEL 2], [LABEL 3]. End card (11-15s): "[NEWSLETTER NAME]" and "Read it free at [URL]". Hold still, readable on a phone. Banned: typewriter text, glow, bouncing, gradients on text, any claim or number not in my brief. Build rules: every frame from the time alone, window.seek(seconds), wait for seek when the URL has ?render. Capture one frame per shot and check every label is readable at phone size. ``` ## Step 4: Export and post Export 1080 x 1350 for LinkedIn and 1080 x 1920 for Stories and Reels. Put the edition link in the first line of the caption, not only the comments.
© charlie947 · MIT · charlie947/motion-graphics-skills