Skip to main content

flash-video

Generate 7-second static Reels/TikToks — PIL text burned onto a Kie.ai background image, converted to MP4 via ffmpeg with a 1s fade out. Two layout types: statement (raw text wall) and list (header banner + numbered items + stat). Triggers on: flash video, 7 second video, text reel, static reel, create a reel, tip video, quick video, flash reel.

Source facts

Repository
tylerprogramming/claude-skills
Last source activity
August 9, 2026 at 15:56
Detected SKILL.md language
English
Stars
0
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
5 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
flash-video
description
Generate 7-second static Reels/TikToks — PIL text burned onto a Kie.ai background image, converted to MP4 via ffmpeg with a 1s fade out. Two layout types: statement (raw text wall) and list (header banner + numbered items + stat). Triggers on: flash video, 7 second video, text reel, static reel, create a reel, tip video, quick video, flash reel.
# Flash Video Generates 7-second MP4s for TikTok and Instagram Reels. PIL text on a Kie.ai background image → ffmpeg → MP4 with 1s fade to black. ## Design system - Canvas: 1080x1920 (9:16 vertical) - Backgrounds: `~/.claude/skills/flash-video/backgrounds/cream.png` or `dark.png` - Accent: terra cotta `#C4713A` on key words and skill names - CTA always shows: "Join my Skool community:" → `skool.com/the-ai-agency` → "Link in bio" - Handle: `@tylerai_dev` bottom-right - Duration: 7 seconds, 1s fade to black at end ## Layout types | Type | Use when | |------|----------| | `statement` | Raw centered text wall — bold claims, lists of outputs, authentic TikTok feel | | `list` | Terra cotta header banner + numbered items + stat line — structured, scannable | ## Background styles | Style | Vibe | |-------|------| | `dark` | Dark charcoal with ambient blue-grey glow — high contrast, scroll-stopping | | `cream` | Warm off-white — matches Instagram carousel brand, clean editorial | Reuse backgrounds across the week. Regenerate via: ```bash python3 ~/.claude/skills/flash-video/gen_backgrounds.py cream dark ``` --- ## Step 1: Gather inputs Ask the user for: - **Topic / content** — what the video says - **Layout** — `statement` or `list` - **Background** — `dark` (default) or `cream` If not provided, default to `dark` + `statement`. --- ## Step 2: Generate content JSON ### Statement layout ```json { "type": "statement", "background": "dark", "slug": "my-video", "lines": [ "I automated my ENTIRE", "content system", "with Claude Code.", "", "YouTube research.", "Instagram carousels.", "LinkedIn posts.", "", "All in under 5 minutes.", "Every single week." ], "accent_words": ["ENTIRE", "Claude", "Code", "5"], "cta": "skool.com/the-ai-agency", "handle": "@tylerai_dev" } ``` **Statement rules:** - 8-12 lines total including blank spacer lines (`""`) - Group related lines together with blank lines between sections - 1-2 accent words per section - Last section = punchy payoff line ### List layout ```json { "type": "list", "background": "dark", "slug": "my-video", "header": "5 Claude Code skills", "subheader": "I use every single week:", "items": [ "/yt-search — YouTube research", "/instagram-writer — 6 slides", "/yt-shorts — 5 short scripts", "/social-copy — LinkedIn, X, IG posts", "/yt-package — full video + script" ], "stat": "Saves me 3+ hours. Every single week.", "accent_words": ["yt-search", "instagram-writer", "shorts", "content", "yt", "3+"], "cta": "skool.com/the-ai-agency", "handle": "@tylerai_dev" } ``` **List rules:** - Header: short, bold (3-5 words) - Subheader: one supporting line - Items: 4-6, keep each under ~30 chars so they don't wrap - Stat: one punchy payoff line after the list, with 1-2 accent words - accent_words: include the skill/command names (without `/`) so they highlight in terra cotta --- ## Step 3: Save JSON and render 1. Create a 2-3 word slug. 2. Save JSON to `~/content/platform/flash-video/<slug>-<layout>-<bg>.json` 3. Run renderer: ```bash python3 ~/.claude/skills/flash-video/flash_video.py \ ~/content/platform/flash-video/<slug>-<layout>-<bg>.json \ ~/content/platform/flash-video/ ``` Output: - `<slug>-<layout>-<bg>-frame.png` — the static frame - `<slug>-<layout>-<bg>.mp4` — 7-second MP4, ready to post --- ## Step 4: Present results Show the frame PNG so the user can review it, then confirm the MP4 path. Ask if they want: - The other background style (cream vs dark) - Both layout types - Any text tweaks --- ## Blotato scheduling reminder When scheduling flash videos via Blotato for TikTok or Instagram Reels, always remind the user: > **Add music in Blotato before confirming the schedule.** Flash videos have no audio - TikTok and Instagram heavily favor videos with music. Set `autoAddMusic: true` in the Blotato post params, or remind the user to manually select a trending audio track in the Blotato draft before it goes live. --- ## Step 5: Update status.md After rendering (and again after scheduling), update `~/content/platform/flash-video/status.md`: | Slug | Layout | BG | Created | IG Scheduled | TikTok Scheduled | IG Posted | TikTok Posted | |------|--------|----|---------|-------------|-----------------|-----------|---------------| | my-video | statement | dark | 2026-04-09 | Apr 10 12pm | Apr 10 12pm | - | - | Fill in scheduled times when posting via Blotato. Mark Posted when confirmed live. --- ## X/Twitter Cover Slide Scheduling After generating flash videos for the week, schedule the cover slide (slide_1.png from `~/content/platform/carousels/<carouselId>/`) on X as a standalone image post with a Skool reply thread. ### Timing - 9 PM EDT = 01:00 UTC the next calendar day - e.g. Apr 23 9PM EDT → `scheduledTime: "2026-04-24T01:00:00.000Z"` ### Upload pattern — presigned URL fields The Blotato presigned URL response returns `presignedUrl` (for PUT upload) and `publicUrl` (for post mediaUrls). Do NOT use `url`, `signedUrl`, or `uploadUrl` — those fields don't exist and return None. ```python r = mcp_call(session_id, "tools/call", { "name": "blotato_create_presigned_upload_url", "arguments": {"filename": "flash_cover_<carouselId>.png"} }) data = json.loads(r["result"]["content"][0]["text"]) presigned_url = data["presignedUrl"] # PUT upload target public_url = data["publicUrl"] # use in mediaUrls ``` **Critical**: Never copy presigned URLs through bash heredocs or JSON strings — the base64url token gets corrupted. Always fetch and upload in the same Python session. ### Post structure ```python { "accountId": "<your-x-account-id>", "platform": "twitter", "text": "<X-native caption — no hashtags, under 230 chars, punchy>", "mediaUrls": [public_url], "scheduledTime": "2026-04-24T01:00:00.000Z", "additionalPosts": [ {"text": "join us at skool.com/the-ai-agency — free templates and full community 👇", "mediaUrls": []} ] } ``` ### TikTok scheduling Always set `autoAddMusic: true` when scheduling flash videos on TikTok — no audio by default. Reference script: `/tmp/schedule_x_flash.py` --- ## Weekly usage pattern Generate 1-2 backgrounds per week (reuse them). Create 7 flash videos — one per day — varying between statement and list layouts, all pointing to Skool. Content angles for Claude Code / social media: - What each skill does in one sentence - Time saved stats ($928/mo saved, 20+ hrs → 2 hrs) - Before/after (manual vs automated) - "Did you know Claude Code can..." - Weekly output numbers (32 pieces, one content day) - Direct sell ("What $37/mo in my Skool gets you")
View on GitHub