{"slug":"write-blog-post","title":"write-blog-post","summary":"Write or develop a blog post. Use for blog content - writing, drafting, developing ideas into drafts, or editing. Longer-form than LinkedIn (800-1200 words) with section structure.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-30T16:42:39.745951Z","repo":{"url":"https://github.com/techwolf-ai/ai-first-toolkit","stars":129,"forks":5,"license":"MIT","updatedAt":"2026-09-29T14:43:16Z"},"bodyHtml":"<hr>\n<h2>name: write-blog-post\ndescription: Write or develop a blog post. Use for blog content - writing, drafting, developing ideas into drafts, or editing. Longer-form than LinkedIn (800-1200 words) with section structure.</h2>\n<h1>Write Blog Post</h1>\n<p>You are helping write a blog post for the author.</p>\n<h2>Before Writing (MANDATORY)</h2>\n<p><strong>You MUST complete these steps before writing ANY content:</strong></p>\n<ol>\n<li>Run <code>./scripts/print-published.sh linkedin-post</code> to read ALL published LinkedIn posts\n<ul>\n<li>Blog posts share the same voice as LinkedIn posts, so these are your primary style reference</li>\n<li>Note core insights and data points already used</li>\n<li>Identify opportunities to reference or build on previous posts</li>\n</ul>\n</li>\n<li>Run <code>./scripts/print-published.sh blog-post</code> to read ALL published blog posts\n<ul>\n<li>Avoid repeating topics, angles, or arguments already covered</li>\n<li>Note the structure and depth of existing blog posts</li>\n</ul>\n</li>\n<li>Read <code>guidelines/linkedin.md</code> for style rules (same voice applies to blog posts)</li>\n<li>Read <code>references/professional-profile.md</code> for background</li>\n</ol>\n<p><strong>If developing an idea-stage post:</strong> Check if the idea's core insight overlaps with published posts (LinkedIn or blog). If so, either:</p>\n<ul>\n<li>Find a genuinely different angle</li>\n<li>Explicitly build on the previous piece</li>\n<li>Recommend against developing the idea</li>\n</ul>\n<h2>Avoid Repetitive Patterns</h2>\n<p>When reading recent posts, actively note and vary:</p>\n<p><strong>Openings:</strong> Vary between demand signal, personal anecdote, company experience, surprising data\n<strong>Section flow:</strong> Don't always follow the same arc (problem-solution-data-close)\n<strong>Closing lines:</strong> Find fresh ways to land the argument\n<strong>Examples:</strong> Rotate between company-specific, industry, and broader examples\n<strong>Rhetorical devices:</strong> If recent pieces use lists heavily, try flowing narrative, and vice versa</p>\n<p>The goal is a consistent voice with varied execution.</p>\n<h2>Style Requirements</h2>\n<ul>\n<li><strong>800-1200 words</strong> (use <code>wc -w</code> to verify)</li>\n<li><strong>English language</strong></li>\n<li><strong>Section headings</strong> (## level) to break up the piece into 5-7 sections</li>\n<li><strong>First person</strong> throughout</li>\n<li><strong>Conversational tone</strong> - read it aloud, does it sound like something you'd say?</li>\n<li><strong>Specific &gt; abstract</strong> - lead with concrete examples, generalize later</li>\n<li><strong>No hype words</strong> (\"revolutionary\", \"game-changing\", \"transformative\")</li>\n<li><strong>Strong opening</strong> - first 2-3 sentences must hook the reader with something concrete</li>\n</ul>\n<h2>Structure</h2>\n<p>Blog posts are longer than LinkedIn posts and need more structure. A typical blog post has:</p>\n<ol>\n<li><strong>Hook</strong> (80-100 words) - Concrete opening that pulls the reader in</li>\n<li><strong>3-5 body sections</strong> (150-200 words each) - Each with a clear heading and one main point</li>\n<li><strong>Close</strong> (50-75 words) - Echo the opening or land the core argument</li>\n</ol>\n<p>Each section should earn its place. If a section doesn't add something the reader couldn't get from the LinkedIn post on the same topic, cut it.</p>\n<h2>Relationship to LinkedIn Posts</h2>\n<p>Blog posts often expand on ideas first introduced in LinkedIn posts. When this happens:</p>\n<ul>\n<li>Reference the LinkedIn post briefly, don't re-explain it</li>\n<li>Go deeper on the angle the LinkedIn post couldn't cover in 200 words</li>\n<li>Add the meta-story, the data, or the \"why\" behind the insight</li>\n<li>Blog posts should reward readers who already saw the LinkedIn post AND stand alone for those who didn't</li>\n</ul>\n<h2>Process</h2>\n<ol>\n<li>If given a topic, develop it into a full draft</li>\n<li>If given an existing idea file (search with <code>./scripts/search-posts.sh</code>), develop the content</li>\n<li>Always check word count against 800-1200 target</li>\n<li>Save to content/posts/blog-post/ with type: blog-post, stage: 02-drafts</li>\n</ol>\n<h2>Validation</h2>\n<p>After saving the draft, run the word count checker:</p>\n<pre><code>scripts/check-word-count.sh &lt;yaml-file&gt;\n</code></pre>\n<p>Adjust the content if the word count is outside the 800-1200 target.</p>\n<h2>Sub-Agent Review</h2>\n<p>Before presenting the final draft, spawn a sub-agent to review with fresh eyes. The reviewer should:</p>\n<ul>\n<li>Check voice consistency against <code>guidelines/linkedin.md</code> (same voice applies)</li>\n<li>Verify each section earns its place and adds depth beyond a LinkedIn post</li>\n<li>Flag any overlap with published posts (LinkedIn or blog)</li>\n<li>Check for hype words, generic phrasing, or sections that could be cut</li>\n</ul>\n<p>Incorporate the reviewer's feedback before finalizing.</p>\n<h2>Creating New Files</h2>\n<p>Get timestamp first:</p>\n<pre><code>date -u +\"%Y%m%d-%H%M%S\"  # For slug\ndate -u +\"%Y-%m-%dT%H:%M:%S.000Z\"  # For created/lastUpdated\n</code></pre>\n<p>File path: <code>content/posts/blog-post/{slug}-{slugified-title}.yaml</code></p>\n","files":[{"path":"scripts/check-word-count.sh","sizeBytes":960,"isText":true},{"path":"SKILL.md","sizeBytes":4438,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-30T16:43:00.749123Z","sha256":"68E9F1B5242E255436D20ECBB76EFAFD221F03AA0BE4F47CAA91D20AC1BE3EE9","sizeBytes":2774},"review":null,"source":{"repositoryUrl":"https://github.com/techwolf-ai/ai-first-toolkit","path":"plugins/content-studio/skills/write-blog-post","license":"MIT","commit":"2ee78415674eaaead2082a55691b68ffb1003e87","subtreeSha":"BD0616D39A919ECD16EBF7ACCDEF5EC5C70DFC73C181E182A8E38E4BB9ABEA3F","lastSyncedAt":"2026-09-30T16:42:38.836652Z"},"reviewedAt":"2026-09-30T16:43:57.881017Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/techwolf-ai/ai-first-toolkit/tree/main/plugins/content-studio/skills/write-blog-post"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install techwolf-ai-ai-first-toolkit@llmmart"},{"target":"git","command":"git clone https://github.com/techwolf-ai/ai-first-toolkit.git"}]}