Systems Lab

Agent skill

short-form-pipeline

activeNeeds a keyActs undeclared531 words

From ericosiu/ai-marketing-skills · 21 skills · 3,449 · pushed 2026-08-16

What it does when it runs

Read from the skill and the 5 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • ANTHROPIC_API_KEY
  • ANTHROPIC_KEY
Hosts it reaches
  • levelingup.beehiiv.com
  • singlebrain.com
  • www.singlegrain.com
  • www.youtube.com
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shellwrites files

Ask about short-form-pipeline

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/ericosiu/ai-marketing-skills.git /tmp/ai-marketing-skills
git -C /tmp/ai-marketing-skills sparse-checkout set "short-form-pipeline"
mkdir -p ~/.claude/skills/short-form-pipeline
cp -R "/tmp/ai-marketing-skills/short-form-pipeline/." ~/.claude/skills/short-form-pipeline/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs ANTHROPIC_API_KEY, ANTHROPIC_KEY, which you have to obtain separately.

Reproduced in full from ericosiu/ai-marketing-skills/blob/2eb0f34edb8d6111ca8b2930fed92413c9af7002/short-form-pipeline/SKILL.md, which is licensed MIT (repository). 531 words, 17 headings.

Short-Form Video Clip Pipeline — Skill

Preamble (runs on skill start)

# Version check (silent if up to date)
python3 telemetry/version_check.py 2>/dev/null || true

# Telemetry opt-in (first run only, then remembers your choice)
python3 telemetry/telemetry_init.py 2>/dev/null || true

Privacy: This skill logs usage locally to ~/.ai-marketing-skills/analytics/. Remote telemetry is opt-in only. No code, file paths, or repo content is ever collected. See telemetry/README.md.


Extract viral short-form clips (TikTok, Reels, Shorts) from long-form YouTube videos. Handles download, transcription, AI segmentation, cutting, vertical cropping, and caption burn-in.

Prerequisites

  • yt-dlp and ffmpeg installed
  • ANTHROPIC_API_KEY environment variable set
  • Python dependencies from requirements.txt installed
  • Optional: mediapipe and opencv-python for face-detected smart crop

Quick Start

Single video → clips

python3 scripts/shortform_pipeline.py \
  --url "https://www.youtube.com/watch?v=VIDEO_ID" \
  --max-clips 3 \
  --output-dir ./output

Standalone clipper (no Claude, heuristic scoring)

python3 scripts/video_clipper.py --url "https://www.youtube.com/watch?v=VIDEO_ID"

Pipeline Overview

  1. Download — yt-dlp fetches video + auto-generated VTT captions
  2. Transcribe — Whisper generates word-level timestamps (falls back to YouTube captions)
  3. Segment — Claude identifies 2–5 best 30–60s moments with hook scoring ≥7/10
  4. Cut Verification — Second Claude pass verifies each clip ends on a complete thought
  5. Cut — FFmpeg extracts each clip from the source video
  6. Vertical Crop — Layout-aware 16:9 → 9:16 conversion with face detection
  7. Caption Burn — TikTok-style word-highlighted captions (ASS format) burned in

Key Files

FilePurpose
scripts/shortform_pipeline.pyFull pipeline: download → segment → cut → crop → caption
scripts/video_clipper.pyStandalone clipper with heuristic scoring (no Claude needed)
scripts/clip_sender.pyHelper for clip delivery and review workflow

Layout-Aware Cropping

The pipeline handles four video layouts differently:

  • talking_head — Face-detected center crop using MediaPipe; audio panning fallback
  • screen_share_overlay — Stacks screen content on top, webcam bubble on bottom
  • side_by_side — Stacks screen on top, presenter face on bottom
  • gallery_view — Crops to active speaker quadrant

Claude outputs a layout_hint for each segment during segmentation.

Customization

Voice patterns

Edit VOICE_PATTERNS in video_clipper.py to match your creator's speech patterns. These boost clip scoring for authentic-sounding segments.

Segmentation prompt

The Claude prompt in shortform_pipeline.py can be customized:

  • Adjust hook_strength minimum (default: 7/10)
  • Change target duration range (default: 30–60s)
  • Modify layout hint options

Crop tuning

In video_clipper.py:

  • scale_factor — Zoom level for single face (default: 1.08)
  • desired_face_y — Target face position in frame (default: upper 35%)

Output

Each clip is output as:

  • 1080×1920 resolution (9:16 vertical)
  • H.264 + AAC encoding
  • Word-highlighted captions burned in
  • Ready for direct upload to TikTok, Reels, or Shorts

Troubleshooting

  • FFmpeg filter_complex error: Don't use -c:v copy with -filter_complex. Only -c:a copy is safe.
  • Wrong output resolution: Always crop before scaling. Verify with ffprobe -show_entries stream=width,height.
  • Caption sync issues: Run Whisper on the cut clip, not the source episode.
  • TikTok upload fails: Ensure H.264 + AAC encoding. Add -c:v libx264 -c:a aac if needed.
  • Clip too long: Claude sometimes overshoots. The pipeline auto-trims clips >90s to 75s.

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what short-form-pipeline does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.