New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Router and orchestrator for AI UGC video production

ScrollClaw

by TheMattBerman · MIT license · ★ 71 on GitHub · updated Mar 27

ScrollClaw cover

Router and orchestrator for AI UGC video production. Use for broad outcome requests like making a UGC video or running a campaign; it routes step-specific requests to the right sub-skill and can drive the full pipeline from persona…

---
name: scrollclaw
description: "Router and orchestrator for AI UGC video production. Use for broad outcome requests like making a UGC video or running a campaign; it routes step-specific requests to the right sub-skill and can drive the full pipeline from persona research through virality-scored video."
metadata:
  openclaw:
    emoji: "🎬"
    user-invocable: true
    triggers:
      - "scrollclaw"
      - "ugc video"
      - "ai ugc"
      - "make ugc"
      - "ugc campaign"
      - "ugc pipeline"
      - "talking head video"
      - "product review video"
      - "start ugc"
---

Overview

AI-generated UGC videos that look like a real person pulled out their phone and started talking. Brands pay $500–$5,000 per UGC video from human creators. This pipeline produces them for $5–$50 in API costs.

What you get

  • Produceseither a route decision to the correct stage or a sequential full-pipeline run starting at /persona
  • Formatinline orchestration plus saved workspace artifacts produced by sub-skills
  • Default behaviorbroad requests like "make me a UGC video" or "start a campaign" start at /persona and continue stage by stage until blocked by missing inputs, an approval gate, or a dependency failure
  • Downstream use/persona, /first-frame, /animate, /b-roll, /assemble, and /score
Manual install (npx, ZIP)
Claude Codenpx skills add TheMattBerman/scrollclaw -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills/skill-5 && curl -sL https://raw.githubusercontent.com/TheMattBerman/scrollclaw/ea175d4b62fda3c14f45684bfad519070bd4e7af/SKILL.md \ -o ~/.claude/skills/skill-5/SKILL.md
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\agents" | Out-Null; Invoke-WebRequest "https://raw.githubusercontent.com/TheMattBerman/scrollclaw/ea175d4b62fda3c14f45684bfad519070bd4e7af/SKILL.md" -OutFile "$HOME\.claude\agents\SKILL.md"
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md6.3 KB
Read the files here
TheMattBerman/ea175d41 file
Shared references4SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text152 lines

ScrollClaw

AI-generated UGC videos that look like a real person pulled out their phone and started talking. Brands pay $500–$5,000 per UGC video from human creators. This pipeline produces them for $5–$50 in API costs.

The Pipeline

Brand name + URL
      ↓
/brand-setup → One-time brand research + file generation (Step 0)
      ↓
Brand + Audience
      ↓
/persona    → Persona research, creator profiles, approved script
/first-frame → Canonical face image (Nano Banana 2)
/animate    → A-roll talking head clips (Sora 2 i2v)
/b-roll     → Environment + product shots (Kling 3)
/assemble   → Stitch + unified voice + post-production + captions
/score      → Virality gate (70+ to publish)
      ↓
Scroll-stopping UGC video

Core doctrine: Read _system/SKILL.md for format selection, anti-patterns, taste calibration, and pipeline routing rules.

Brand & campaign context: Read _system/references/brand-campaign-context.md for workspace structure, context matrix, and persistence protocol.


Routing

When the user invokes ScrollClaw or asks about UGC video, route to the right sub-skill based on where they are in the pipeline:

User says / wants Route to
"Set up a brand" / "Initialize brand" / "New brand" / "Brand research" /brand-setup — one-time, before first campaign
"Make me a UGC video" / "Start a campaign" / "I need ugc" /persona — start at the beginning
"Research this brand" / "Create a creator profile" / "Write a script" /persona
"Generate the first frame" / "Make a face image" / "Nano Banana" /first-frame
"Animate this" / "Make a talking head clip" / "Sora" / "A-roll" /animate
"Generate B-roll" / "Product shot" / "Kling" /b-roll
"Stitch the clips" / "Add captions" / "Post-production" / "Assemble" /assemble
"Score this video" / "Is this ready to publish?" /score
"Run the full pipeline" Start at /persona, proceed sequentially

Broad outcome requests stay at the root. Start the pipeline instead of asking the user to pick a sub-skill.

Stage-specific requests bypass the root and go straight to that sub-skill.

If the user isn't sure where they are, ask: "Where are you in the pipeline?" and show them the 6 steps above.

Contract

Input
  • Required: brand/product context plus a campaign goal, or an existing campaign workspace if resuming
  • Optional: format preference, creator profile, screen recordings/screenshots, existing clips, campaign slug
  • Format: raw text, URL, file paths, or workspace/campaigns/<slug>/ files
  • Source: user prompt, campaign brief, and upstream workspace/brand/ files
