Back Office · office.temerarii.xyz
Hyper-accelerate revenue & attention for your brand. — minus the hype.
Media › 2026 · Week 52
Temerarii Media · Back office

2026 · Week 52 — media

This is the open machine’s actual output — not a demo. One brief in content-index.json → the agent composes, renders, certifies, and ships every asset below. See it run here; run it yourself — the whole engine is open source. Each card links back to its storyboard (the brief + the exact composition). Built by Dom Davis. Minus the hype.
SundayMondayTuesdayWednesdayThursdayFridaySaturday

Long-form video — YouTube + LinkedIn · drops Sunday

social · cell · ⟁ Nuntius
Stop copying a stranger's stack
pending render
16:9 · YouTube (long-form)
cuts · 12LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel+ Email (Resend, owned list) · SMS / MMS (Twilio) · Blog (static .xyz + Duda .com)
storyboard → brief + scenes
performance · cell · ⟁ Mensor
The measurable stack
pending render
16:9 · YouTube (long-form)
cuts · 12LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel+ Email (Resend, owned list) · SMS / MMS (Twilio) · Blog (static .xyz + Duda .com)
storyboard → brief + scenes
performance · cell · ⟁ Mensor
Who owns the pilot afterwards?
pending render
16:9 · YouTube (long-form)
cuts · 12LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel+ Email (Resend, owned list) · SMS / MMS (Twilio) · Blog (static .xyz + Duda .com)
storyboard → brief + scenes

Sunday · open day →

brand · Email Hero GIF · ⟁ Signum
Owned compounds, rented resets
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
it dev · longform · ⟁ Faber
The chain gate
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
performance · SEO · ⟁ Mensor
Affiliate links nobody clicks
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
multimedia · Screenwriting · ⟁ Lumen
AI writes your screenplay now
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
it dev · Cyber Security · ⟁ Faber
Brand guide in a PDF nobody opens
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · Email · ⟁ Mensor
Content strategy is a routing problem
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead

Monday · open day →

brand · Email Hero GIF · ⟁ Signum
You own the list
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
performance · longform · ⟁ Mensor
Two brands, two scoreboards
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
performance · Marketplace · ⟁ Mensor
Your marketplace has a traffic problem.
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
multimedia · Interviews & Discussion · ⟁ Lumen
Posting by gut feel
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
it dev · Accessibility · ⟁ Faber
Accessibility audits take weeks. Not anymore.
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · SMS · ⟁ Mensor
Writers staring at a blank page
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · Minus the Hype · ⟁ Mensor
"MCP connects everything by magic"
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead

Tuesday · open day →

brand · Email Hero GIF · ⟁ Signum
A scalpel, not a megaphone
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
brand · longform · ⟁ Signum
The powers: a mythology written as rules
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
brand · SMS GIF · ⟁ Signum
Highest open rate, lowest patience
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ SMS / MMS (Twilio)
storyboard → brief + scenes
performance · Influencer · ⟁ Mensor
A logo that only works one place
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
multimedia · Event Coverage · ⟁ Lumen
Events happen once. You capture them forever.
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
staff training · Growth & Performance Marketing · ⟁ Magister
AI bolted on as a buzzword
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · Ask the Operator · ⟁ Mensor
IT dev still runs on tickets
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
strategic relations · The Stack · ⟁ Nexus
Perplexity won't cite cleanly
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
SMS / MMS (Twilio)
The day's text — SmsMms · rendered at send
  • Bodyauthored ≤ 160 chars including the opt-out — but that is the GSM-7 limit. One emoji or one curly apostrophe flips the message to UCS-2 and the real limit is 70. One idea, one link.
  • MMS loop 720×720 the 1:1 cut as a short loop; a still if the carrier strips motion
  • Linkauthored one shortened link with the UTM spine, to a door
rules · body ≤ 160 incl. opt-out · encoding: GSM-7 → 160 in one message, 153 per segment when concatenated; UCS-2 → 70 and 67. One emoji or one curly apostrophe (’ “ ” — …) flips the whole message to UCS-2 and drops the limit 160 → 70 · segments: 1 — past the single-message limit for its encoding the message is billed as 2+ segments and any carrier that does not reassemble truncates it · HELP and STOP both answered — US carriers (CTIA messaging principles) require the HELP keyword alongside opt-out, not STOP alone · quiet hours (recipient zone) · sender id registered · 2 per week (Tue · Fri) · list = receipts only
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead

Wednesday · open day →

