Synced from
references/attention-preservation.mdincontent-extractionskill on 2026-05-18. Edit upstream in the skill; this file is overwritten on next sync.
Attention-Preservation Canon — beyond the 0-3s swipe
What keeps a viewer past the swipe boundary. Owned by the virality sub-agent. Extends
references/shortform-virality.md(which owns the archetypal dimension — hook types, Tier-1/2/3, Schwartzberg). This file owns the temporal dimension: what must happen at clip-second 5, 12, 25, 40 for retention to hold.
The skill ships clips for A Friend. A Friend’s register is punchy, sharp, real, essence-loaded, considered, perceptive, illuminated — explicitly NOT motivational-speaker, hustle-bro, productivity-influencer, TED-pacing, Gary-Vee energy. That register constrains how attention-preservation tactics get applied here. A trick that works on TikTok-pop won’t always land for A Friend.
The retention map (by clip-second)
Algorithmic retention thresholds are not artistic goals — they’re the floor below which the clip dies. Above them, the clip can do whatever Daniel’s voice wants.
| Window | Retention floor | What MUST happen | Common failures |
|---|---|---|---|
| 0–1.5s | 80% | Hook lands; viewer can name the topic + the stake in 1 sentence. | ”Welcome to episode 2” / context-setting / generic intro / abstract framing. |
| 1.5–3s | 75% | Hook is reinforced, NOT repeated. New information that reframes the opener. | Restating the hook. Pause. Filler. Off-camera glance. |
| 3–8s | 70% | Promise clarified. Viewer knows why they’re still here. Direction visible. | Drift. Rambling. Topic dilution. |
| 8–15s | 65% | First proof beat — concrete fact, named decision, vivid image, contradiction deepened. | Talking head with no support. Repetition of hook idea without new substance. |
| 12–18s | 60% | Second-hook re-engagement. New tonal/pacing shift OR specific number/quote/reframe that re-locks attention. This is the “drop-off cliff” — most clips lose 30%+ here without a deliberate second hook. | Single-rate clips flatline here. Continuous monologue with no shift = swipe. |
| 18–30s | 55% | Climax beat — the line they’ll remember. Stake delivered. | Anticlimax. Trailing off. “And so…” filler. |
| 30–45s | 50% | Resolution starting. Either: vulnerability landed, or contrarian explained, or vision crystallized. | Repetition. Padding. Re-explaining what was already clear. |
| 45–60s | 45% | Close-out beat that loops the opening OR delivers a quotable promise. | Fade-out. Sells-y CTA. Random thought-tail. |
| 60s+ | 40% | Each additional 15s should earn its place via NEW substance — vulnerability, technical depth, emotional reframe. | ”Ich red noch ein bisschen weiter” — every additional second past 60 must justify itself. |
Default target: 30–60s for short-form publication. Clips above 60s must show their substance density per second is HIGHER than at 60s, not lower. If density drops, runtime drops.
The second-hook landing window (clip-second 12-18)
The most important rule in this file. More clips fail at 12-18s than at 0-3s.
Why 12-18s? Algorithmic data (OpusClip 2026, DataSlayer TikTok algo guide, Hootsuite 2025) names this as the dominant retention cliff. The 0-3s swipe boundary screens for “is this for me.” The 12-18s drop-off screens for “is this still worth my attention.” Both gates have to clear.
What a second-hook is:
- A new specific fact / number / named-thing introduced AFTER the opener
- A pacing shift — speech rhythm changes, breath, beat, jolt
- A tonal pivot — warm → sharp, abstract → concrete, declarative → vulnerable
- A mid-clip cliffhanger — “…and that’s the thing I almost got wrong”
- A reframe of the opening line in a new direction
- A vivid image that wasn’t telegraphed by the opener
What a second-hook is NOT:
- Restating the opener in different words
- “And here’s why…” — performative pivot
- A list-item (“the second thing is…“)
- A quote attribution (“as Steve Jobs said…“)
- Filler that buys time before the climax
Scoring per clip (sub-agent emits):
- Window match (1.0): second-hook lands at clip-second 12-18 with measurable shift
- Wide window (0.5): second-hook lands clip-second 9-11 OR 19-22 (acceptable but not ideal)
- Missing (0.0): no second-hook detected; sub-agent proposes insertion point or recommends drop
If a clip lacks a second-hook AND can’t have one inserted, the clip should be cut to ≤12s OR rejected. A 30s clip with a flat retention curve is worse than a 10s clip that ends before the cliff.
Pacing-shift count (the rate-of-information variation rule)
A 60s clip with a single “rate” of information density flatlines around the 12-18s cliff. Two or more shifts is the floor for sub-1min publishing.
What counts as a pacing shift:
- Sentence-length variance (long → short → long)
- Topic-density variance (abstract → concrete → abstract)
- Rhythmic shift (pause-punch-pause vs continuous flow)
- Volume shift (inferred from waveform amplitude proxies)
- Tonal pivot (warm → sharp → reflective)
- Code-switching (German → English → German)
- Question-then-answer self-dialogue
- Vulnerability beat embedded in a confident arc
Heuristic the sub-agent applies:
- Compute mean sentence length per 10s window of source.
- Variance across windows > X = pacing-shift signal present.
- Variance below threshold + clip ≥30s = “single-rate” warning. Sub-agent surfaces “consider re-arc with vulnerability/contrarian beat insertion.”
For A Friend specifically: pacing shifts should NOT come from “amped energy” tactics. They come from substance-shift, not delivery-shift. Daniel’s natural code-switching is a real shift; raising voice mid-sentence is not.
Loopability — last 3s designed to invite rewatch
The TikTok algorithm rewards clips that get rewatched (Schwartzberg + Naveen Jain rewatch-gap canon, Hootsuite 2025 retention-vs-watch-percentage data). A loop signal is when the last 3s creates an itch that the first 3s scratches.
Patterns that loop:
- Self-referencing close: last sentence answers a question the first sentence implied. (“So we built a friend.” → opener: “Most AI lives on a screen. Mine lives in a fabric pouch.“)
- Reframed callback: opener phrase appears in close with new meaning. (“intense beauty of existence” → opener about pixels gets answered)
- Open-loop close: ends on an unresolved question or weight that pulls viewer back to verify they understood.
- Two-beat tail: the brand’s signature cadence (“Private by design. Your data, your rules.”) used as close.
Patterns that do NOT loop:
- “And that’s all I have for today” — closes the loop, viewer leaves.
- CTA close (“Link in bio”) — algorithmic friction; viewers don’t share/save.
- Fade-out / trailing-off — viewer’s last impression is “this didn’t land.”
- Sells-y close — “preorder now” / “buy this” / “check it out” — A Friend brand non-negotiable.
Sub-agent scoring:
- High = explicit loop pattern present (self-reference / reframed callback / two-beat tail)
- Med = soft loop (open-loop close OR vivid image at end)
- Low = no loop signal; viewer leaves with completion-feeling
For A Friend: the “promise close” rule from _brand/voice-preservation.md §4 already biases toward loopability. A promise about the world or product creates the itch better than a sells-y CTA.
Rewatch-trigger detection
Different from loopability — rewatch happens because the viewer felt they missed something. Specific patterns trigger this:
- Ambiguous referent that gets clarified. Opener says “this is broken” — body explains “this” = current AI tooling. Viewer wants to verify they tracked the antecedent.
- Named-decision earning a “wait what?“. “I set myself a 3-day limit” — the specificity creates a need to verify the number.
- Punchline whose weight is felt only on second pass. Daniel’s “intense beauty of existence rather than pixels on a black screen” gets sharper on rewatch because the viewer notices the cadence was rehearsed-naturally, not improvised.
- Compressed phrasing that requires unpacking. A two-beat that’s so dense one watch isn’t enough.
Sub-agent flags rewatch-trigger presence per clip. If 0 triggers across a 30s+ clip, the clip is “single-watch” — algorithmically inferior. Propose insertion of an ambiguous-referent or specificity-trigger via reorder.
Micro-cliffhanger seeding (clips ≥45s)
For clips longer than 45s, retention requires explicit mid-clip promise of a payoff before the close.
Patterns:
- “…and that’s the thing I almost got wrong” → payoff in seg5
- “Let me show you what happened next” → payoff after named beat
- “Here’s where it gets weird” → payoff in mid-clip turn
- “I’ll tell you why in a second, but first…” → payoff after digression
A Friend brand-fit constraints:
- NO performative cliffhangers — “you won’t believe what happened” / “the result will shock you” → banned.
- Cliffhangers must be SPECIFIC and EARNED — not buzz-driven.
- Daniel’s natural cadence already produces these when he’s mid-flow (“the thing is, when I sat down to do this…”). Sub-agent surfaces existing ones; doesn’t invent fake ones.
If clip is ≥45s and has no micro-cliffhanger: sub-agent flag is “consider trim to ≤30s OR locate seeded cliffhanger in source for reorder.”
Tone-shift as re-engagement
When verbal pacing alone can’t carry a 60s+ clip, tone-shift does the work. Daniel’s natural shifts:
- Builder pose (“ich baue” / “I’m building”) → vulnerability (“but I almost broke”) → reframe (“which made me realize”)
- Technical depth (architecture / tools) → stakes (why this matters) → promise (what changes)
- Vision (“the world I’m building toward”) → specificity (“which is why I’m using X today”) → call (not CTA — promise)
Sub-agent maps tone-shifts across clip. Reports:
- 0 shifts in 60s+ clip → critical, propose drop or restructure
- 1 shift → marginal, OK if the shift carries weight
- 2+ shifts → strong arc, ship
For A Friend: tone-shift NEVER means “amped energy” — it means register variation. Warm → sharp → warm is a shift. Calm → louder → calm is NOT.
The cut-down imperative (most important meta-rule)
When in doubt, cut more. Length is not a virtue.
Daniel’s stated frustration (2026-05-03 verbatim, paraphrased): “Master clip 1:50 ist zu lang. Auch DaVinci-Cuts mit 1:30 waren zu lang. Sub-agent muss BRUTAL kürzen, gegen virale Metriken abgleichen, dann übergeben.”
The sub-agent’s default bias is aggressive trim, not “preserve all substance.” Specifically:
- A 115s master should typically yield a 30-60s shipped clip, not a 90s one.
- “Substance” that doesn’t align to ONE pillar / ONE I-believe-that / ONE arc gets cut.
- “Substance” that fails the second-hook landing window gets cut.
- “Substance” that doesn’t earn its second on the retention curve gets cut.
- A weak segment between two strong ones gets cut even if the weak one has nice content. Adjacent strength compounds.
The rule: every kept second must beat the retention floor for its window. If the second can’t, drop it and the rest tightens.
This is the rule that produces a 50s clip from a 115s master. Without it, the sub-agent just markups; with it, the sub-agent ACTS.
Anti-Brain-Rot constraint
A Friend explicitly does NOT do brain-rot content. The sub-agent must distinguish “engagement-aware” from “engagement-bait”:
| Engagement-aware (allowed) | Engagement-bait (banned) |
|---|---|
| Specific number paired with stake | Specific number for shock value alone |
| Vulnerability with named context | Performed vulnerability (“I cried last night”) |
| Contrarian frame backed by reasoning | Contrarian for views (“everyone’s wrong about X”) |
| Curiosity gap with real payoff | Curiosity gap with weak payoff or none |
| Pacing-shift via substance | Pacing-shift via “amped” energy |
| Two-beat cadence (brand voice) | Rising-intonation lift-statement |
| Tool-naming with combination | Buzzword soup |
| Open-loop close | ”Wait for it…” → underwhelming reveal |
| Pillar-aligned drama | Manufactured drama |
Sub-agent gate: if a proposed cut maximizes retention via engagement-bait pattern, it’s auto-rejected with BRAIN-ROT-PATTERN-DETECTED flag. The brand register from references/aesthetic-register-anti-slick.md is the upstream filter; this is the downstream check.
Sub-agent scoring summary (extends parent rubric)
Existing rubric (Tier-1/2/3 + 6 hook archetypes + Schwartzberg three-test + 3 engagement-design checks) stays. New attention-preservation dimensions feed retention_risk_notes and virality-pass.md:
| Dimension | Score | What it checks |
|---|---|---|
| Second-hook landing window | 1.0 / 0.5 / 0.0 | Lands clip-second 12-18 / ±3s outside / missing |
| Pacing-shift count | N (target ≥2 per 30-60s) | Sentence-length variance + topic-density variance |
| Loopability | High / Med / Low | Last 3s pattern present |
| Rewatch trigger | List | Specific triggers detected (ambiguous referent / named decision / compressed phrasing / etc.) |
| Micro-cliffhanger seeding | Y/N (required ≥45s) | Mid-clip promise of payoff |
| Tone-shifts mapped | N (target ≥1 per 60s+) | Register variation, NOT delivery variation |
| Anti-brain-rot pass | PASS / FAIL | No engagement-bait patterns |
| Cut-down recommended | Δ seconds | Aggressive trim from current arc |
The Cut-down recommended field is the load-bearing one. The sub-agent’s primary job is recommending HOW MUCH to cut beyond what silence-removal does.
What the sub-agent does NOT do
- Does NOT enforce these rules as hard gates — surfaces them as proposals for Daniel’s review.
- Does NOT auto-merge into
cut-plan.json— outputsvirality-pass.mdsidecar. - Does NOT rewrite Daniel’s words — every proposed opener / segment is verbatim from
transcript.txt. - Does NOT score against general short-form virality — scores against A Friend’s register specifically.
- Does NOT include B-roll cues (parent skill’s job).
Sources & canon basis
references/shortform-virality.md— parent canon (hook archetypes, retention floors, scoring rubric). This file ASSUMES familiarity with parent canon.- OpusClip “5 TikTok Hook Types 2026” — retention cliff at 12-18s named explicitly.
- DataSlayer “TikTok Algorithm 2025” — algorithm makes first distribution decision at 1.5s, retention re-evaluated at clip midpoint.
- Hootsuite “TikTok Algorithm Works 2025” — average percentage viewed (APV) > completion rate; 70%+ APV is short-form benchmark.
- Schwartzberg Get to the Point — three-test (I-believe-that / so-what / why-test) embedded in parent skill Step 4f.
- Naveen Jain rewatch-gap research — loop signal as algorithmic reward.
- Nathan Barry “compression as care” — substance-density per second is the right metric, not runtime.
- A Friend brand pack:
_brand/pillars.md(7 pillars),_brand/voice-preservation.md(banned vocab, two-beat, code-switching, “feels like me” gate).
When the sub-agent cites a rule, it cites THIS file or one of these sources. Not a generic creator-economy article.