Output
  • Produces: either a route decision to the correct stage or a sequential full-pipeline run starting at /persona
  • Format: inline orchestration plus saved workspace artifacts produced by sub-skills
  • Default behavior: broad requests like "make me a UGC video" or "start a campaign" start at /persona and continue stage by stage until blocked by missing inputs, an approval gate, or a dependency failure
  • Downstream use: /persona, /first-frame, /animate, /b-roll, /assemble, and /score
Validation
  • Pre-conditions: workspace exists or can be initialized before generation steps begin
  • Post-conditions: the user knows the current stage, the next stage, and which workspace artifacts were produced
  • Failure checks: do not leave the user at a vague route; if blocked, name the exact missing file, asset, or approval needed

Quick Start

First campaign:

  1. Set up brand context (one-time per brand):
    • Recommended: Run /brand-setup with your brand name + URL — it researches and generates all three brand files automatically
    • Alternative: Copy templates from assets/ and fill in manually (see assets/ for templates)
  2. Initialize workspace:
    CAMPAIGN="my-campaign"
    mkdir -p workspace/campaigns/$CAMPAIGN/{creators,scripts,frames,clips,scores}
    cp assets/campaign-brief-template.md workspace/campaigns/$CAMPAIGN/brief.md
    touch workspace/campaigns/$CAMPAIGN/output-log.md
    touch workspace/campaigns/$CAMPAIGN/learnings.md
    
  3. Fill in workspace/campaigns/$CAMPAIGN/brief.md
  4. Run /persona → /first-frame → /animate → /b-roll → /assemble → /score

Check setup first:

bash scripts/check-deps.sh

What ScrollClaw Needs

Key Required Used by
FAL_KEY Yes Sora 2 (A-roll) + Kling 3 (B-roll)
REPLICATE_API_TOKEN Yes Nano Banana (first frames)
OPENROUTER_API_KEY Recommended Gemini (virality scoring)
ELEVENLABS_API_KEY Optional Multi-clip voice consistency (S2S)

Six Formats

Format Duration Best for
Talking Head 15-25s Product review, honest take
Hook Face + Demo 15s max App/tool demos
Podcast Clip 8-20s Authority, credibility
Wall of Text 4-8s Hot take, faceless
Visual Transformation 10-25s Before/after concept
Hybrid Transformation 20-30s Complex mechanism explanation

Key Findings (from testing)

  • Sora's native voice > ElevenLabs TTS for talking head. TTS sounds fake.
  • B-roll must be environment-matched. Extract a frame from A-roll → feed to Kling.
  • Captions go LAST — after post-production. Grain degrades caption pills.
  • AI cannot generate realistic app screens. Use real screenshots.
  • ~1 in 3 Sora generations have hand artifacts. Reroll, don't fix the prompt.
  • Multi-frame formats: chain from frame 1. Parallel generation causes face drift.

For full doctrine, format blueprints, anti-patterns, and taste calibration: _system/SKILL.md

