Video Hook Lines
Shared quality bar: ../references/output-standard.md. All numbers cited here live in ../references/thresholds.md.
The hook is three things happening at once and they are judged together. A
strong spoken line over a shot that shows nothing is a weak hook.
Use this skill when
A video ad needs its opening built or rebuilt: what is said, what is shown as
text, and what is on screen inside limits.video_hook_seconds. Also use it
when watch time collapses in the first seconds while the rest of the video
holds. The angle and the audience temperature are given, not chosen here. Not
for the primary text that sits above the video in the feed, which is
paid-social-primary-text-ad-creative. Not for Google search assets, which is
search-headline-set-ad-creative. Not for producing one angle across all three
funnel stages at once, which is funnel-stage-variants-ad-creative.
Required input
- The angle as one sentence, and the audience temperature: cold, warm or
retargeting.
- Placement and aspect ratio, against
coverage.ratio_set.
- Sound assumption: does this play with sound on or off by default.
- What footage or assets actually exist. Shots that must be produced are
flagged, not assumed.
- The claims available with their sources, and any brand or legal constraint.
- Existing hook performance if there is any: retention curve, thumbstop rate.
Analysis workflow
- Confirm the angle and temperature in one sentence each. A cold hook and a
retargeting hook for the same angle are different jobs and are not ranked
against each other in the same list.
- Name the moment of recognition: the specific thing the viewer sees or hears
that tells them the ad is about their problem. Write it before writing any
line.
- Write spoken lines that can be delivered inside
limits.video_hook_seconds at normal speaking pace, which is
limits.hook_spoken_words for the spoken line. Count words and syllables,
never characters.
- Write the on-screen line for each hook so it stands alone with sound off,
and check it does not simply transcribe the spoken line.
- Specify the opening shot for each hook and mark whether the footage exists,
needs_data where the asset library was not supplied.
- Check the vertical crop. A hook whose on-screen text or subject falls out of
frame at 9:16 fails at that placement, per
coverage.ratio_set.
- Rank the hooks and state the ranking basis explicitly as a judgement, not a
measurement, labelled
hypothesis per
reporting.no_causal_read_from_export.
- Apply
claims.evidence_rule, claims.superlative_rule and
claims.restricted_topics to spoken and on-screen lines alike, marking
unsourced factual lines [claim: needs source].
Decision rules
- Spoken line cannot be delivered inside
limits.video_hook_seconds:
rewrite, and cut the qualifier, never the subject.
- On-screen line that only repeats the spoken line:
rewrite. Two channels
saying one thing wastes the sound-off viewer.
- Opening shot with no existing footage: keep the hook, label it
approval_needed on a production cost, and rank it separately from hooks
that can ship this week.
- Hook that only works for a viewer who already knows the brand, submitted as
cold: reclassify it as warm rather than repairing it.
- Any line this skill produced that carries
[claim: needs source] is
approval_needed, whatever else its verdict says, and the marker is never
stripped to make the set look finished. A marked line is not shippable copy:
it waits for the named source, or it is rewritten without the claim. A marked hook is ranked outside the
shippable set, never inside it.
- Existing hook underperforming, read on retention: judge the opening with
early.hook_rate, which is 3-second plays over impressions, and the body with
early.hold_rate, which divides video plays at its own pinned percentage
over 3-second plays.
Both are read against the median of the video's own early.duration_band and
never against a median mixing lengths, and neither fires unless the band holds
at least early.median_stability_floor creatives. Neither may fire until the
creative clears early.min_exposure on both its halves, impressions and
spend against one target cost per acquisition. Both are low by definition
and neither is reported as a result.
- Under
early.min_exposure: state the retention read is not usable and rank
on judgement only. Do not reach for test.click_floor here. That floor is
the CTR-judged fallback for a test being read on clicks, and a click count
says nothing about whether the opening held a viewer; using it would answer a
different question in the right-looking notation.
early.hook_rate failing while early.hold_rate passes: rewrite the
opening only. The reverse, hold failing while hook passes, is a body problem
and this skill hands it back rather than rewriting an opening inside
limits.video_hook_seconds that already worked.
Output format
No verdict line. A ranked table: rank, spoken line, on-screen line, opening
shot, footage exists yes or no, sound-off readable yes or no, evidence label,
decision label. Then one paragraph naming the ranking basis. Then
What this could not see, Missing data, Approval gates.
This skill writes and ranks openings rather than reading a test or a time
series, so it issues no high confidence label. The comparison family's high rests
on test.min_runtime and test.volume_floor, conditions of a test that has not
been run on these hooks. Where an existing hook's retention is read, that read
sits in the early.* block and is low by definition, and the ranking itself is
a judgement labelled hypothesis, which carries no confidence label at all.
Practical example
Illustrative and fictional. Advertiser "Placewise". Angle: "your ad budget is
being spent on the wrong placements". Cold audience, 9:16 reels, sound off
assumed. Six hooks requested. Existing footage: 4 clips of a screen recording.
Shippable, ranked 1 to 3. Each is spoken line, on-screen line, opening shot:
- "Your budget went somewhere you never chose." / "You did not pick these
placements" / the placement breakdown scrolling under the cursor. Footage
exists.
- "This ad worked. Look where it ran." / "It worked. Now look where." / split
frame, the ad on the left, one placement row highlighted on the right.
Footage exists.
- "Nobody opens the placement report. Watch." / "The report nobody opens" /
cursor clicking through to the breakdown tab. Footage exists.
All three sit inside limits.hook_spoken_words and inside
limits.video_hook_seconds at normal pace, and each on-screen line stands alone
with sound off rather than transcribing the spoken one.
Ranked outside the shippable set:
- "We found four placements doing nothing."
[claim: needs source]. The count
came from a screenshot nobody attached, so it is approval_needed and waits
for the export.
- A hook opening on a founder face to camera. Kept, but there is no such
footage, so it is
approval_needed on a shoot.
Declined, not written in any form: "Most advertisers waste 60% of their budget."
The figure has no source, claims.evidence_rule bites, and it is not softened
into "most advertisers waste a big share" either. It would be written the day a
named study or the account's own export is supplied.
Retention read: refused. The supplied data covers 640 impressions on the
existing hook with spend under one target cost per acquisition, so
early.min_exposure is not met and neither early.hook_rate nor
early.hold_rate may fire. Video length was also not supplied, so under
early.duration_band there is no band to take a median inside. The ranking above
is therefore judgement, labelled hypothesis. The click count was offered as a
substitute gate and is declined: test.click_floor answers a CTR question and
this is a retention one.
Guardrails
- Never rank a hook you have not checked with sound off.
- Never write an opening that depends on footage nobody has confirmed exists.
- Never invent a statistic, a study, a customer or a comparison.
- Never present a judgement ranking as a measured result.
- Do not edit, upload or publish video assets.
- Report every hook declined and why, including hooks requested by name.
1---2name: video-hook-lines-ad-creative3description: Writes and ranks the opening of a video ad as three synchronised parts, spoken line, on-screen line and opening shot, for one angle at one audience temperature. Use when the deliverable is the first few seconds of a video before any body script exists. Not for feed body copy under the video, which is paid-social-primary-text-ad-creative.4---56# Video Hook Lines78Shared quality bar: `../references/output-standard.md`. All numbers cited here live in `../references/thresholds.md`.9The hook is three things happening at once and they are judged together. A10strong spoken line over a shot that shows nothing is a weak hook.1112## Use this skill when1314A video ad needs its opening built or rebuilt: what is said, what is shown as15text, and what is on screen inside `limits.video_hook_seconds`. Also use it16when watch time collapses in the first seconds while the rest of the video17holds. The angle and the audience temperature are given, not chosen here. Not18for the primary text that sits above the video in the feed, which is19paid-social-primary-text-ad-creative. Not for Google search assets, which is20search-headline-set-ad-creative. Not for producing one angle across all three21funnel stages at once, which is funnel-stage-variants-ad-creative.2223## Required input2425- The angle as one sentence, and the audience temperature: cold, warm or26 retargeting.27- Placement and aspect ratio, against `coverage.ratio_set`.28- Sound assumption: does this play with sound on or off by default.29- What footage or assets actually exist. Shots that must be produced are30 flagged, not assumed.31- The claims available with their sources, and any brand or legal constraint.32- Existing hook performance if there is any: retention curve, thumbstop rate.3334## Analysis workflow35361. Confirm the angle and temperature in one sentence each. A cold hook and a37 retargeting hook for the same angle are different jobs and are not ranked38 against each other in the same list.392. Name the moment of recognition: the specific thing the viewer sees or hears40 that tells them the ad is about their problem. Write it before writing any41 line.423. Write spoken lines that can be delivered inside43 `limits.video_hook_seconds` at normal speaking pace, which is44 `limits.hook_spoken_words` for the spoken line. Count words and syllables,45 never characters.464. Write the on-screen line for each hook so it stands alone with sound off,47 and check it does not simply transcribe the spoken line.485. Specify the opening shot for each hook and mark whether the footage exists,49 `needs_data` where the asset library was not supplied.506. Check the vertical crop. A hook whose on-screen text or subject falls out of51 frame at 9:16 fails at that placement, per `coverage.ratio_set`.527. Rank the hooks and state the ranking basis explicitly as a judgement, not a53 measurement, labelled `hypothesis` per54 `reporting.no_causal_read_from_export`.558. Apply `claims.evidence_rule`, `claims.superlative_rule` and56 `claims.restricted_topics` to spoken and on-screen lines alike, marking57 unsourced factual lines `[claim: needs source]`.5859## Decision rules6061- Spoken line cannot be delivered inside `limits.video_hook_seconds`:62 `rewrite`, and cut the qualifier, never the subject.63- On-screen line that only repeats the spoken line: `rewrite`. Two channels64 saying one thing wastes the sound-off viewer.65- Opening shot with no existing footage: keep the hook, label it66 `approval_needed` on a production cost, and rank it separately from hooks67 that can ship this week.68- Hook that only works for a viewer who already knows the brand, submitted as69 cold: reclassify it as warm rather than repairing it.70- Any line this skill produced that carries `[claim: needs source]` is71 `approval_needed`, whatever else its verdict says, and the marker is never72 stripped to make the set look finished. A marked line is not shippable copy:73 it waits for the named source, or it is rewritten without the claim. A marked hook is ranked outside the74 shippable set, never inside it.75- Existing hook underperforming, read on retention: judge the opening with76 `early.hook_rate`, which is 3-second plays over impressions, and the body with77 `early.hold_rate`, which divides video plays at its own pinned percentage78 over 3-second plays.79 Both are read against the median of the video's own `early.duration_band` and80 never against a median mixing lengths, and neither fires unless the band holds81 at least `early.median_stability_floor` creatives. Neither may fire until the82 creative clears `early.min_exposure` on both its halves, impressions and83 spend against one target cost per acquisition. Both are `low` by definition84 and neither is reported as a result.85- Under `early.min_exposure`: state the retention read is not usable and rank86 on judgement only. Do not reach for `test.click_floor` here. That floor is87 the CTR-judged fallback for a test being read on clicks, and a click count88 says nothing about whether the opening held a viewer; using it would answer a89 different question in the right-looking notation.90- `early.hook_rate` failing while `early.hold_rate` passes: `rewrite` the91 opening only. The reverse, hold failing while hook passes, is a body problem92 and this skill hands it back rather than rewriting an opening inside93 `limits.video_hook_seconds` that already worked.9495## Output format9697No verdict line. A ranked table: rank, spoken line, on-screen line, opening98shot, footage exists yes or no, sound-off readable yes or no, evidence label,99decision label. Then one paragraph naming the ranking basis. Then100`What this could not see`, `Missing data`, `Approval gates`.101102This skill writes and ranks openings rather than reading a test or a time103series, so it issues no `high` confidence label. The comparison family's `high` rests104on `test.min_runtime` and `test.volume_floor`, conditions of a test that has not105been run on these hooks. Where an existing hook's retention is read, that read106sits in the `early.*` block and is `low` by definition, and the ranking itself is107a judgement labelled `hypothesis`, which carries no confidence label at all.108109## Practical example110111Illustrative and fictional. Advertiser "Placewise". Angle: "your ad budget is112being spent on the wrong placements". Cold audience, 9:16 reels, sound off113assumed. Six hooks requested. Existing footage: 4 clips of a screen recording.114115Shippable, ranked 1 to 3. Each is spoken line, on-screen line, opening shot:1161171. "Your budget went somewhere you never chose." / "You did not pick these118 placements" / the placement breakdown scrolling under the cursor. Footage119 exists.1202. "This ad worked. Look where it ran." / "It worked. Now look where." / split121 frame, the ad on the left, one placement row highlighted on the right.122 Footage exists.1233. "Nobody opens the placement report. Watch." / "The report nobody opens" /124 cursor clicking through to the breakdown tab. Footage exists.125126All three sit inside `limits.hook_spoken_words` and inside127`limits.video_hook_seconds` at normal pace, and each on-screen line stands alone128with sound off rather than transcribing the spoken one.129130Ranked outside the shippable set:1311324. "We found four placements doing nothing." `[claim: needs source]`. The count133 came from a screenshot nobody attached, so it is `approval_needed` and waits134 for the export.1355. A hook opening on a founder face to camera. Kept, but there is no such136 footage, so it is `approval_needed` on a shoot.137138Declined, not written in any form: "Most advertisers waste 60% of their budget."139The figure has no source, `claims.evidence_rule` bites, and it is not softened140into "most advertisers waste a big share" either. It would be written the day a141named study or the account's own export is supplied.142143Retention read: refused. The supplied data covers 640 impressions on the144existing hook with spend under one target cost per acquisition, so145`early.min_exposure` is not met and neither `early.hook_rate` nor146`early.hold_rate` may fire. Video length was also not supplied, so under147`early.duration_band` there is no band to take a median inside. The ranking above148is therefore judgement, labelled `hypothesis`. The click count was offered as a149substitute gate and is declined: `test.click_floor` answers a CTR question and150this is a retention one.151152## Guardrails153154- Never rank a hook you have not checked with sound off.155- Never write an opening that depends on footage nobody has confirmed exists.156- Never invent a statistic, a study, a customer or a comparison.157- Never present a judgement ranking as a measured result.158- Do not edit, upload or publish video assets.159- Report every hook declined and why, including hooks requested by name.