x-post-engine — session receipts → post drafts
The playbook (docs/strategy/founder-content — the 6 formats): build log ·
documented failure · value post · receipt · contrast hook · milestone chapter.
Formats are commodity; the INVENTORY is the moat. This skill's job is extracting
the inventory from real work and drafting; the angle call stays with Max — that
is the one non-delegable step. Never post anything.
VOICE (applies to everything this skill produces): first person singular,
always — "I", never "we"; it's Max talking to his audience and it's intimate.
The agents are "my agents", the company decisions are "I decided". Written like
he talks: contractions, short sentences, direct address ("you"), asides allowed.
Read each draft aloud in your head — if a sentence can't be SAID naturally,
rewrite it. Best practices still hold underneath (numbers, hooks, receipts);
verbal delivery, disciplined structure.
Inputs
The current session's events, or a named event/topic. Best sources: what shipped,
what broke, what a number proves, what an agent did that humans find surprising.
Before drafting, read the Patterns section of docs/strategy/x-vault.md if it
exists (only Patterns — the corpus below it is raw evidence, skip it). Patterns are
market-validated structure (hooks, pacing, number use); apply them to the framing,
never let them override Max's voice or the format rules below.
Information gain (optional — value posts + long-form only)
When a draft would land harder with an ORIGINAL founder story or real number
that isn't this session's own receipt, invoke the information-gain skill
(.claude/skills/information-gain) with the topic: it mines a niche YouTube
transcript into a cited source brief (a real figure / failure / decision that
exists nowhere else in writing). Weave in at most one, embed or link the
source video, and only state numbers the transcript actually says. Skip this
for build-logs and scars — those run on this session's own receipts, never mined
material. Never let a mined number become a [FILL]-style fabrication.
Produce (append to docs/strategy/x-drafts/YYYY-MM-DD.md)
2-3 drafts, each tagged with its format + the target keyword. Rules per draft:
- Keyword-first when the post has one (the GSC hack: X posts rank in Google —
"GoHighLevel pricing —" as the opening words, not buried). Not every post has a
keyword; build-logs and scars often don't. Never force it.
- One number with context beats three numbers. "113 SEO pages in one day" is
noise; "I typed 'build #1-8' and twelve AI agents shipped 113 pages to
production before dinner" is a post.
- Formats guide:
- Build log: what happened today, present tense, unpolished, ends with what's
next (people invest in unfinished things).
- Scar: the failure with the embarrassing specifics kept in; the fix in one line
at the end; never explain the lesson — let the reader get it.
- Value post: steps + the WHY behind each step (advice without reasoning is a
list); specific beats general ("how I got X" > "how to X").
- Receipt: the screenshot IS the post — one line of text max. GSC/Bing graphs,
revenue, the OG-card images from the calculators all qualify. Same graph
monthly = a series people follow.
- Contrast hook: two facts side by side, no explanation ("Solo founder. 12 AI
agents. 113 pages shipped today."), reader resolves the gap.
- Milestone: only with history to quote — quote the old post, add the new
number. Flag candidates for later, don't force early.
- Attach the visual when one exists — every draft gets a CREATIVE block,
one of two types (never blur the line between them):
- GENERATED — concept cards the loop renders itself (quote card, stat
card, loop diagram): write an HTML card in
docs/strategy/x-creatives/YYYY-MM-DD/<slug>.html and render with
node scripts/x-creative-shot.mjs <html> [--size WxH]. In-feed posts:
1200x675 (16:9). X Article covers and inline images: 5:2 — use
--size 1500x600. Styles that earn (from Max's bookmark corpus):
document-as-image (a real-looking typeset doc/field-notes page — borrowed
authority), workflow diagram with the REAL artifacts embedded and a
payoff at the end, vertical phone-screenshot receipt. Dark stat cards for
numbers. NEVER generate
anything that imitates an authentic capture — no fake terminal windows,
no fake analytics UIs, no fabricated numbers. Fabricated receipts break
never-lies; that rule outranks engagement.
- CAPTURE — real receipts only Max can take (terminal output, GSC/Bing
graphs, Stripe, the product). Spec it exactly: which app/window, which
content must be visible, what to crop, light/dark, and WHERE it goes
(image 1 / image 2 / cover). "Plainness is the receipt" — no beautifying.
- Paste-ready block — after each draft, a
PASTE-READY fenced block Max
can copy straight into X: Unicode sans-serif bold (𝗯𝗼𝗹𝗱) applied to AT MOST
the hook line or the one key number — never whole sentences (screen readers
read Unicode bold as garbage; sparing use is both taste and accessibility).
NEVER bold the keyword line — Unicode chars aren't ASCII, bolding the
keyword breaks its Google indexing. No underline in posts (renders
unreliably). Line breaks exactly as they should post.
- Plain words. No hashtags. No "excited to announce". No em-dash chains — X
posts read spoken.
- End the file with: "Pick one, adjust the angle, post. Repost winners in 6-8
weeks with updated numbers; quote-tweet anything that runs."
Long-form mode (X Article / blog, 1,500-2,000 words)
When invoked with "article" (or by the weekly loop), ALSO produce ONE long-form
draft in docs/strategy/x-articles/YYYY-MM-DD-<slug>.md. Rules:
- One article = one build with its receipts. Never a listicle of tips; the
piece walks through something real we shipped, numbers kept in, failures kept
in. The short-post formats scale up: a scar or value post at essay length.
- Structure: hook (a number or a contradiction, first two sentences) → the
problem as lived → the build in chronological order → what the numbers say →
honest limits (what didn't work / what we don't know yet) → what's next.
The honest-limits section is mandatory — it's the never-lies positioning in
long form and the section readers quote.
- Vault Patterns apply to the hook, the section openers, and every number
(one number with context per point). Plain words, spoken rhythm, short
paragraphs (X Articles render wide — 2-3 sentences per paragraph max).
The article body must be PASTE-CLEAN plain text: zero markdown symbols —
no #, ##, **, *, backticks, or bullet dashes anywhere in the body (they
don't convert when pasted into the X editor and they scream AI). Section
headings are short plain lines on their own; the FORMATTING MAP lists them
so Max can style them as headings in the editor. Wrap the body between
===== ARTICLE BODY (paste everything between these lines) ===== markers;
file metadata, the map, and tweets live OUTSIDE the markers.
- Title = the article's best number or contradiction in the first six
words; keyword up front when one exists (X Articles rank in Google);
subtitle carries the second-best hook. Always provide 3 alternates in a
comment under the title: A search-first (keyword leads), B feed-first
(number or scar leads), C contrarian one-liner. Max picks per surface.
- End with one line pointing at SeldonFrame only if the article earned it —
the build IS the pitch; never bolt on a CTA.
- Word count 1,500-2,000. Under 1,200 = make it a post instead; over 2,400 =
cut the weakest section. Drafts only — Max posts manually (X Articles need
Premium+ and his editorial pass).
- Formatting map + creatives: X Articles have a real rich-text editor, so
no Unicode tricks — end the article file with a FORMATTING MAP (exact lines
to bold / italicize / underline in the editor, cover image, and where each
inline image goes) plus CREATIVE blocks per the post rules above (GENERATED
cards rendered to docs/strategy/x-creatives/, CAPTURE specs for receipts).
- Concept visual (the sauce, drawn): every article gets 1-2 GENERATED
diagrams that let a reader grasp the core mechanism from the image alone —
flowchart of the loop, stack diagram, production line. Rules: (a) REAL
specifics embedded (actual file names, numbers, tool names) — a generic
boxes-and-arrows chart is AI slop and forbidden; (b) pass the rebuild test:
someone could reconstruct the system from the diagram; (c) @themaxthule on
the card — screenshots travel without attribution otherwise; (d) 5:2 via
x-creative-shot.mjs --size 1500x600; (e) place it right after the section
that explains the mechanism. Corpus evidence: the 5-ads workflow diagram
with real artifacts did 1.1k likes / 901 replies — the diagram WAS the post.
- Steal-this-prompt block: near the end of the body (before the closing),
a plain-text prompt the reader can paste into their own LLM/agent to
reproduce the build, delimited by "Copy everything between the lines" lines.
Must be honestly runnable — test-shaped, concrete, no pseudo-prompt filler
(never-lies applies to giveaways). This converts readers into repliers
("it worked") and is the never-taxes distribution mechanic: give the sauce,
sell the platform.
- 3 supporting tweets per article (in the same file, SUPPORTING TWEETS
section, paste-ready): these are quote-reposts OF the article across the
week — each takes a DIFFERENT door in: one number hook, one scar/insight
line, one contrarian or value take. Never three rewordings of the title.
Spacing note per tweet (e.g. "day 2 evening", "day 4 morning").
- Cadence: 5 articles/week, each anchored to a real build from the week —
the session logs, docs/learnings/, and the loops Max pastes into Claude Code
daily are all legitimate build material. If a receipt (number, timing, cost)
isn't in the material, mark it
[FILL: what's needed] for Max — never
invent a receipt to complete an article.
Cadence memory
Track (top of the drafts file) which formats ran recently — rotate; the receipt
series (GSC/Bing graph) is monthly, anchored to real data only. Articles are
weekly at most — skip the week if no build earned one; a forced article reads
forced.
1---2name: x-post-engine3description: Mine the current work session (or a named event) into 2-3 draft X posts using the 6 founder-content formats, keyword-first. Drafts only — Max makes the angle call and posts. Invoke at the end of a build session or with a topic.4---56# x-post-engine — session receipts → post drafts78The playbook (docs/strategy/founder-content — the 6 formats): build log ·9documented failure · value post · receipt · contrast hook · milestone chapter.10Formats are commodity; the INVENTORY is the moat. This skill's job is extracting11the inventory from real work and drafting; **the angle call stays with Max** — that12is the one non-delegable step. Never post anything.1314**VOICE (applies to everything this skill produces):** first person singular,15always — "I", never "we"; it's Max talking to his audience and it's intimate.16The agents are "my agents", the company decisions are "I decided". Written like17he talks: contractions, short sentences, direct address ("you"), asides allowed.18Read each draft aloud in your head — if a sentence can't be SAID naturally,19rewrite it. Best practices still hold underneath (numbers, hooks, receipts);20verbal delivery, disciplined structure.2122## Inputs23The current session's events, or a named event/topic. Best sources: what shipped,24what broke, what a number proves, what an agent did that humans find surprising.2526Before drafting, read the **Patterns** section of `docs/strategy/x-vault.md` if it27exists (only Patterns — the corpus below it is raw evidence, skip it). Patterns are28market-validated structure (hooks, pacing, number use); apply them to the framing,29never let them override Max's voice or the format rules below.3031## Information gain (optional — value posts + long-form only)32When a draft would land harder with an ORIGINAL founder story or real number33that isn't this session's own receipt, invoke the **`information-gain` skill**34(`.claude/skills/information-gain`) with the topic: it mines a niche YouTube35transcript into a cited source brief (a real figure / failure / decision that36exists nowhere else in writing). Weave in at most one, **embed or link the37source video**, and only state numbers the transcript actually says. Skip this38for build-logs and scars — those run on this session's own receipts, never mined39material. Never let a mined number become a `[FILL]`-style fabrication.4041## Produce (append to `docs/strategy/x-drafts/YYYY-MM-DD.md`)42432-3 drafts, each tagged with its format + the target keyword. Rules per draft:44451. **Keyword-first when the post has one** (the GSC hack: X posts rank in Google —46 "GoHighLevel pricing —" as the opening words, not buried). Not every post has a47 keyword; build-logs and scars often don't. Never force it.482. **One number with context beats three numbers.** "113 SEO pages in one day" is49 noise; "I typed 'build #1-8' and twelve AI agents shipped 113 pages to50 production before dinner" is a post.513. **Formats guide:**52 - Build log: what happened today, present tense, unpolished, ends with what's53 next (people invest in unfinished things).54 - Scar: the failure with the embarrassing specifics kept in; the fix in one line55 at the end; never explain the lesson — let the reader get it.56 - Value post: steps + the WHY behind each step (advice without reasoning is a57 list); specific beats general ("how I got X" > "how to X").58 - Receipt: the screenshot IS the post — one line of text max. GSC/Bing graphs,59 revenue, the OG-card images from the calculators all qualify. Same graph60 monthly = a series people follow.61 - Contrast hook: two facts side by side, no explanation ("Solo founder. 12 AI62 agents. 113 pages shipped today."), reader resolves the gap.63 - Milestone: only with history to quote — quote the old post, add the new64 number. Flag candidates for later, don't force early.654. **Attach the visual** when one exists — every draft gets a CREATIVE block,66 one of two types (never blur the line between them):67 - **GENERATED** — concept cards the loop renders itself (quote card, stat68 card, loop diagram): write an HTML card in69 `docs/strategy/x-creatives/YYYY-MM-DD/<slug>.html` and render with70 `node scripts/x-creative-shot.mjs <html> [--size WxH]`. **In-feed posts:71 1200x675 (16:9). X Article covers and inline images: 5:2 — use72 `--size 1500x600`.** Styles that earn (from Max's bookmark corpus):73 document-as-image (a real-looking typeset doc/field-notes page — borrowed74 authority), workflow diagram with the REAL artifacts embedded and a75 payoff at the end, vertical phone-screenshot receipt. Dark stat cards for76 numbers. NEVER generate77 anything that imitates an authentic capture — no fake terminal windows,78 no fake analytics UIs, no fabricated numbers. Fabricated receipts break79 never-lies; that rule outranks engagement.80 - **CAPTURE** — real receipts only Max can take (terminal output, GSC/Bing81 graphs, Stripe, the product). Spec it exactly: which app/window, which82 content must be visible, what to crop, light/dark, and WHERE it goes83 (image 1 / image 2 / cover). "Plainness is the receipt" — no beautifying.845. **Paste-ready block** — after each draft, a `PASTE-READY` fenced block Max85 can copy straight into X: Unicode sans-serif bold (𝗯𝗼𝗹𝗱) applied to AT MOST86 the hook line or the one key number — never whole sentences (screen readers87 read Unicode bold as garbage; sparing use is both taste and accessibility).88 NEVER bold the keyword line — Unicode chars aren't ASCII, bolding the89 keyword breaks its Google indexing. No underline in posts (renders90 unreliably). Line breaks exactly as they should post.916. Plain words. No hashtags. No "excited to announce". No em-dash chains — X92 posts read spoken.937. End the file with: "Pick one, adjust the angle, post. Repost winners in 6-894 weeks with updated numbers; quote-tweet anything that runs."9596## Long-form mode (X Article / blog, 1,500-2,000 words)97When invoked with "article" (or by the weekly loop), ALSO produce ONE long-form98draft in `docs/strategy/x-articles/YYYY-MM-DD-<slug>.md`. Rules:991001. **One article = one build with its receipts.** Never a listicle of tips; the101 piece walks through something real we shipped, numbers kept in, failures kept102 in. The short-post formats scale up: a scar or value post at essay length.1032. **Structure:** hook (a number or a contradiction, first two sentences) → the104 problem as lived → the build in chronological order → what the numbers say →105 honest limits (what didn't work / what we don't know yet) → what's next.106 The honest-limits section is mandatory — it's the never-lies positioning in107 long form and the section readers quote.1083. Vault Patterns apply to the hook, the section openers, and every number109 (one number with context per point). Plain words, spoken rhythm, short110 paragraphs (X Articles render wide — 2-3 sentences per paragraph max).111 **The article body must be PASTE-CLEAN plain text**: zero markdown symbols —112 no #, ##, **, *, backticks, or bullet dashes anywhere in the body (they113 don't convert when pasted into the X editor and they scream AI). Section114 headings are short plain lines on their own; the FORMATTING MAP lists them115 so Max can style them as headings in the editor. Wrap the body between116 `===== ARTICLE BODY (paste everything between these lines) =====` markers;117 file metadata, the map, and tweets live OUTSIDE the markers.1184. **Title = the article's best number or contradiction in the first six119 words**; keyword up front when one exists (X Articles rank in Google);120 subtitle carries the second-best hook. Always provide 3 alternates in a121 comment under the title: A search-first (keyword leads), B feed-first122 (number or scar leads), C contrarian one-liner. Max picks per surface.1235. End with one line pointing at SeldonFrame only if the article earned it —124 the build IS the pitch; never bolt on a CTA.1256. Word count 1,500-2,000. Under 1,200 = make it a post instead; over 2,400 =126 cut the weakest section. Drafts only — Max posts manually (X Articles need127 Premium+ and his editorial pass).1287. **Formatting map + creatives:** X Articles have a real rich-text editor, so129 no Unicode tricks — end the article file with a FORMATTING MAP (exact lines130 to bold / italicize / underline in the editor, cover image, and where each131 inline image goes) plus CREATIVE blocks per the post rules above (GENERATED132 cards rendered to docs/strategy/x-creatives/, CAPTURE specs for receipts).1338. **Concept visual (the sauce, drawn):** every article gets 1-2 GENERATED134 diagrams that let a reader grasp the core mechanism from the image alone —135 flowchart of the loop, stack diagram, production line. Rules: (a) REAL136 specifics embedded (actual file names, numbers, tool names) — a generic137 boxes-and-arrows chart is AI slop and forbidden; (b) pass the rebuild test:138 someone could reconstruct the system from the diagram; (c) @themaxthule on139 the card — screenshots travel without attribution otherwise; (d) 5:2 via140 x-creative-shot.mjs --size 1500x600; (e) place it right after the section141 that explains the mechanism. Corpus evidence: the 5-ads workflow diagram142 with real artifacts did 1.1k likes / 901 replies — the diagram WAS the post.1439. **Steal-this-prompt block:** near the end of the body (before the closing),144 a plain-text prompt the reader can paste into their own LLM/agent to145 reproduce the build, delimited by "Copy everything between the lines" lines.146 Must be honestly runnable — test-shaped, concrete, no pseudo-prompt filler147 (never-lies applies to giveaways). This converts readers into repliers148 ("it worked") and is the never-taxes distribution mechanic: give the sauce,149 sell the platform.15010. **3 supporting tweets per article** (in the same file, SUPPORTING TWEETS151 section, paste-ready): these are quote-reposts OF the article across the152 week — each takes a DIFFERENT door in: one number hook, one scar/insight153 line, one contrarian or value take. Never three rewordings of the title.154 Spacing note per tweet (e.g. "day 2 evening", "day 4 morning").15511. **Cadence: 5 articles/week, each anchored to a real build from the week** —156 the session logs, docs/learnings/, and the loops Max pastes into Claude Code157 daily are all legitimate build material. If a receipt (number, timing, cost)158 isn't in the material, mark it `[FILL: what's needed]` for Max — never159 invent a receipt to complete an article.160161## Cadence memory162Track (top of the drafts file) which formats ran recently — rotate; the receipt163series (GSC/Bing graph) is monthly, anchored to real data only. Articles are164weekly at most — skip the week if no build earned one; a forced article reads165forced.