Chapter 6
Chapter 6 . Agents and workflows . Content agents

Content agents: plan once, check every post

A content agent is a prompt pipeline. The plan is the input, the platform template is the spec, the model writes the draft, and the template's checklist is the oracle. Chapter 6 ships the plan and seven templates; this page runs their rules on a QA post.

9
Markdown files
One planning sheet, seven platform templates and a README. No code.
7
Platform templates
YouTube, Reel, Instagram post, carousel, Medium, blog, LinkedIn.
11
Banned phrases
From the universal voice rules, checked in every template.
8
Final-gate checks
Run on the plan before any platform template is opened.

01A content agent is a prompt pipeline

Chapter 6 has no code. It is nine Markdown files: a planning sheet, seven platform templates and a README with the voice rules. Read them as a tester and they are a pipeline you already know: an input, a spec, a generator and an oracle.

Pipeline partIn this chapterWhat a tester checks
InputOne filled 00_Hook_Story_Offer_Planning.md: idea, hook, story, offerThe plan's own Final gate: 8 checks before any template is opened
SpecOne platform template (01 to 07): format, voice rules, skeletonEvery rule with a number in it is testable: words, slides, characters, hashtags
GeneratorAny LLM, given the plan and the templateNothing yet. Model output is untrusted until checked
OracleThe template's pre-publish checklist and the README's banned phrasesRun it on every draft, by hand or with a script like the demo below
flowchart LR
  I["Idea"] --> P["00 plan"]
  P --> G{"Final gate"}
  G -->|fail| P
  G -->|pass| T["Plan + template"]
  T --> L["LLM writes"]
  L --> D["Draft"]
  D --> C{"Checklist"}
  C -->|fail| L
  C -->|pass| S["Publish"]
The chapter's routine as a pipeline. The Final gate checks the plan (8 checks); the template's checklist checks the draft. Those two decisions are where the tester sits.

The README gives the one instruction the model needs, after you paste the filled plan and a template: "Write the [platform] piece using this plan and these template rules. Follow the format exactly. No banned phrases." Its summary: the template is the spec; the plan is the content.

02Hook, Story, Offer

The planning sheet reduces every post to three moves, in its own words:

00_Hook_Story_Offer_Planning.md (lines 3-7)
Every piece of content is three moves: **stop them (Hook), take them somewhere (Story), ask for
something (Offer).** Get these three right on paper and the platform formats become copy work.
Get them wrong and no amount of editing saves the post.

Fill this out **once per idea.** Everything else in this chapter pulls from it.

Hook: six patterns, each with an example

00_Hook_Story_Offer_Planning.md (lines 28-37)
### Hook patterns that work

| Pattern | Shape | Example |
|---------|-------|---------|
| **Blunt declarative** | A flat, confident claim that dares disagreement | "Your 5,000 tests are not an asset. They're a liability." |
| **Unpopular opinion** | Name the consensus, then break it | "Unpopular opinion: more coverage is making your suite worse." |
| **The reader's own thought** | Say the thing they're already half-thinking | "AI assistants get dumber after a few hours. You've noticed too." |
| **Cold-open story** | Drop them mid-scene | "A candidate walked into my interview yesterday and…" |
| **The reversal** | Set an expectation, snap it | "I automated everything. Then I deleted half of it." |
| **The number** | A specific, surprising figure (must be real) | "We cut flaky reruns 80% by changing one line." |

The hook rules: write five versions and keep the sharpest; no statistic as the opener unless the statistic is the shock; never a table of contents such as "In this post I'll show you"; cut every word that delays the punch.

Story: Problem, Tension, Turn, Proof

00_Hook_Story_Offer_Planning.md (lines 65-70)
```
PROBLEM (their pain, their words): ___________________
TENSION (why the easy answer fails): _________________
TURN (your insight / method):       _________________
PROOF (number, demo, story, code):  _________________
```

One core idea per piece; side ideas become future posts. Specifics over adjectives: "Reduced runtime from 41s to 12s" beats "much faster". Add one screenshot-worthy line and one honest caveat that cuts against your own interest.

Offer: exactly one ask, lightest rung first

RungOfferExample or mechanic
1EngagementA binary or specific question. Never "what do you think?"
2Save / share"Save this for your next sprint."
3Lead magnetComment a keyword and an auto-DM sends a checklist, PDF or repo link
4DestinationRead the full article, watch the video, open the repo
5ProductThe course or tool. Sparingly and mentor-framed, never salesy
00_Hook_Story_Offer_Planning.md (lines 104-107)
### Offer rules
- Match the platform: LinkedIn hides body links (put links in the first comment); Instagram
  uses comment-keyword DMs; YouTube wants a one-word comment + subscribe.