1---
2name: scrollclaw
3description: "Router and orchestrator for AI UGC video production. Use for broad outcome requests like making a UGC video or running a campaign; it routes step-specific requests to the right sub-skill and can drive the full pipeline from persona research through virality-scored video."
4metadata:
5 openclaw:
6 emoji: "🎬"
7 user-invocable: true
8 triggers:
9 - "scrollclaw"
10 - "ugc video"
11 - "ai ugc"
12 - "make ugc"
13 - "ugc campaign"
14 - "ugc pipeline"
15 - "talking head video"
16 - "product review video"
17 - "start ugc"
18---
19 
20# ScrollClaw
21 
22AI-generated UGC videos that look like a real person pulled out their phone and started talking. Brands pay $500–$5,000 per UGC video from human creators. This pipeline produces them for $5–$50 in API costs.
23 
24## The Pipeline
25 
26```
27Brand name + URL
28 ↓
29/brand-setup → One-time brand research + file generation (Step 0)
30 ↓
31Brand + Audience
32 ↓
33/persona → Persona research, creator profiles, approved script
34/first-frame → Canonical face image (Nano Banana 2)
35/animate → A-roll talking head clips (Sora 2 i2v)
36/b-roll → Environment + product shots (Kling 3)
37/assemble → Stitch + unified voice + post-production + captions
38/score → Virality gate (70+ to publish)
39 ↓
40Scroll-stopping UGC video
41```
42 
43**Core doctrine:** Read `_system/SKILL.md` for format selection, anti-patterns, taste calibration, and pipeline routing rules.
44 
45**Brand & campaign context:** Read `_system/references/brand-campaign-context.md` for workspace structure, context matrix, and persistence protocol.
46 
47---
48 
49## Routing
50 
51When the user invokes ScrollClaw or asks about UGC video, route to the right sub-skill based on where they are in the pipeline:
52 
53| User says / wants | Route to |
54|-------------------|----------|
55| "Set up a brand" / "Initialize brand" / "New brand" / "Brand research" | `/brand-setup` — one-time, before first campaign |
56| "Make me a UGC video" / "Start a campaign" / "I need ugc" | `/persona` — start at the beginning |
57| "Research this brand" / "Create a creator profile" / "Write a script" | `/persona` |
58| "Generate the first frame" / "Make a face image" / "Nano Banana" | `/first-frame` |
59| "Animate this" / "Make a talking head clip" / "Sora" / "A-roll" | `/animate` |
60| "Generate B-roll" / "Product shot" / "Kling" | `/b-roll` |
61| "Stitch the clips" / "Add captions" / "Post-production" / "Assemble" | `/assemble` |
62| "Score this video" / "Is this ready to publish?" | `/score` |
63| "Run the full pipeline" | Start at `/persona`, proceed sequentially |
64 
65Broad outcome requests stay at the root. Start the pipeline instead of asking the user to pick a sub-skill.
66 
67Stage-specific requests bypass the root and go straight to that sub-skill.
68 
69If the user isn't sure where they are, ask: **"Where are you in the pipeline?"** and show them the 6 steps above.
70 
71## Contract
72 
73### Input
74- Required: brand/product context plus a campaign goal, or an existing campaign workspace if resuming
75- Optional: format preference, creator profile, screen recordings/screenshots, existing clips, campaign slug
76- Format: raw text, URL, file paths, or `workspace/campaigns/<slug>/` files
77- Source: user prompt, campaign brief, and upstream `workspace/brand/` files
78 
79### Output
80- Produces: either a route decision to the correct stage or a sequential full-pipeline run starting at `/persona`
81- Format: inline orchestration plus saved workspace artifacts produced by sub-skills
82- Default behavior: broad requests like "make me a UGC video" or "start a campaign" start at `/persona` and continue stage by stage until blocked by missing inputs, an approval gate, or a dependency failure
83- Downstream use: `/persona`, `/first-frame`, `/animate`, `/b-roll`, `/assemble`, and `/score`
84 
85### Validation
86- Pre-conditions: workspace exists or can be initialized before generation steps begin
87- Post-conditions: the user knows the current stage, the next stage, and which workspace artifacts were produced
88- Failure checks: do not leave the user at a vague route; if blocked, name the exact missing file, asset, or approval needed
89 
90---
91 
92## Quick Start
93 
94**First campaign:**
951. Set up brand context (one-time per brand):
96 - **Recommended:** Run `/brand-setup` with your brand name + URL — it researches and generates all three brand files automatically
97 - **Alternative:** Copy templates from `assets/` and fill in manually (see `assets/` for templates)
982. Initialize workspace:
99 ```bash
100 CAMPAIGN="my-campaign"
101 mkdir -p workspace/campaigns/$CAMPAIGN/{creators,scripts,frames,clips,scores}
102 cp assets/campaign-brief-template.md workspace/campaigns/$CAMPAIGN/brief.md
103 touch workspace/campaigns/$CAMPAIGN/output-log.md
104 touch workspace/campaigns/$CAMPAIGN/learnings.md
105 ```
1063. Fill in `workspace/campaigns/$CAMPAIGN/brief.md`
1074. Run `/persona` → `/first-frame` → `/animate` → `/b-roll` → `/assemble` → `/score`
108 
109**Check setup first:**
110```bash
111bash scripts/check-deps.sh
112```
113 
114---
115 
116## What ScrollClaw Needs
117 
118| Key | Required | Used by |
119|-----|----------|---------|
120| `FAL_KEY` | Yes | Sora 2 (A-roll) + Kling 3 (B-roll) |
121| `REPLICATE_API_TOKEN` | Yes | Nano Banana (first frames) |
122| `OPENROUTER_API_KEY` | Recommended | Gemini (virality scoring) |
123| `ELEVENLABS_API_KEY` | Optional | Multi-clip voice consistency (S2S) |
124 
125---
126 
127## Six Formats
128 
129| Format | Duration | Best for |
130|--------|----------|---------|
131| Talking Head | 15-25s | Product review, honest take |
132| Hook Face + Demo | 15s max | App/tool demos |
133| Podcast Clip | 8-20s | Authority, credibility |
134| Wall of Text | 4-8s | Hot take, faceless |
135| Visual Transformation | 10-25s | Before/after concept |
136| Hybrid Transformation | 20-30s | Complex mechanism explanation |
137 
138---
139 
140## Key Findings (from testing)
141 
142- Sora's native voice > ElevenLabs TTS for talking head. TTS sounds fake.
143- B-roll must be environment-matched. Extract a frame from A-roll → feed to Kling.
144- Captions go LAST — after post-production. Grain degrades caption pills.
145- AI cannot generate realistic app screens. Use real screenshots.
146- ~1 in 3 Sora generations have hand artifacts. Reroll, don't fix the prompt.
147- Multi-frame formats: chain from frame 1. Parallel generation causes face drift.
148 
149---
150 
151For full doctrine, format blueprints, anti-patterns, and taste calibration: [`_system/SKILL.md`](_system/SKILL.md)
152 
View all files on GitHub →

