Use the Re‑Hook Framework to insert a fresh narrative hook, a value‑driven mini‑segment, and a CTA every three minutes.
1. Outline the 90‑minute arc – divide the script into 30 blocks of 3 min each; label them Hook‑A, Core‑A, CTA‑A, etc.
2. Select a hook type – choose Story, Data, or Question based on the segment’s objective (see table below).
3. Write a 20‑30 s hook – start with a compelling line, embed a keyword‑rich phrase, and cue the next mini‑segment.
4. Deliver a 2‑minute value block – use the “Problem → Solution → Proof” pattern; sprinkle LSI keywords and a visual cue for the thumbnail.
5. Close with a micro‑CTA – ask for a comment, pin a poll, or tease the next 3‑minute hook; include a timestamp link (#t=180).
6. Automate timestamps – run a short script after the first draft to inject ?t= links.
Hook type comparison
| Hook Type | Goal | Typical Length |
|---|---|---|
| Story hook | Emotional pull | 15‑30 s |
| Data hook | Credibility | 20‑40 s |
| Question hook | Curiosity | 10‑20 s |
# Generate YouTube‑compatible tags from the script
import googleapiclient.discovery, re
def extract_keywords(text):
words = re.findall(r'\b\w{4,}\b', text.lower())
return list({w for w in words if w not in STOPWORDS})[:30]
script = open('draft.md').read()
tags = extract_keywords(script)
service = googleapiclient.discovery.build('youtube', 'v3', developerKey=API_KEY)
request = service.videos().update(
part='snippet',
body={'id': VIDEO_ID,
'snippet': {'categoryId': '28',
'tags': tags}})
request.execute()Gotcha: YouTube inserts a mandatory mid‑roll ad after 6 minutes of watch time; if your hook lands exactly at 6:00 it can be skipped, so offset the hook by a few seconds to preserve the CTA.