brand · Email Hero GIF · ⟁ Signum
Slow, then the cheapest traffic
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
multimedia · longform · ⟁ Lumen
The library you can see
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
performance · SaaS · ⟁ Mensor
Animating frame by frame
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
social · Social Strategy · ⟁ Nuntius
Spray-and-pray press releases
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
staff training · Data & Analytics for Marketers · ⟁ Magister
AR demos that needed an app
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · Copywriting · ⟁ Mensor
A logo people called the brand
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · Build Log · ⟁ Mensor
Shipped: an asset compliance audit
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead

Thursday · open day →

brand · Email Hero GIF · ⟁ Signum
Retention, partners, and the install
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
emerging tech · New Year's Eve · ⟁ Augur
What's next, before everyone
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 12LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel+ Email (Resend, owned list) · SMS / MMS (Twilio) · Blog (static .xyz + Duda .com)
storyboard → brief + scenes
social · longform · ⟁ Nuntius
What the platforms will tell you, and
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
brand · Branding · ⟁ Signum
Stock art that fits nobody
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
social · Content Creation · ⟁ Nuntius
Partnerships that were just logos
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
emerging tech · Artificial Intelligence · ⟁ Augur
JPEGs sold as ownership
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
brand · Minus the Hype · ⟁ Signum
"AI personalizes the whole site"
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead

Friday · open day →

brand · Email Hero GIF · ⟁ Signum
Performance is a stack
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
strategic relations · longform · ⟁ Nexus
The case study, written from receipts
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
brand · SMS GIF · ⟁ Signum
The pillar wraps here
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ SMS / MMS (Twilio)
storyboard → brief + scenes
brand · Creative Conception · ⟁ Signum
Receipts thrown straight in the bin
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
strategic relations · Public Relations · ⟁ Nexus
PR is just sending emails, right?
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
emerging tech · Machine Learning · ⟁ Augur
Contracts that needed a clerk
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
performance · SaaS · ⟁ Mensor
AI is a tool, not a wizard
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
multimedia · Receipts · ⟁ Lumen
1 logo. 24 motions.
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
SMS / MMS (Twilio)
The day's text — SmsMms · rendered at send
  • Bodyauthored ≤ 160 chars including the opt-out — but that is the GSM-7 limit. One emoji or one curly apostrophe flips the message to UCS-2 and the real limit is 70. One idea, one link.
  • MMS loop 720×720 the 1:1 cut as a short loop; a still if the carrier strips motion
  • Linkauthored one shortened link with the UTM spine, to a door
rules · body ≤ 160 incl. opt-out · encoding: GSM-7 → 160 in one message, 153 per segment when concatenated; UCS-2 → 70 and 67. One emoji or one curly apostrophe (’ “ ” — …) flips the whole message to UCS-2 and drops the limit 160 → 70 · segments: 1 — past the single-message limit for its encoding the message is billed as 2+ segments and any carrier that does not reassemble truncates it · HELP and STOP both answered — US carriers (CTIA messaging principles) require the HELP keyword alongside opt-out, not STOP alone · quiet hours (recipient zone) · sender id registered · 2 per week (Tue · Fri) · list = receipts only
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead

Saturday · open day →

brand · Email Hero GIF · ⟁ Signum
Two weeks on performance, done
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 1+ Email (Resend, owned list)
storyboard → brief + scenes
staff training · longform · ⟁ Magister
Qualify on the work you have already
pending render
16:9 · YouTube (long-form)
cuts · 2YouTube Shorts 9:16 · 60s · SceneReel+ Blog (static .xyz + Duda .com)
storyboard → brief + scenes
brand · Illustration · ⟁ Signum
Posting whatever came to mind
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
strategic relations · Publicist · ⟁ Nexus
Six months to a maybe
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
emerging tech · Virtual Reality · ⟁ Augur
Sensors that just blinked
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
brand · Logo Identity · ⟁ Signum
Social content. You make it by hand.
pending render
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
staff training · Field Notes · ⟁ Magister
One blast, everyone bored
9:16 · TikTok · Instagram Reels · YouTube Shorts · Facebook Reels · Stories · Threads · Pinterest
pending render
1:1 · Instagram feed · Facebook · X/Twitter · Bluesky · LinkedIn feed
pending render
16:9 · YouTube · X card · LinkedIn video · Blog (embed)
cuts · 9LinkedIn 1:1 · 120s · LinkedInDocX 1:1 · 120s · XThreadCardYouTube Shorts 9:16 · 60s · SceneReelInstagram (Reels · feed) 9:16 · 90s · StoryReelFacebook (Reels · feed) 9:16 · 90s · SceneReelThreads 1:1 · 90s · SceneReelTikTok 9:16 · 60s · TikTokNativePinterest 9:16 · 60s · PinterestPinBluesky 1:1 · 60s · SceneReel
storyboard → brief + scenes
Email (Resend, owned list)
The day's note — EmailBlockStack · rendered at send
  • header 600×300 [html/image] · logo + nav; links live; dark-mode safe
  • hero 600×600 [gif/image/html-motion] · the week's 1:1 cut as a loop, first-frame poster fallback, alt text, hosted URL
  • secondary 600×400 [html/image/gif] · the one promise in copy, single accent; optional
  • tertiary 600×250 [html] · the DOOR - a bulletproof button to the segment's door with the UTM spine; never a generic 'learn more'
  • footer 600×200 [html] · logo · links · unsubscribe · NAP
  • From nameauthored the name the inbox shows BEFORE the subject, and the first thing a reader decides on. Keep it the same across sends — changing it costs the recognition that earns the open. Never 'noreply'.
  • Subjectauthored ≤ 50 chars
  • Preheaderauthored ≤ 90 chars; finishes the subject's sentence
  • Bodyauthored the day's letter; reads-at-the-kitchen-table register
  • CTA doorauthored a segment door id; the tertiary block renders it
  • Hero assetauthored the hosted GIF URL + poster + alt text
  • Plain-text twin derived from the body; every client gets one