Details

Updated
Mar 27, 2026
License
MIT
Stars on the repo
★ 71
Checked
Source
TheMattBerman/scrollclaw ↗
Creator
TheMattBerman · 6 listings
View creator

Similar skills

See all →
SkillMake a polished video of an app or a featureMake a demo video with OpenScreengetopenscreen/openscreen · by getopenscreenMake a polished video of an app or a feature with OpenScreen's MCP tools, from storyboard to recording, editing and export, then either attach it to a pull request or draft a post on X. Use when the user asks for a demo, a demo video, a screen recording, a product video, a launch clip, a video for X/Twitter, LinkedIn or a README, or to show a change in a pull request ("add a video to the PR", "show the feature to reviewers"). Also use to set OpenScreen up for an agent, and to continue an OpenScreen demo in a new session.★ 4.5k GitHub starsSkillVideo and audio processing with FFmpegFFmpeg for Video Productiondigitalsamba/claude-code-video-toolkit · by digitalsambaVideo and audio processing with FFmpeg. Use for format conversion, resizing, compression, audio extraction, and preparing assets for Remotion. Triggers include converting GIF to MP4, resizing video, extracting audio, compressing files, or any media transformation task.★ 2.1k GitHub starsSkillTurn static SCREENSHOTS into a simulated screen recordingfake-screencast — screenshots → simulated screen recordinghassancs91/claude-youtube-editor · by hassancs91Turn static SCREENSHOTS into a simulated screen recording (TSX) — a fake screencast with an animated cursor that eases to targets and clicks, a browser URL bar that updates per page, hard-cut navigations, in-page filter crossfades, smooth scroll, and a ken-burns zoom onto the payoff. Use when a beat needs to show a walkthrough of a web app / dashboard / settings page and you'd rather build it from screenshots than get (or ask for) a real screen recording — "fake a screen recording", "turn these screenshots into a screencast", "simulate clicking through the dashboard", "animate this UI walkthrough", "cursor moving through the app". Built on remotion/src/lib/screencast.tsx. This is a technique WITHIN step 2 (make-tsx): defer timeline/render/bake orchestration to make-tsx and raw crash-free TSX rules to vidtsx-2d-generator. Not for a single static page clone (use WebBrowserFrame directly) and not when the point is genuine proof of real speed/output (use a real recording).★ 330 GitHub starsSkillA Khan Academy style explainer videoKhan explainerhaiderfarooq3/khan-explainer · by haiderfarooq3Use when the user wants a Khan Academy style explainer video, a blackboard or whiteboard lesson, a hand-drawn chalk-talk animation, a short narrated video that teaches a concept ("explain X in a video", "explainer video", "teach X in 30 seconds"), or a tutorial that draws hand-written arrows, circles and captions over product screenshots ("draw over the UI", "annotated walkthrough"), or clips cut from a YouTube video or podcast where the speaker's real audio plays under a blackboard drawn to it ("khanify this video", "clip this with the Khan visual"), especially when it must be free, local, and use no paid APIs or keys. macOS only.★ 113 GitHub starsSkillPick the output format that makes an explanation easiestUnderstanding ladderChangWenC/understanding-ladder · by ChangWenCPick the output format that makes an explanation easiest to understand, following Karpathy's understanding ladder — (1) plain controlled text, (2) diagram, (3) interactive HTML page, (4) 3Blue1Brown-style explainer video. Classify the content (definition/steps, process/causality, parameter→outcome, unfolding derivation), recommend the lowest rung that fully answers, then produce it. Works in English and Chinese. Use when the user says "explain this clearly", "help me understand", "draw a diagram", "make it interactive", "make an explainer video", "what's the best way to explain X", "understanding ladder", "Karpathy ladder", or 「讲清楚」「帮我理解」「画个图」「做个交互页」「做个讲解视频」「用哪种方式讲最好懂」「理解阶梯」; also when explaining a non-trivial concept, mechanism, algorithm, or an AI agent's output.★ 108 GitHub starsSkillAnimate first frames into A-roll talking head clipsAnimate (A-Roll)TheMattBerman/scrollclaw · by TheMattBermanAnimate first frames into A-roll talking head clips. Uses Sora 2 via fal.ai (primary) with Kling 3 auto-fallback when Sora is unavailable or sunset.★ 71 GitHub stars

More from TheMattBerman