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

Score UGC videos for virality before publishing

Virality Scoring

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

Virality Scoring cover

Score UGC videos for virality before publishing. 7 criteria, 0-100 each.

---
name: scrollclaw-score
description: "Score UGC videos for virality before publishing. 7 criteria, 0-100 each. Only 70+ gets published."
metadata:
  openclaw:
    emoji: "📊"
    user-invocable: true
    triggers:
      - "score video"
      - "virality score"
      - "ugc score"
      - "rate ugc"
      - "video quality check"
---

# Virality Scoring

Score every video before publishing. Read `references/virality-scoring.md` for the full methodology.

Overview

Score every video before publishing. Read references/virality-scoring.md for the full methodology.

What you get

  • Producesone score card per clip, a go/no-go decision, and appended learnings
  • Formatmarkdown files in workspace/campaigns/<slug>/scores/ plus append-only entries in learnings.md
  • Default behaviorscore every final clip against the 7 dimensions and route the user back to the failing stage if the score is below 70
  • Downstream usepublish/no-publish decision and future campaign learnings
Manual install (npx, ZIP)
Claude Codenpx skills add TheMattBerman/scrollclaw --skill scrollclaw-score -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/TheMattBerman/scrollclaw/tar.gz/ea175d4b62fd \ | tar -xz -C ~/.claude/skills --strip-components=1 scrollclaw-ea175d4b62fd/score
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/a6ff1d80965765cd51c1/score.zip" -OutFile "$env:TEMP\score.zip"; Expand-Archive "$env:TEMP\score.zip" -DestinationPath "$HOME\.claude\skills" -Force
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.md4.8 KB
  • references/1 file · 4.8 KB
Read the files here
TheMattBerman/ea175d42 files
Shared references2SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text136 lines

Virality Scoring

Score every video before publishing. Read references/virality-scoring.md for the full methodology.

Criteria

7 dimensions, scored 0-100 each:

  1. Hook Strength — Does frame 1 + first 3 seconds force a pause?
  2. Emotional Impact — Does it trigger a visceral response (not just "interesting")?
  3. Pacing — Does every second earn the next second?
  4. Text Readability — Are captions legible on mobile, properly timed?
  5. Scroll-Stop Power — Would this stop a thumb mid-scroll in a feed?
  6. Completion Likelihood — Will viewers watch to the end?
  7. Shareability — Would someone send this to a friend?

Thresholds

Score Action
70+ Publish. Ship it.
60-69 Polish — specific fixes can save it. Identify which dimensions are dragging.
Below 60 Regenerate. Don't polish a bad clip. Go back to the failing stage.

Process

  1. Watch the final video on a phone screen, in-app, scrolling past it like a user
  2. Score each dimension independently
  3. Calculate average
  4. If below threshold, identify the weakest dimensions
  5. Route back to the appropriate skill:
    • Hook/scroll-stop weak → /first-frame (regenerate canonical face)
    • Pacing/completion weak → /persona (restructure script)
    • Emotional impact weak → /persona (better language from research)
    • Text readability weak → /assemble (fix captions)
    • Audio/voice issues → /assemble (re-run S2S)

Brand Memory Integration

Reads
File Purpose
workspace/campaigns/<slug>/clips/final-*.mp4 Video(s) to score
workspace/campaigns/<slug>/brief.md Original campaign goals — score against intent, not just virality
workspace/campaigns/<slug>/persona-research.md Whether the script language matches real customer language
Writes
File Notes
workspace/campaigns/<slug>/scores/score-<version>.md Score card with per-dimension breakdown and go/no-go
workspace/campaigns/<slug>/learnings.md Append-only — what worked, what didn't, threshold notes
Context loading
📊 Score context loaded:
  ✓ Campaign: ridge-q1
  ✓ Final clips: 2 (workspace/campaigns/ridge-q1/clips/final-*.mp4)
  ✓ Brief: workspace/campaigns/ridge-q1/brief.md
  ✓ Persona research: workspace/campaigns/ridge-q1/persona-research.md
Learnings append format

After every score, append to workspace/campaigns/<slug>/learnings.md:

## YYYY-MM-DD — <campaign-slug> <format>

**Score:** <average>/100 (<go/no-go>)
**Dimension breakdown:** Hook <n> | Emotional <n> | Pacing <n> | Captions <n> | Scroll-stop <n> | Completion <n> | Share <n>

**What worked:**
- [specific finding]

**What didn't:**
- [specific finding]

**Remediation:** [if no-go: which skill to route back to and why]

