.claude/skills/blog-production/SKILL.md
Fully autonomous blog production for Clarido. Auto-selects topic, researches, writes, voice-analyzes with retry loop, illustrates, builds, pushes, and emails — no approval gates.
npx skillsauth add Abhi5415/clarido-marketing blog-productionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fully autonomous end-to-end workflow for producing a published blog article on the Clarido blog. Auto-selects the best topic, researches, writes, voice-analyzes with a retry loop, generates illustration, builds, pushes to production, and sends notification email. No human approval gates.
Invoked by the user with /blog-production or when asked to write/create a new blog post.
~/dev/clarido-landing-page/
~/dev/clarido-landing-page/content/blog/{slug}.md~/dev/clarido-landing-page/public/blog/{slug}.png~/dev/clarido-landing-page/lib/blog.ts~/dev/clarido-landing-page/app/blog/[slug]/page.tsx~/dev/clarido-landing-page/app/blog/page.tsx~/dev/clarido-landing-page/app/sitemap.ts (auto-discovers all posts via listPostSlugs())~/dev/clarido-marketing/
scripts/blog/ai_voice_analyzer.pyscripts/tiktok/illustrations.pyAll phases run without user intervention. The voice analyzer retry loop is the critical quality gate.
The user may invoke this skill in two ways:
~/dev/clarido-landing-page/content/blog/ to identify already-covered topics.Find 4-6 real academic studies that support the article's argument. Requirements:
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.
Read the reference article before writing:
~/dev/clarido-landing-page/content/blog/brain-dumping-article.md
This is the gold standard for style, structure, and quality (scores 95/100 on the voice analyzer).
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
---
Proceed immediately to voice analysis. Do NOT present the draft or wait for feedback.
This is the critical quality gate replacing human review. Up to 3 attempts to pass.
Attempt loop (max 3 iterations):
For each attempt:
a. Em dash sweep -- Search for any --- (em dashes) and replace with periods, commas, colons, or parentheses. Em dashes are a strong AI tell.
b. Run the voice analyzer:
pipenv run python3 scripts/blog/ai_voice_analyzer.py ~/dev/clarido-landing-page/content/blog/{slug}.md
c. Check results against quality gates:
d. If all gates pass: Break out of loop, proceed to Phase 5.
e. If any gate fails: Fix all flagged issues:
f. After 3 failed attempts: STOP. Do not publish. Report failure to the user with:
Generate a blog hero illustration using OpenAI gpt-image-1.5. Use the Clarido brand illustration style:
assets/illustrations/overwhelmed-filing-cabinet.png, floating-yellow-balloon.png, planting-yellow-seedling.pngUse 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.
Build the landing page to verify no errors:
cd ~/dev/clarido-landing-page && pnpm build
Verify the new article appears in the build output:
/blog/{slug} appears in the build output (Next.js logs generated routes)app/sitemap.ts auto-discovers all posts via listPostSlugs(), so if the build includes the route, the sitemap is correctPush 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 fixes were made to app/ or lib/ files).
Verify the live page after deployment (wait ~30 seconds for Vercel to deploy):
curl -s -o /dev/null -w "%{http_code}" https://clarido.app/blog/{slug}
Expect HTTP 200. If not, wait another 30 seconds and retry once. If still failing, report to the user.
Send notification email. Use mcp__google-workspace__send_gmail_message to email [email protected] and [email protected] with:
New blog published: {article title}https://clarido.app/blog/{slug}Report to user -- Share the live URL, final voice analyzer score, word count, and confirmation that the email was sent.
The voice is Paul Graham meets quality journalism. Intellectual rigor in conversational prose, with modern visual formatting for scanability.
| 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!" |
Don't follow a rigid template, but most good articles have this shape:
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>
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.
| Gate | Threshold | Action if failed | |------|-----------|-----------------| | Voice analyzer overall score | 85+ | Fix flagged issues, re-run (up to 3 attempts) | | 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 | | Voice analyzer attempts | Max 3 | STOP and report failure if score < 85 after 3 attempts | | Build | Must succeed | Fix errors and rebuild | | Live page HTTP status | 200 | Retry once after 30s, then report failure |
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.
Psychology and neuroscience concepts relevant to Clarido's audience. Each maps to search keywords people actually type. Claude auto-selects the best uncovered topic based on SEO opportunity and complement to existing content.
| # | Concept | Search Keywords | Angle | |---|---------|----------------|-------| | 1 | Zeigarnik Effect | overthinking at night, can't stop thinking | Why unfinished tasks haunt you | | 2 | Decision Fatigue | decision fatigue, too many choices | Why you can't decide anything by 8pm | | 3 | Cognitive Offloading | brain dump, write things down | Your brain isn't meant to store things | | 4 | Affect Labeling | name your emotions, journaling anxiety | Why naming the feeling makes it smaller | | 5 | Implementation Intentions | how to follow through, procrastination | The planning trick that bypasses willpower | | 6 | Attention Residue | can't focus, distracted, task switching | Why you're still thinking about the last thing | | 7 | Peak-End Rule | bad days, why do I feel bad | You're judging your day by two moments | | 8 | Expressive Writing | journaling benefits, writing therapy | Why writing about pain actually heals | | 9 | Spotlight Effect | social anxiety, self-conscious, overthinking social | Nobody is thinking about you as much as you think | | 10 | Ego Depletion (controversy) | willpower, self-control, mental energy | The willpower myth that won't die | | 11 | Paradox of Choice | overwhelmed by options, too many choices | More options make you less happy | | 12 | Bedtime Worry Journaling | can't sleep, racing thoughts at night | The 5-minute trick that fixes 3am anxiety | | 13 | Cognitive Load Theory | mental overload, too much to remember | Why your brain crashes like a browser with 47 tabs | | 14 | Default Mode Network | mind wandering, daydreaming, can't be present | Your brain's background app that won't close | | 15 | Rumination vs Reflection | stuck in a loop, same thoughts over and over | The difference between thinking and spiraling | | 16 | Self-Distancing (Kross) | can't think clearly, emotional decisions | Why talking to yourself in third person actually works | | 17 | Goal Gradient Effect | losing motivation halfway, almost gave up | Why you speed up near the finish line (and stall everywhere else) | | 18 | Psychological Safety (Edmondson) | afraid to speak up, walking on eggshells | Why the best teams feel safe enough to be wrong | | 19 | Negativity Bias | always thinking the worst, can't see the good | Your brain has a built-in bad news filter | | 20 | Planning Fallacy | always late, underestimate time, bad at planning | Why everything takes longer than you think | | 21 | Mere Exposure Effect | growing on me, familiar feels safe | Why your brain confuses familiarity with preference | | 22 | Emotional Granularity (Barrett) | can't describe how I feel, emotional vocabulary | "Fine" is not a feeling (and your brain knows it) | | 23 | Flow State (Csikszentmihalyi) | in the zone, deep focus, flow state tips | What actually happens when everything clicks | | 24 | Anchoring Bias | first impression, stuck on initial number | Why the first thing you hear hijacks everything after | | 25 | Self-Determination Theory | unmotivated, no drive, lost sense of purpose | The three things every human needs to feel alive | | 26 | Dunning-Kruger Effect | imposter syndrome, feel like a fraud, overconfident | Why the people who worry about being bad are usually good | | 27 | Sunk Cost Fallacy | can't let go, wasted too much time, should I quit | Why you stay in things you should have left a year ago | | 28 | Temporal Discounting | can't plan ahead, instant gratification, procrastination | Your brain thinks future-you is a stranger | | 29 | Sleep and Memory Consolidation | learning while sleeping, why sleep matters, memory | Your brain's night shift: what happens while you sleep | | 30 | Identity-Based Habits (Clear) | building habits, identity change, becoming | You don't rise to your goals, you fall to your identity |
Topics already published (do not select): check ~/dev/clarido-landing-page/content/blog/ at runtime.
| File | Repo | Purpose |
|------|------|---------|
| content/blog/{slug}.md | landing-page | Article markdown with frontmatter |
| public/blog/{slug}.png | landing-page | Hero illustration (1536x1024) |
| 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/sitemap.ts | landing-page | Sitemap (auto-discovers all posts via listPostSlugs()) |
| 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) |
development
Best practices for Remotion - Video creation in React
tools
Fully autonomous Pinterest pin production for Clarido. Auto-selects topics from blog gaps, generates content with pre-render validation, visual-reviews rendered PNGs via agent, publishes via Chrome automation, and emails results. No approval gates. Supports batch mode.
development
Produce an Instagram Reel for Clarido — remix an existing TikTok concept with a deeper script, new voiceover, and expanded illustrations, then publish via the Instagram API. Use when creating new Instagram Reels content.
data-ai
Pull cross-channel GTM performance data from Meta Ads, Instagram, Pinterest, Blog, GA4, and Search Console — generate a unified report with analysis and recommendations.