rules · subject ≤ 50 · preheader ≤ 90 · from name set, and the same one as last send · dark mode tested · Outlook shows the poster (no GIF motion) · total HTML < 102 KB (Gmail clips) · plain-text twin present · list = contacts with a consent receipt only · send window = the recipient's morning in their zone, never one flat hour · List-Unsubscribe + List-Unsubscribe-Post on EVERY bulk send: `List-Unsubscribe: <https://…>, <mailto:…>` and `List-Unsubscribe-Post: List-Unsubscribe=One-Click`. Gmail and Yahoo have required one-click unsubscribe of bulk senders since February 2024; without the headers the mail is throttled or spam-foldered no matter how good the copy is. This is the HEADER, set at the send — NOT the same thing as the rule below, which is what happens after somebody clicks it. · unsubscribe honoured at the consent root · every link carries the UTM spine, not only the door — an untagged link in the body is a click the reporting never sees
test matrix · dark mode · Outlook desktop (poster) · Gmail mobile · Apple Mail (motion) · 102 KB clip check
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by executive-manager
Blog (static .xyz + Duda .com)
The week's article — Article
  • H1authored the episode's argument as a sentence; ≤ 70 chars
  • Meta descriptionauthored ≤ 155 chars and UNIQUE across the blog — the line the search result shows, written as a promise, NOT the first 155 characters of the lede. Change it and the SERP snippet changes; leave it derived and two articles that open alike collide (the 2026-08-25 crawl reported description_duplicate on 8 URLs).
  • Authorauthored the byline the page shows and the JSON-LD Person points at; must be a real person with a live author page (/blog/author/<slug>). An article with no named author is the E-E-A-T signal Google's quality guidance asks for and we do not send.
  • Published dateauthored ISO date; renders as article:published_time and BlogPosting.datePublished, and orders the listing and the sitemap <lastmod>. Move it and the article moves in the feed.
  • Updated dateauthored ISO date, only when the article actually changed; renders as BlogPosting.dateModified. Stamp it on an unchanged article and the freshness signal is a lie.
  • OG image 1200×630 the chapter card; no typed name
  • In-article hero 1600×900 optional
  • 16:9 video embed the week's 16:9 cut, in-article
  • Alt textauthored one line per in-article image, describing what the image SHOWS, not what it is called — the text a screen reader reads and the only thing an image search can read. An image authored with no alt text is not rendered.
  • Headingsauthored one per chapter; the scan tells the story
  • Canonical rel=canonical to the .xyz static page; syndication points back
  • Internal linksauthored links to other articles or office pages, in the body, beyond the door CTA — a page nothing links to is an orphan and the crawler reports it as one (sitemap_orphan). Every link carries the UTM spine.
  • Door linkauthored the segment door with the UTM spine, once, near the end
  • Schema (JSON-LD) Organization + Person(author) + BlogPosting + BreadcrumbList, derived from the layers above. NO templated FAQPage/HowTo — those rich results were deprecated in May 2026 and FAQPage is only honest where a visible Q&A exists. Change the author, dates or description and this changes with them, because it reads them.
  • Reading time derived
rules · h1 ≤ 70 · title UNIQUE across the blog (the ≤ 60-char SEO title, not just the h1 — two articles clamped to the same 60 characters are one page to a search engine) · meta description ≤ 155 and UNIQUE across the blog · author named, with a live author page · published date present; updated date only when the article changed · canonical present · one door link · at least one internal link in the body, beyond the door CTA · every image has alt text · JSON-LD present and derived from the authored layers (no hand-typed schema)
acceptance · gate verify_channel_specs.py#CHANNEL-SPECS PASS · review by creative-lead