- The CTA should feel like a favor to the reader, not a favor to you.

03Live demo: plan a QA post and lint it

The plan starts filled with a sample QA topic. Change the hook pattern to load the repo's example line for it, edit any field, and watch the Final gate. Then generate a draft for LinkedIn or Instagram and edit it: the pre-publish checks rerun on every keystroke. Try the offer rungs too: the LinkedIn template wants the post to end on a specific PS question, so rungs 2 to 5 fail that one check there, while the Instagram caption takes any single CTA.

Post planner: Hook, Story, Offer, then lint the draftNo API key needed
1. The plan (00_Hook_Story_Offer_Planning.md)
Final gate: 0 / 8
    2. Draft for a platform (the repurpose map)
    data-testid=ct-patterndata-testid=ct-one-ideadata-testid=ct-platformdata-testid=ct-generatedata-testid=ct-draftdata-testid=ct-reset
    3. Pre-publish checks: 0 / 8
      No model runs here. The draft is assembled from the plan by the repurpose map, and every check is a text rule taken from the templates (word counts, arrows, hashtags, the 11 banned phrases). That is the point: these checks are cheap, deterministic and worth running on whatever an LLM writes. The proof line is the planning sheet's own example of a specific number; in a real post, use your own real numbers.

      04Plan once, repurpose everywhere

      The chapter README's rule: you do not write seven things, you write one Hook, Story and Offer and bend it into seven formats.

      flowchart TD
        P["00 Hook, Story, Offer: plan the idea once"] --> YT["01 YouTube"]
        P --> RE["02 IG Reel"]
        P --> PO["03 IG Post"]
        P --> CA["04 Carousel"]
        P --> ME["05 Medium"]
        P --> BL["06 Blog"]
        P --> LI["07 LinkedIn"]
      The README's workflow: one plan feeds every platform template.

      The repurpose map says where each part of the plan lands on each platform:

      00_Hook_Story_Offer_Planning.md (lines 111-120)
      ## The repurpose map
      
      Once Hook · Story · Offer is locked, here's where each piece lands:
      
      | Plan element | YouTube | IG Reel | IG Post | Carousel | Medium | Blog | LinkedIn |
      |---|---|---|---|---|---|---|---|
      | **Hook** | 0–15s hook | Slide-1 text + first spoken line | First caption line | Slide 1 | Title + bold subtitle | H1 + intro | First 2 lines |
      | **Story** | Body beats | 2–4 quick beats | Caption body | Slides 2…N-1 | ## sections | ## sections | → arrow lines |
      | **Proof** | On-screen demo/code | Screen-record snippet | The image | A code/stat slide | Code blocks + sources | Code + data | One stat line |
      | **Offer** | One-word comment + subscribe | Comment-keyword DM | Caption CTA | Final slide CTA | Italic CTA | Inline + end CTA | First-comment link |
      Your 5,000 tests are not an asset. They're a liability. ...see more Every pull request waits on a suite. → Rerunning feels safe, so... → Quarantine flaky, delete dupes → Reduced runtime from 41s to 12s. Rerunning until green is not testing. The honest caveat: ... PS: Rerun or quarantine: which one? #SoftwareTesting #QA #SDET (5 to 7) HOOKfirst 2 lines earn "see more" STORYproblem, then → arrow lines proof: one stat line one screenshot-worthy line one honest caveat OFFERa specific PS question;links go in the first comment
      The LinkedIn column of the map, drawn as a post. The demo's generator builds exactly this shape.

      05Format rules you can check

      Most template rules are numbers or patterns, which makes them testable. These are the ones a script can check; the rest (voice, honesty, whether the idea is worth posting) still need a person.

      TemplateChecks you can automate
      07 LinkedInFirst 2 lines are the hook and not a statistic; → arrows, never bullets or numbered lists; under 280 words (sweet spot 220 to 260, a short cut of 140 to 200); a specific PS question, never "what do you think?"; 5 to 7 hashtags; no link in the body
      03 Instagram postHeadline on the image 8 words or fewer; caption line 1 works alone; one CTA; 5 to 10 hashtags; the same comment keyword across a Reel, Carousel and Post set
      02 Instagram Reel15 to 45 s at 9:16 (1080×1920), 15 to 30 s target; on-screen hook of 3 to 6 words in frame 1; spoken hook inside 3 s; 2 to 4 beats; subtitles on
      04 Carousel7 to 9 slides at 4:5 (1080×1350); slide 1 headline 8 words or fewer; one idea per slide; at least one proof slide; final slide = thesis + comment-keyword CTA
      01 YouTubeHook in 0:00 to 0:15, about 50 words at most; intro done by 0:45; a one-word comment CTA in the outro; thumbnail text of 3 to 5 words
      05 Medium1,500 to 3,500 words; title of 8 to 15 words; a bold subtitle with 3 to 5 real numbers; ## The Honest Caveats and ## The Bottom Line present; 5 tags
      06 BlogTitle tag 60 characters or fewer; meta description 155 or fewer; keyword in the title tag, H1, slug, first 100 words and at least one H2; 2 to 4 internal links and 1 or 2 outbound
      Every templateNone of the 11 banned phrases; no emojis (1 or 2 at most); no fabricated numbers
      README.md (lines 57-59): the banned phrases
      - **Banned phrases** (never use): *game-changer, leverage, dive deep, in today's fast-paced
        world, it's no secret, unleash, revolutionize, cutting-edge, synergy, supercharge,
        unlock the power.*

      06The files, and how to run the routine

      Everything is in chapter_06_AI_Social_Media_Content_Creation. The top-level README's requirements for this chapter: nothing but a Markdown editor and any LLM.

      FileWhat it holdsIts built-in check
      README.mdThe workflow, the template index, the universal voice rules and how to use the templates with an AI assistantThe 3-question sanity check
      00_Hook_Story_Offer_Planning.mdOne-line idea, 6 hook patterns, the story spine, the offer ladder, the repurpose mapFinal gate (8 checks)
      01_YouTube_Video_Template.mdTiming table, title options, hook, intro, beats with visual notes, outro, thumbnailPre-publish checklist
      02_Instagram_Reel_Template.mdReel anatomy by the second, on-screen text, caption, production notesPre-publish checklist
      03_Instagram_Post_Template.mdThree image types, headline, caption skeleton and rulesPre-publish checklist
      04_Instagram_Carousel_Template.mdSlide map, keyword auto-DM block, design specPre-publish checklist
      05_Medium_Article_Template.mdA 10-part structure with mandatory Honest CaveatsPre-publish checklist
      06_Blog_Post_Template.mdKeyword and intent, an 11-part SEO structureOn-page SEO checklist
      07_LinkedIn_Post_Template.mdFormat rules, hook patterns, skeleton, how to publish for reachPre-publish checklist
      prompt to paste into any LLM
      [paste your filled 00_Hook_Story_Offer_Planning.md]
      
      [paste 07_LinkedIn_Post_Template.md, or another platform template]
      
      Write the LinkedIn piece using this plan and these template rules.
      Follow the format exactly. No banned phrases.
      00_Hook_Story_Offer_Planning.md (lines 124-135)
      ## Final gate (before you open any platform template)
      
      - [ ] Idea fits in one sentence
      - [ ] Hook stops the scroll in 3 seconds (and it's not a stat)
      - [ ] Exactly one core idea
      - [ ] At least one real proof point (number / code / demo)
      - [ ] One screenshot-worthy line
      - [ ] One honest caveat
      - [ ] Exactly one primary offer
      - [ ] No banned phrases
      
      Pass all eight → go to the platform templates.

      07What to watch

      • There is no expected output in the repo. The chapter ships templates, not generated posts. Judge a model's draft by the checklists, never by "it reads well".
      • Numbers must be real. The README: never fabricate a statistic; if a claim needs a source you do not have, cut it. The template examples ("41s to 12s", "80%") show the shape of a hook or proof, not facts to reuse.
      • A model will still use banned phrases. Saying "no banned phrases" lowers the rate; it does not make it zero. A ten-line check like the demo's catches what slips through.
      • Run the sanity check before shipping. Does it sound like a senior colleague over chai? Would a serious professional nod or wince? Will the audience use it, or is it clickbait? All three must pass.
      • Match the offer to the platform. LinkedIn hides body links (the link goes in the first comment), Instagram uses comment-keyword DMs, YouTube asks for a one-word comment and a subscribe.
      • Keep one keyword per set. A Reel, a Carousel and a Post that go out together reuse the same new comment keyword.
      • The brand-voice file is elsewhere. The Testing Academy voice guide used by the n8n content workflow lives in chapter 4 (skillfile_content_generation/brand-voice.md), not in this folder.