agentleFS
reescalderreescalder/claude-skills/video-content/SKILL.md

video-content

Skill0 starsChanged 4 months agoMITView on GitHub

Generate social media video and image content using AI. Creates animated chat-bubble posts, AI-generated video clips, music, and static image cards for X/Twitter, Instagram, LinkedIn. Use when creating social media content, generating video posts, making animated chat screenshots, producing AI video clips, creating cover photos/banners, or compositing multiple media types into polished social content. Supports KIE API (Veo, Runway, Kling, FLUX, Suno music) and GetLate for posting.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Video models: Read references/video-models.md - Veo 3.1, Runway Gen-4, Kling, Wan, Bytedance

    line 69
  2. Very specific:

    Audio models: Read references/audio-models.md - Suno V3.5-V5

    line 70
  3. Very specific:

    Image models: Read references/image-models.md - Imagen 4, FLUX 2, Grok Imagine, GPT Image

    line 71
  4. Distinctive:

    Follow these rules for post copy:

    line 108
  5. Distinctive:

    Write like telling a mate something interesting

    line 110
  6. Distinctive:

    No numbered feature lists disguised as insights

    line 112
  7. Distinctive:

    If it sounds like a LinkedIn post, bin it

    line 114

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Video Content Pipeline

Generate social media content: static image cards, animated chat-bubble videos, AI video clips, and full composite videos with music.

Quick Reference

Content TypeMethodTimeCost
Static chat cardPuppeteer screenshot5sFree
Animated chat videoPuppeteer frames → ffmpeg30sFree
AI video clipKIE API (Veo 3.1 Fast)2-5min~$0.40
Full compositeAI intro + chat + AI outro5-8min~$0.80
Music trackKIE API (Suno)1-2min~$1-4

Content Formats

1. Static Chat Card (Image Post)

The signature format: fake Telegram-style chat between Rees and Atlas.

1. Write HTML using chat-card template (assets/chat-card-template.html)
2. Screenshot with Puppeteer (scripts/generate-video.mjs → screenshotCard())
3. Compress: `convert output.png -quality 90 -resize 1200x output.jpg`
4. Post via GetLate API

2. Animated Chat Video

Messages appear one by one with typing indicators.

1. Write HTML using vertical template (assets/chat-card-vertical.html) 
2. Add id="msg1", id="msg2" etc to messages, id="typing-1" etc to indicators
3. Generate frames with generateChatFrames()
4. ffmpeg stitches to MP4

3. Full Composite Video

AI intro → animated chat → AI outro, optionally with music.

1. Generate AI clips via KIE (generateKieVideo + pollKieTask)
2. Generate chat frames in parallel
3. Stitch with stitchVideo()
4. Optionally add music with ffmpeg audio mixing

Pipeline Script

Main script: scripts/generate-video.mjs

Exported functions:

  • screenshotCard(htmlPath, outputPath) - Static image
  • generateChatFrames(htmlPath, outputDir, fps) - Animated frames
  • generateKieVideo(apiKey, prompt, {model, aspectRatio}) - AI video
  • pollKieTask(apiKey, taskId, maxWaitMs) - Wait for AI video
  • stitchVideo({introPath, chatVideoPath, outroPath, outputPath}) - Combine clips
  • postToX(apiKey, accountId, content, mediaPath) - Post to Twitter

KIE API

Base: https://api.kie.ai/api/v1 | Auth: Bearer token

For model details, parameters, and endpoints:

  • Video models: Read references/video-models.md - Veo 3.1, Runway Gen-4, Kling, Wan, Bytedance
  • Audio models: Read references/audio-models.md - Suno V3.5-V5
  • Image models: Read references/image-models.md - Imagen 4, FLUX 2, Grok Imagine, GPT Image

Recommended Models

  • Video (social clips): veo3_fast - $0.40/8s, 720p, includes audio
  • Video (high quality): veo3 - higher fidelity, slower
  • Music: Suno V5 via /api/v1/generate
  • Images: Nano Banana Pro (default, best quality) — FLUX 2 is backup only

Aspect Ratios

  • X/Twitter feed: 16:9 or 1:1
  • Instagram Reels / TikTok / Stories: 9:16
  • Profile pic: 1:1 (400x400+)
  • X banner: 3:1 (1500x500)

Posting

GetLate API: https://getlate.dev/api/v1/posts

  • Auth: Bearer token
  • Account ID for X: 698c65144525118cee8bc851
  • Supports image and video media items
  • Upload media to tmpfiles.org first, use /dl/ URL

HTML Template Structure

Chat cards use this CSS class structure:

  • .chat - outer container (dark bg)
  • .header - Atlas avatar + name
  • .msg - individual message bubble
  • .msg-right / .msg-left - alignment
  • .msg-name.rees / .msg-name.atlas - colored names
  • .typing - typing indicator with .dot children
  • .visible - class added to show elements (for animation)

For animation, messages start with opacity: 0 and get .visible added sequentially.

Writing Style (X Posts)

Follow these rules for post copy:

  • Lead with insight, not features
  • Write like telling a mate something interesting
  • Self-aware, not self-congratulatory
  • No numbered feature lists disguised as insights
  • No "So I built" energy - more "here's what surprised me"
  • If it sounds like a LinkedIn post, bin it
  • Captions: simple, not cringy. Let the card do the work.

ffmpeg Cheat Sheet

# Resize to vertical
ffmpeg -i input.mp4 -vf "scale=720:1280:force_original_aspect_ratio=increase,crop=720:1280" output.mp4

# Fade in/out
-vf "fade=t=in:st=0:d=0.5"  # fade in first 0.5s
-vf "fade=t=out:st=3.5:d=0.5"  # fade out at 3.5s

# Concatenate clips
echo "file 'a.mp4'\nfile 'b.mp4'" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

# Add music under video
ffmpeg -i video.mp4 -i music.mp3 -filter_complex "[1:a]volume=0.3[bg];[bg]adelay=0|0[delayed]" -map 0:v -map "[delayed]" -shortest output.mp4

# Strip audio
ffmpeg -i input.mp4 -an output.mp4

# Add text overlay
ffmpeg -i input.mp4 -vf "drawtext=text='hello':fontsize=48:fontcolor=white:x=(w-tw)/2:y=h-60" output.mp4

Dependencies

Required on the system:

  • puppeteer (npm) - screenshots and frame capture
  • ffmpeg - video stitching, audio mixing, effects
  • imagemagick (convert) - image compression/resizing
  • curl - API calls and file uploads

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.