Never overwrite this file. Only append.

Contract

Input
  • Required: at least one final assembled clip
  • Optional: campaign brief, persona research, prior campaign learnings
  • Format: workspace video files plus markdown context
  • Source: /assemble, workspace/campaigns/<slug>/brief.md, and persona-research.md
Output
  • Produces: one score card per clip, a go/no-go decision, and appended learnings
  • Format: markdown files in workspace/campaigns/<slug>/scores/ plus append-only entries in learnings.md
  • Default behavior: score every final clip against the 7 dimensions and route the user back to the failing stage if the score is below 70
  • Downstream use: publish/no-publish decision and future campaign learnings
Validation
  • Pre-conditions: final clip exists and is watchable end to end
  • Post-conditions: score includes a dimension breakdown, a threshold decision, and clear remediation if needed
  • Failure checks: do not recommend publishing without a real breakdown; if the clip is unscorable or missing context, flag the gap explicitly

Output

  • Virality score card in workspace/campaigns/<slug>/scores/score-<version>.md
  • Go/no-go decision
  • Learnings appended to workspace/campaigns/<slug>/learnings.md
  • If no-go: specific remediation routing

Batch Scoring

For campaign batches, score all variants and rank. Publish only the 70+ tier. Below-60 variants get regenerated, not tweaked.

bash scripts/batch-campaign.sh \
  --workspace workspace/campaigns/<slug> \
  --creators workspace/campaigns/<slug>/creators/ \
  --formats "talking-head,pov-demo,podcast-clip" \
  --dual-output
