Blog Production
End-to-end workflow for producing a published blog article on the Clarido blog. Takes a topic from ideation through research, writing, voice analysis, illustration, and verification.
Invoked by the user with /blog-production or when asked to write/create a new blog post.
Repos
- Landing page (where blog lives):
~/dev/clarido-landing-page/
- Articles:
~/dev/clarido-landing-page/content/blog/{slug}.md
- Illustrations:
~/dev/clarido-landing-page/public/blog/{slug}.png
- Blog engine:
~/dev/clarido-landing-page/lib/blog.ts
- Blog post page:
~/dev/clarido-landing-page/app/blog/[slug]/page.tsx
- Blog index:
~/dev/clarido-landing-page/app/blog/page.tsx
- Marketing ops (where tools live):
~/dev/clarido-marketing/
- Voice analyzer:
scripts/blog/ai_voice_analyzer.py
- Illustration generator (reuse pattern):
scripts/tiktok/illustrations.py
Workflow with Approval Gates
Phase 1: Topic & Angle (user approves)
The user may invoke this skill in two ways:
- With a topic: User provides a specific concept, keyword, or idea.
- Without a topic: Claude proposes 2-3 options based on the target audience.
- Dedup check -- Read all files in
~/dev/clarido-landing-page/content/blog/ to avoid repeating topics.
- Topic selection -- Pick topics at the intersection of:
- Psychology, neuroscience, or behavioral science (must have real research behind it)
- Relevance to Clarido's audience: overthinkers, people in transition, people who carry too much in their heads
- SEO opportunity: topics people actually search for (brain dump, overthinking, journaling, mental clarity, decision fatigue, cognitive load, etc.)
- Define the angle -- Not just "what" but "why it's interesting." Every article needs a core insight that makes the reader think differently. Not a listicle, not a how-to guide. An essay that builds an argument.
- Present to user -- Topic, angle, working title, 1-sentence thesis. Wait for approval.
Phase 2: Research (automated)
Find 4-6 real academic studies that support the article's argument. Requirements:
- Real authors, real journals, real years
- Use WebSearch to verify each citation exists
- Prefer landmark/foundational studies (they're more interesting to read about)
- Include: author(s), year, paper title, journal name, volume/issue/pages if available
- Mix of classic studies (establishes credibility) and recent ones (shows the field is active)
Build a research brief -- For each study, write 1-2 sentences summarizing the key finding that's relevant to the article. This becomes the raw material for weaving research into the prose.
Phase 3: Writing (user approves)
Write the article following the style guide below. Target 1,500-2,200 words (7-10 min read).
Save to ~/dev/clarido-landing-page/content/blog/{slug}.md with proper frontmatter:
---
title: "Full Title Here"
description: "1-2 sentence hook for SEO/social. Should make someone want to click."
date: YYYY-MM-DD # today's date
author: Clarido Team
tags: [primary-topic, secondary-topic, ...] # 3-5 tags for SEO
illustration: /blog/{slug}.png
---
Present the draft to the user and wait for approval before proceeding.
Phase 4: Voice Analysis & Polish (automated)
Run the voice analyzer:
pipenv run python3 scripts/blog/ai_voice_analyzer.py ~/dev/clarido-landing-page/content/blog/{slug}.md
Fix flagged issues -- Work through priority fixes. Target: overall score 85+, zero HIGH-severity flagged sentences.
Em dash sweep -- Search for any --- (em dashes) and replace with periods, commas, colons, or parentheses. Em dashes are a strong AI tell.
Re-run analyzer to confirm score meets threshold.
Phase 5: Illustration (automated)
Generate a blog hero illustration using OpenAI gpt-image-1.5. Use the Clarido brand illustration style:
- Simple white character with black outlines, gray watercolor shading
- Yellow (#FFD60A) as the only color accent
- Clean, minimal, conceptual (not literal)
- Soft gray wash texture, hand-drawn look
- Reference images:
assets/illustrations/overwhelmed-filing-cabinet.png, floating-yellow-balloon.png, planting-yellow-seedling.png
Use the same approach as scripts/tiktok/illustrations.py: pass reference images via images.edit(), prepend the STYLE_PREFIX, use quality="high".
Save to: ~/dev/clarido-landing-page/public/blog/{slug}.png
Dimensions: 1536x1024 (3:2 landscape). Unlike TikTok (portrait 1024x1536), blog illustrations are landscape.
Phase 6: Verify & Ship (automated)
Build the landing page to verify no errors:
cd ~/dev/clarido-landing-page && pnpm build
Start dev server:
cd ~/dev/clarido-landing-page && pnpm dev
Visual audit with Chrome browser automation. Use mcp__claude-in-chrome__ tools to:
- Navigate to
http://localhost:3000/blog/{slug}
- Read the page and verify:
- Article renders with all HTML components (cards, callouts, pull quotes, etc.)
- Illustration loads correctly
- Email capture form appears above references section
- No broken formatting, no raw HTML visible
- Typography, spacing, and layout look correct
- Internal links to other articles work
- Navigate to
http://localhost:3000/blog (index page) and verify:
- New article appears in the list
- Thumbnail/illustration shows
- Title, description, tags, and date display correctly
SEO & crawler audit. Using Chrome tools, verify:
- Check
http://localhost:3000/robots.txt — blog pages must NOT be disallowed
- Read the page source/meta tags on the article page:
<title> tag contains the article title
<meta name="description"> is present and meaningful
- No
<meta name="robots" content="noindex"> blocking crawlers
- Open Graph tags (
og:title, og:description, og:image) are present for social sharing
- If any crawler-blocking issues are found, fix them in the landing page code and rebuild
Push to production. In the landing page repo (~/dev/clarido-landing-page):
cd ~/dev/clarido-landing-page
git add content/blog/{slug}.md public/blog/{slug}.png
git commit -m "Publish blog: {article title}"
git push origin main
Include any other modified files (e.g., if SEO fixes were made to app/ or lib/ files).
Send notification email. Use mcp__google-workspace__send_gmail_message to email abhinav@jabhi.ca and joieta@jabhi.ca with:
- Subject:
New blog published: {article title}
- Body (keep it concise):
- 2-sentence brief summarizing the article and its angle
- Link to the live article:
https://clarido.app/blog/{slug}
- Target keywords: list the 5-8 SEO keywords this article targets (from the tags + content strategy)
- Internal links: list any other Clarido blog articles linked to from within this article (title + URL for each)
Report to user -- Share the live URL, final voice analyzer score, word count, and confirmation that the email was sent.
Writing Style Guide
The voice is Paul Graham meets quality journalism. Intellectual rigor in conversational prose, with modern visual formatting for scanability.
Prose Rules
| Rule |
Do |
Don't |
| Tone |
Conversational, curious, direct |
Academic, coaching, marketing |
| Perspective |
"you" to engage, "I" for opinions |
Impersonal third-person throughout |
| Contractions |
"don't", "it's", "you're", "can't" |
"do not", "it is", "you are" |
| Sentences |
Wild variation: 4-word fragments mixed with 30-word explorations |
Every sentence 15-20 words |
| Paragraphs |
One-liners mixed with longer blocks |
Uniform paragraph sizes |
| Openers |
Questions, fragments, "But", "And", prepositional phrases |
"The", "This", "It is" repeatedly |
| Research |
Woven into narrative: "In the 1920s, a psychologist named Bluma Zeigarnik noticed..." |
Announced: "Research shows that..." or "According to a study..." |
| Analogies |
Concrete, visual: "Think of it as a desk with room for four things" |
Abstract: "This can be compared to a multifaceted system" |
| Em dashes |
Never. Use periods, commas, colons, parentheses instead. |
"The answer is simple --- just write it down" |
| Hedge phrases |
Never. See the analyzer's HEDGE_PHRASES list. |
"It's important to note", "In today's world" |
| Questions |
5-10% of sentences. Rhetorical questions that make the reader feel seen. |
Zero questions (pure declaration) |
| Endings |
End with quiet resonance, not a CTA. The last paragraph should land. |
"So what are you waiting for? Try it today!" |
Structure Pattern
Don't follow a rigid template, but most good articles have this shape:
- Opening hook -- Start with something specific and interesting. A feeling, a paradox, a question. Not "In today's fast-paced world." Not a definition. Drop the reader into the middle of something.
- The problem/phenomenon -- What's actually going on? Build understanding through concrete details and analogies.
- The research -- Weave in 3-4 studies naturally. Name the researchers, tell the story of the finding, make the reader care about the science.
- The mechanism -- Why does this work? Go one level deeper than the surface explanation.
- The practical -- What can the reader do? But frame it as insight, not instruction. "The people who benefit most are the ones who..." not "Step 1: Do this."
- The close -- Tie back to the opening. Leave the reader thinking.
HTML Components
Use these sparingly to aid comprehension. They should feel earned, not decorative. The article should read well as pure text; components enhance, they don't carry.
Key Stat -- For one striking number that anchors the argument:
<div class="key-stat">
<span class="stat-number">4-7</span>
<span class="stat-label">items your working memory can hold at once. Recent research suggests the real number is closer to four.</span>
</div>
Pull Quote -- For a sentence that deserves emphasis. Use 1-2 per article max:
<blockquote class="pull-quote">
Your brain evolved to think, analyze, and solve problems. Not to be a filing cabinet.
</blockquote>
Card Grid -- For parallel concepts (2-4 items). Use when items are genuinely parallel:
<div class="card-grid">
<div class="card">
<h4>Title</h4>
<p>Description</p>
</div>
<!-- more cards -->
</div>
For 3 columns: add cols-3 class to the card-grid div.
Cards can optionally include <div class="card-example"> for italic examples.
Callout -- For a parenthetical tip or insight that doesn't fit the main flow:
<div class="callout">
<strong>Label (optional)</strong>
Content here.
</div>
Add insight class for insight-style callouts: <div class="callout insight">.
Comparison -- For before/after or contrasting approaches:
<div class="compare">
<div class="compare-bad">
<span class="compare-label">Label A</span>
"The bad example"
</div>
<div class="compare-good">
<span class="compare-label">Label B</span>
"The good example"
</div>
</div>
References Section
Every article ends with a references section. Format:
---
### References
- Author, A.B. (Year). "Paper Title." *Journal Name*, Volume(Issue), Pages.
- ...
---
*Clarido is a quiet log for a loud mind. Speak or type what's on your mind. Clarido holds it for you so you can return when you have space. [Join the beta](https://clarido.app)*
The references section gets automatically split from the main content by the blog engine. An email capture form appears between the article body and references.
Quality Gates
| Gate |
Threshold |
Action if failed |
| Voice analyzer overall score |
85+ |
Fix flagged issues, re-run |
| HIGH-severity flagged sentences |
0 |
Rewrite each flagged sentence |
| Em dashes |
0 |
Replace with periods/commas/colons/parens |
| Hedge phrases detected |
0 |
Delete every one |
| AI signal words detected |
0 |
Replace or cut |
| Readability grade |
6-10 |
Simplify vocabulary, shorten sentences |
| Questions asked |
5%+ of sentences |
Add rhetorical questions |
| Word count |
1,500-2,200 |
Expand thin sections or cut bloat |
Reference Article
The brain-dumping article is the gold standard for style, structure, and quality:
~/dev/clarido-landing-page/content/blog/brain-dumping-article.md
Read it before writing any new article. It scores 95/100 on the voice analyzer.
Topic Bank
Psychology and neuroscience concepts relevant to Clarido's audience. Each maps to search keywords people actually type:
| Concept |
Search Keywords |
Angle |
| Zeigarnik Effect |
overthinking at night, can't stop thinking |
Why unfinished tasks haunt you |
| Decision Fatigue |
decision fatigue, too many choices |
Why you can't decide anything by 8pm |
| Cognitive Offloading |
brain dump, write things down |
Your brain isn't meant to store things |
| Affect Labeling |
name your emotions, journaling anxiety |
Why naming the feeling makes it smaller |
| Implementation Intentions |
how to follow through, procrastination |
The planning trick that bypasses willpower |
| Attention Residue |
can't focus, distracted, task switching |
Why you're still thinking about the last thing |
| Peak-End Rule |
bad days, why do I feel bad |
You're judging your day by two moments |
| Expressive Writing |
journaling benefits, writing therapy |
Why writing about pain actually heals |
| Spotlight Effect |
social anxiety, self-conscious, overthinking social |
Nobody is thinking about you as much as you think |
| Ego Depletion (controversy) |
willpower, self-control, mental energy |
The willpower myth that won't die |
| Paradox of Choice |
overwhelmed by options, too many choices |
More options make you less happy |
| Bedtime Worry Journaling |
can't sleep, racing thoughts at night |
The 5-minute trick that fixes 3am anxiety |
Don't repeat topics already covered in existing blog posts.
Files
| File |
Repo |
Purpose |
content/blog/{slug}.md |
landing-page |
Article markdown with frontmatter |
public/blog/{slug}.png |
landing-page |
Hero illustration (1200x630) |
lib/blog.ts |
landing-page |
Blog engine (splits references, calculates reading time) |
app/blog/[slug]/page.tsx |
landing-page |
Blog post page template |
app/blog/[slug]/email-capture.tsx |
landing-page |
Email capture component (auto-inserted above references) |
app/blog/page.tsx |
landing-page |
Blog index page |
app/globals.css |
landing-page |
Blog component CSS (callout, card-grid, key-stat, pull-quote, compare) |
scripts/blog/ai_voice_analyzer.py |
marketing |
Voice analyzer script (19 dimensions) |
scripts/tiktok/illustrations.py |
marketing |
OpenAI gpt-image-1.5 illustration generator (reuse the pattern) |
assets/illustrations/ |
marketing |
Brand illustration style references (passed to OpenAI as style refs) |
1---2name: blog-production3description: Produce a complete blog article for Clarido from topic selection through published, voice-analyzed markdown with illustration. Use when creating new blog content.4---5
6# Blog Production
7
8End-to-end workflow for producing a published blog article on the Clarido blog. Takes a topic from ideation through research, writing, voice analysis, illustration, and verification.
9
10Invoked by the user with `/blog-production` or when asked to write/create a new blog post.
11
12## Repos
13
14- **Landing page** (where blog lives): `~/dev/clarido-landing-page/`
15 - Articles: `~/dev/clarido-landing-page/content/blog/{slug}.md`
16 - Illustrations: `~/dev/clarido-landing-page/public/blog/{slug}.png`
17 - Blog engine: `~/dev/clarido-landing-page/lib/blog.ts`
18 - Blog post page: `~/dev/clarido-landing-page/app/blog/[slug]/page.tsx`
19 - Blog index: `~/dev/clarido-landing-page/app/blog/page.tsx`
20- **Marketing ops** (where tools live): `~/dev/clarido-marketing/`
21 - Voice analyzer: `scripts/blog/ai_voice_analyzer.py`
22 - Illustration generator (reuse pattern): `scripts/tiktok/illustrations.py`
23
24## Workflow with Approval Gates
25
26### Phase 1: Topic & Angle (user approves)
27
28The user may invoke this skill in two ways:
29- **With a topic:** User provides a specific concept, keyword, or idea.
30- **Without a topic:** Claude proposes 2-3 options based on the target audience.
31
321. **Dedup check** -- Read all files in `~/dev/clarido-landing-page/content/blog/` to avoid repeating topics.
332. **Topic selection** -- Pick topics at the intersection of:
34 - Psychology, neuroscience, or behavioral science (must have real research behind it)
35 - Relevance to Clarido's audience: overthinkers, people in transition, people who carry too much in their heads
36 - SEO opportunity: topics people actually search for (brain dump, overthinking, journaling, mental clarity, decision fatigue, cognitive load, etc.)
373. **Define the angle** -- Not just "what" but "why it's interesting." Every article needs a core insight that makes the reader think differently. Not a listicle, not a how-to guide. An essay that builds an argument.
384. **Present to user** -- Topic, angle, working title, 1-sentence thesis. Wait for approval.
39
40### Phase 2: Research (automated)
41
425. **Find 4-6 real academic studies** that support the article's argument. Requirements:
43 - Real authors, real journals, real years
44 - Use WebSearch to verify each citation exists
45 - Prefer landmark/foundational studies (they're more interesting to read about)
46 - Include: author(s), year, paper title, journal name, volume/issue/pages if available
47 - Mix of classic studies (establishes credibility) and recent ones (shows the field is active)
48
496. **Build a research brief** -- For each study, write 1-2 sentences summarizing the key finding that's relevant to the article. This becomes the raw material for weaving research into the prose.
50
51### Phase 3: Writing (user approves)
52
537. **Write the article** following the style guide below. Target **1,500-2,200 words** (7-10 min read).
54
558. **Save to** `~/dev/clarido-landing-page/content/blog/{slug}.md` with proper frontmatter:
56 ```yaml
57 ---
58 title: "Full Title Here"
59 description: "1-2 sentence hook for SEO/social. Should make someone want to click."
60 date: YYYY-MM-DD # today's date
61 author: Clarido Team
62 tags: [primary-topic, secondary-topic, ...] # 3-5 tags for SEO
63 illustration: /blog/{slug}.png
64 ---
65 ```
66
679. **Present the draft** to the user and wait for approval before proceeding.
68
69### Phase 4: Voice Analysis & Polish (automated)
70
7110. **Run the voice analyzer:**
72 ```bash
73 pipenv run python3 scripts/blog/ai_voice_analyzer.py ~/dev/clarido-landing-page/content/blog/{slug}.md
74 ```
75
7611. **Fix flagged issues** -- Work through priority fixes. Target: **overall score 85+**, zero HIGH-severity flagged sentences.
77
7812. **Em dash sweep** -- Search for any `---` (em dashes) and replace with periods, commas, colons, or parentheses. Em dashes are a strong AI tell.
79
8013. **Re-run analyzer** to confirm score meets threshold.
81
82### Phase 5: Illustration (automated)
83
8414. **Generate a blog hero illustration** using OpenAI `gpt-image-1.5`. Use the Clarido brand illustration style:
85 - Simple white character with black outlines, gray watercolor shading
86 - Yellow (#FFD60A) as the only color accent
87 - Clean, minimal, conceptual (not literal)
88 - Soft gray wash texture, hand-drawn look
89 - Reference images: `assets/illustrations/overwhelmed-filing-cabinet.png`, `floating-yellow-balloon.png`, `planting-yellow-seedling.png`
90
91 Use the same approach as `scripts/tiktok/illustrations.py`: pass reference images via `images.edit()`, prepend the STYLE_PREFIX, use `quality="high"`.
92
93 Save to: `~/dev/clarido-landing-page/public/blog/{slug}.png`
94 Dimensions: `1536x1024` (3:2 landscape). Unlike TikTok (portrait 1024x1536), blog illustrations are landscape.
95
96### Phase 6: Verify & Ship (automated)
97
9815. **Build the landing page** to verify no errors:
99 ```bash
100 cd ~/dev/clarido-landing-page && pnpm build
101 ```
102
10316. **Start dev server:**
104 ```bash
105 cd ~/dev/clarido-landing-page && pnpm dev
106 ```
107
10817. **Visual audit with Chrome browser automation.** Use `mcp__claude-in-chrome__` tools to:
109 - Navigate to `http://localhost:3000/blog/{slug}`
110 - Read the page and verify:
111 - Article renders with all HTML components (cards, callouts, pull quotes, etc.)
112 - Illustration loads correctly
113 - Email capture form appears above references section
114 - No broken formatting, no raw HTML visible
115 - Typography, spacing, and layout look correct
116 - Internal links to other articles work
117 - Navigate to `http://localhost:3000/blog` (index page) and verify:
118 - New article appears in the list
119 - Thumbnail/illustration shows
120 - Title, description, tags, and date display correctly
121
12218. **SEO & crawler audit.** Using Chrome tools, verify:
123 - Check `http://localhost:3000/robots.txt` — blog pages must NOT be disallowed
124 - Read the page source/meta tags on the article page:
125 - `<title>` tag contains the article title
126 - `<meta name="description">` is present and meaningful
127 - No `<meta name="robots" content="noindex">` blocking crawlers
128 - Open Graph tags (`og:title`, `og:description`, `og:image`) are present for social sharing
129 - If any crawler-blocking issues are found, fix them in the landing page code and rebuild
130
13119. **Push to production.** In the landing page repo (`~/dev/clarido-landing-page`):
132 ```bash
133 cd ~/dev/clarido-landing-page
134 git add content/blog/{slug}.md public/blog/{slug}.png
135 git commit -m "Publish blog: {article title}"
136 git push origin main
137 ```
138 Include any other modified files (e.g., if SEO fixes were made to `app/` or `lib/` files).
139
14020. **Send notification email.** Use `mcp__google-workspace__send_gmail_message` to email **abhinav@jabhi.ca** and **joieta@jabhi.ca** with:
141 - **Subject:** `New blog published: {article title}`
142 - **Body** (keep it concise):
143 - 2-sentence brief summarizing the article and its angle
144 - Link to the live article: `https://clarido.app/blog/{slug}`
145 - **Target keywords:** list the 5-8 SEO keywords this article targets (from the tags + content strategy)
146 - **Internal links:** list any other Clarido blog articles linked to from within this article (title + URL for each)
147
14821. **Report to user** -- Share the live URL, final voice analyzer score, word count, and confirmation that the email was sent.
149
150## Writing Style Guide
151
152The voice is **Paul Graham meets quality journalism**. Intellectual rigor in conversational prose, with modern visual formatting for scanability.
153
154### Prose Rules
155
156| Rule | Do | Don't |
157|------|-----|-------|
158| **Tone** | Conversational, curious, direct | Academic, coaching, marketing |
159| **Perspective** | "you" to engage, "I" for opinions | Impersonal third-person throughout |
160| **Contractions** | "don't", "it's", "you're", "can't" | "do not", "it is", "you are" |
161| **Sentences** | Wild variation: 4-word fragments mixed with 30-word explorations | Every sentence 15-20 words |
162| **Paragraphs** | One-liners mixed with longer blocks | Uniform paragraph sizes |
163| **Openers** | Questions, fragments, "But", "And", prepositional phrases | "The", "This", "It is" repeatedly |
164| **Research** | Woven into narrative: "In the 1920s, a psychologist named Bluma Zeigarnik noticed..." | Announced: "Research shows that..." or "According to a study..." |
165| **Analogies** | Concrete, visual: "Think of it as a desk with room for four things" | Abstract: "This can be compared to a multifaceted system" |
166| **Em dashes** | Never. Use periods, commas, colons, parentheses instead. | "The answer is simple --- just write it down" |
167| **Hedge phrases** | Never. See the analyzer's HEDGE_PHRASES list. | "It's important to note", "In today's world" |
168| **Questions** | 5-10% of sentences. Rhetorical questions that make the reader feel seen. | Zero questions (pure declaration) |
169| **Endings** | End with quiet resonance, not a CTA. The last paragraph should land. | "So what are you waiting for? Try it today!" |
170
171### Structure Pattern
172
173Don't follow a rigid template, but most good articles have this shape:
174
1751. **Opening hook** -- Start with something specific and interesting. A feeling, a paradox, a question. Not "In today's fast-paced world." Not a definition. Drop the reader into the middle of something.
1762. **The problem/phenomenon** -- What's actually going on? Build understanding through concrete details and analogies.
1773. **The research** -- Weave in 3-4 studies naturally. Name the researchers, tell the story of the finding, make the reader care about the science.
1784. **The mechanism** -- Why does this work? Go one level deeper than the surface explanation.
1795. **The practical** -- What can the reader do? But frame it as insight, not instruction. "The people who benefit most are the ones who..." not "Step 1: Do this."
1806. **The close** -- Tie back to the opening. Leave the reader thinking.
181
182### HTML Components
183
184Use these **sparingly** to aid comprehension. They should feel earned, not decorative. The article should read well as pure text; components enhance, they don't carry.
185
186**Key Stat** -- For one striking number that anchors the argument:
187```html
188<div class="key-stat">
189<span class="stat-number">4-7</span>
190<span class="stat-label">items your working memory can hold at once. Recent research suggests the real number is closer to four.</span>
191</div>
192```
193
194**Pull Quote** -- For a sentence that deserves emphasis. Use 1-2 per article max:
195```html
196<blockquote class="pull-quote">
197Your brain evolved to think, analyze, and solve problems. Not to be a filing cabinet.
198</blockquote>
199```
200
201**Card Grid** -- For parallel concepts (2-4 items). Use when items are genuinely parallel:
202```html
203<div class="card-grid">
204<div class="card">
205<h4>Title</h4>
206<p>Description</p>
207</div>
208<!-- more cards -->
209</div>
210```
211For 3 columns: add `cols-3` class to the card-grid div.
212Cards can optionally include `<div class="card-example">` for italic examples.
213
214**Callout** -- For a parenthetical tip or insight that doesn't fit the main flow:
215```html
216<div class="callout">
217<strong>Label (optional)</strong>
218Content here.
219</div>
220```
221Add `insight` class for insight-style callouts: `<div class="callout insight">`.
222
223**Comparison** -- For before/after or contrasting approaches:
224```html
225<div class="compare">
226<div class="compare-bad">
227<span class="compare-label">Label A</span>
228"The bad example"
229</div>
230<div class="compare-good">
231<span class="compare-label">Label B</span>
232"The good example"
233</div>
234</div>
235```
236
237### References Section
238
239Every article ends with a references section. Format:
240
241```markdown
242---
243
244### References
245
246- Author, A.B. (Year). "Paper Title." *Journal Name*, Volume(Issue), Pages.
247- ...
248
249---
250
251*Clarido is a quiet log for a loud mind. Speak or type what's on your mind. Clarido holds it for you so you can return when you have space. [Join the beta](https://clarido.app)*
252```
253
254The references section gets automatically split from the main content by the blog engine. An email capture form appears between the article body and references.
255
256## Quality Gates
257
258| Gate | Threshold | Action if failed |
259|------|-----------|-----------------|
260| Voice analyzer overall score | 85+ | Fix flagged issues, re-run |
261| HIGH-severity flagged sentences | 0 | Rewrite each flagged sentence |
262| Em dashes | 0 | Replace with periods/commas/colons/parens |
263| Hedge phrases detected | 0 | Delete every one |
264| AI signal words detected | 0 | Replace or cut |
265| Readability grade | 6-10 | Simplify vocabulary, shorten sentences |
266| Questions asked | 5%+ of sentences | Add rhetorical questions |
267| Word count | 1,500-2,200 | Expand thin sections or cut bloat |
268
269## Reference Article
270
271The brain-dumping article is the gold standard for style, structure, and quality:
272`~/dev/clarido-landing-page/content/blog/brain-dumping-article.md`
273
274Read it before writing any new article. It scores 95/100 on the voice analyzer.
275
276## Topic Bank
277
278Psychology and neuroscience concepts relevant to Clarido's audience. Each maps to search keywords people actually type:
279
280| Concept | Search Keywords | Angle |
281|---------|----------------|-------|
282| Zeigarnik Effect | overthinking at night, can't stop thinking | Why unfinished tasks haunt you |
283| Decision Fatigue | decision fatigue, too many choices | Why you can't decide anything by 8pm |
284| Cognitive Offloading | brain dump, write things down | Your brain isn't meant to store things |
285| Affect Labeling | name your emotions, journaling anxiety | Why naming the feeling makes it smaller |
286| Implementation Intentions | how to follow through, procrastination | The planning trick that bypasses willpower |
287| Attention Residue | can't focus, distracted, task switching | Why you're still thinking about the last thing |
288| Peak-End Rule | bad days, why do I feel bad | You're judging your day by two moments |
289| Expressive Writing | journaling benefits, writing therapy | Why writing about pain actually heals |
290| Spotlight Effect | social anxiety, self-conscious, overthinking social | Nobody is thinking about you as much as you think |
291| Ego Depletion (controversy) | willpower, self-control, mental energy | The willpower myth that won't die |
292| Paradox of Choice | overwhelmed by options, too many choices | More options make you less happy |
293| Bedtime Worry Journaling | can't sleep, racing thoughts at night | The 5-minute trick that fixes 3am anxiety |
294
295Don't repeat topics already covered in existing blog posts.
296
297## Files
298
299| File | Repo | Purpose |
300|------|------|---------|
301| `content/blog/{slug}.md` | landing-page | Article markdown with frontmatter |
302| `public/blog/{slug}.png` | landing-page | Hero illustration (1200x630) |
303| `lib/blog.ts` | landing-page | Blog engine (splits references, calculates reading time) |
304| `app/blog/[slug]/page.tsx` | landing-page | Blog post page template |
305| `app/blog/[slug]/email-capture.tsx` | landing-page | Email capture component (auto-inserted above references) |
306| `app/blog/page.tsx` | landing-page | Blog index page |
307| `app/globals.css` | landing-page | Blog component CSS (callout, card-grid, key-stat, pull-quote, compare) |
308| `scripts/blog/ai_voice_analyzer.py` | marketing | Voice analyzer script (19 dimensions) |
309| `scripts/tiktok/illustrations.py` | marketing | OpenAI gpt-image-1.5 illustration generator (reuse the pattern) |
310| `assets/illustrations/` | marketing | Brand illustration style references (passed to OpenAI as style refs) |