1---
2name: scrollclaw-score
3description: "Score UGC videos for virality before publishing. 7 criteria, 0-100 each. Only 70+ gets published."
4metadata:
5 openclaw:
6 emoji: "📊"
7 user-invocable: true
8 triggers:
9 - "score video"
10 - "virality score"
11 - "ugc score"
12 - "rate ugc"
13 - "video quality check"
14---
15 
16# Virality Scoring
17 
18Score every video before publishing. Read `references/virality-scoring.md` for the full methodology.
19 
20## Criteria
21 
227 dimensions, scored 0-100 each:
23 
241. **Hook Strength** — Does frame 1 + first 3 seconds force a pause?
252. **Emotional Impact** — Does it trigger a visceral response (not just "interesting")?
263. **Pacing** — Does every second earn the next second?
274. **Text Readability** — Are captions legible on mobile, properly timed?
285. **Scroll-Stop Power** — Would this stop a thumb mid-scroll in a feed?
296. **Completion Likelihood** — Will viewers watch to the end?
307. **Shareability** — Would someone send this to a friend?
31 
32## Thresholds
33 
34| Score | Action |
35|-------|--------|
36| 70+ | **Publish.** Ship it. |
37| 60-69 | Polish — specific fixes can save it. Identify which dimensions are dragging. |
38| Below 60 | **Regenerate.** Don't polish a bad clip. Go back to the failing stage. |
39 
40## Process
41 
421. Watch the final video on a phone screen, in-app, scrolling past it like a user
432. Score each dimension independently
443. Calculate average
454. If below threshold, identify the weakest dimensions
465. Route back to the appropriate skill:
47 - Hook/scroll-stop weak → `/first-frame` (regenerate canonical face)
48 - Pacing/completion weak → `/persona` (restructure script)
49 - Emotional impact weak → `/persona` (better language from research)
50 - Text readability weak → `/assemble` (fix captions)
51 - Audio/voice issues → `/assemble` (re-run S2S)
52 
53## Brand Memory Integration
54 
55### Reads
56| File | Purpose |
57|------|---------|
58| `workspace/campaigns/<slug>/clips/final-*.mp4` | Video(s) to score |
59| `workspace/campaigns/<slug>/brief.md` | Original campaign goals — score against intent, not just virality |
60| `workspace/campaigns/<slug>/persona-research.md` | Whether the script language matches real customer language |
61 
62### Writes
63| File | Notes |
64|------|-------|
65| `workspace/campaigns/<slug>/scores/score-<version>.md` | Score card with per-dimension breakdown and go/no-go |
66| `workspace/campaigns/<slug>/learnings.md` | Append-only — what worked, what didn't, threshold notes |
67 
68### Context loading
69 
70```
71📊 Score context loaded:
72 ✓ Campaign: ridge-q1
73 ✓ Final clips: 2 (workspace/campaigns/ridge-q1/clips/final-*.mp4)
74 ✓ Brief: workspace/campaigns/ridge-q1/brief.md
75 ✓ Persona research: workspace/campaigns/ridge-q1/persona-research.md
76```
77 
78### Learnings append format
79 
80After every score, append to `workspace/campaigns/<slug>/learnings.md`:
81 
82```markdown
83## YYYY-MM-DD — <campaign-slug> <format>
84 
85**Score:** <average>/100 (<go/no-go>)
86**Dimension breakdown:** Hook <n> | Emotional <n> | Pacing <n> | Captions <n> | Scroll-stop <n> | Completion <n> | Share <n>
87 
88**What worked:**
89- [specific finding]
90 
91**What didn't:**
92- [specific finding]
93 
94**Remediation:** [if no-go: which skill to route back to and why]
95```
96 
97Never overwrite this file. Only append.
98 
99## Contract
100 
101### Input
102- Required: at least one final assembled clip
103- Optional: campaign brief, persona research, prior campaign learnings
104- Format: workspace video files plus markdown context
105- Source: `/assemble`, `workspace/campaigns/<slug>/brief.md`, and `persona-research.md`
106 
107### Output
108- Produces: one score card per clip, a go/no-go decision, and appended learnings
109- Format: markdown files in `workspace/campaigns/<slug>/scores/` plus append-only entries in `learnings.md`
110- Default behavior: score every final clip against the 7 dimensions and route the user back to the failing stage if the score is below 70
111- Downstream use: publish/no-publish decision and future campaign learnings
112 
113### Validation
114- Pre-conditions: final clip exists and is watchable end to end
115- Post-conditions: score includes a dimension breakdown, a threshold decision, and clear remediation if needed
116- Failure checks: do not recommend publishing without a real breakdown; if the clip is unscorable or missing context, flag the gap explicitly
117 
118## Output
119 
120- Virality score card in `workspace/campaigns/<slug>/scores/score-<version>.md`
121- Go/no-go decision
122- Learnings appended to `workspace/campaigns/<slug>/learnings.md`
123- If no-go: specific remediation routing
124 
125## Batch Scoring
126 
127For campaign batches, score all variants and rank. Publish only the 70+ tier. Below-60 variants get regenerated, not tweaked.
128 
129```bash
130bash scripts/batch-campaign.sh \
131 --workspace workspace/campaigns/<slug> \
132 --creators workspace/campaigns/<slug>/creators/ \
133 --formats "talking-head,pov-demo,podcast-clip" \
134 --dual-output
135```
136 
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 →
SkillReverse engineer native, managed, Electron/JavaScriptREAmorluto/rea · by morlutoReverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.★ 316k GitHub starsSkillBrainstorms ideas into designs before any creative workBrainstorming Ideas Into Designsobra/superpowers · by obraYou MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.★ 290k GitHub starsSkillRequires technical rigor and verificationCode Review Receptionobra/superpowers · by obraUse when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation★ 290k GitHub starsSkillDiagnosis loop for hard bugs and performance regressionsDiagnosing bugsmattpocock/skills · by mattpocockDiagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.★ 267k GitHub starsSkillImplement the result of /to-spec and /to-tickets in codeImplement specmattpocock/skills · by mattpocockImplement the result of /to-spec and /to-tickets in code.★ 267k GitHub starsSkillWriting a PR bodymattpocock/skills · by mattpocockUse when writing a PR body.★ 267k GitHub stars

More from TheMattBerman

SkillAnimate 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 starsSkillGenerate B-roll environment and product shots with Kling 3B-Roll (Kling 3)TheMattBerman/scrollclaw · by TheMattBermanGenerate B-roll environment and product shots with Kling 3 via fal.ai. Environment matching, cut timing, and visual-only clips that play under continuous voice.★ 71 GitHub starsSkillStart of the UGC pipeline for persona researchPersona & ScriptTheMattBerman/scrollclaw · by TheMattBermanStart of the UGC pipeline for persona research, creator profiles, format selection, and scriptwriting. Use when the user is clearly asking for messaging work rather than broad full-pipeline orchestration.★ 71 GitHub starsSkillRouter and orchestrator for AI UGC video productionScrollClawTheMattBerman/scrollclaw · by TheMattBermanRouter 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.★ 71 GitHub starsSkillScrollClaw system — core doctrine, format selectionTheMattBerman/scrollclaw · by TheMattBermanScrollClaw system — core doctrine, format selection, pipeline routing, and anti-patterns. Loaded into every UGC conversation.★ 71 GitHub stars