Systems Lab

Agent skill

marketing-content-blog-post

Write an 800-1500 word B2B blog post in Markdown from a content idea.

activeSelf-containedInstructions only336 words

Filed under Content and SEO.

From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21

What it does when it runs

Write an 800-1500 word B2B blog post in Markdown from a content idea. Use when content_type is blog_post. Applies stage-specific frameworks and Exa reference articles. Output to workspace/marketing/content/drafts/blog/. For LinkedIn or X use marketing-content-linkedin-post or marketing-content-x-post instead.

Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about marketing-content-blog-post

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce
git -C /tmp/b2bforce sparse-checkout set ".agents/skills/marketing-content-blog-post"
mkdir -p ~/.claude/skills/marketing-content-blog-post
cp -R "/tmp/b2bforce/.agents/skills/marketing-content-blog-post/." ~/.claude/skills/marketing-content-blog-post/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/marketing-content-blog-post/SKILL.md, which is licensed MIT (skill frontmatter). 336 words, 8 headings.

Blog Post Generation

Long-form draft pipeline for a content idea of type blog_post.

When to Use

  • Idea file has content_type: blog_post
  • User asks to write/expand a blog idea

Prerequisites

  • Content idea: workspace/marketing/content/ideas/blog_post--{buying_stage}--{slug}.md
  • Firm, service, ICP, persona context in workspace
  • Current agent/LLM session
  • Optional: Exa reference notes via tool-exa for market-informed long-form drafts

Prompt layering (order matters)

  1. Base writer — style, storytelling, anti-AI-slop (no length)
  2. Quality layer — universal quality + buying-mode tone
  3. Blog format layerauthoritative length/structure → references/format-requirements.md

Optional: workspace/firm/content-guidelines/blog-post.md if exists (company overrides).

Follow the shared draft gate and writing quality rules in docs/content-generation.md.

Research

Optional Exa reference articles: search 5 results on idea title via tool-exa; include highlights for benchmarking. Do not plagiarize.

Skip this step when the user wants a quick internal-context draft.

User prompt template

Write a Blog Post based on this content idea. Follow FORMAT REQUIREMENTS exactly.

=== CONTENT IDEA ===
Title: {title}
Description: {description}
Buying Stage: {stage label}
Buyer question: {buyer_question}
Unique angle: {unique_angle}
Proof source: {proof_source}
Next action: {next_action}
Research mode: {research_mode}
Target keyword: {if any}

=== CONTEXT ===
{company, service, ICP, persona from workspace}

=== REFERENCE ARTICLES ===
{exa results or none}

Requirements:
- 800-1500 words, Markdown H2/H3
- Match buying stage framework (see format requirements)
- Brand voice from firm profile
- Hook opening — no generic intro
- Use proof only from workspace/firm/proof/ records (public use requires
  usable_publicly: true), idea proof_source, or reference notes
- CTA aligned to buying stage
- Language: {language}

Return JSON: { "title": "...", "body": "markdown..." }

Output

Brand scope. In a multi-brand workspace the draft inherits the idea file's brand: write to workspace/marketing/content/{brand}/drafts/… — same brand segment as the idea. See the Brand Scope Gate in AGENTS.md.

workspace/marketing/content/drafts/blog/{slug}.md

Frontmatter: idea, content_type, buying_stage, service, icp, persona, target_keyword, generated_at.

Run scripts/validate-content-draft.sh {output}. Update idea frontmatter to status: generated after the draft validates.

Related Skills

marketing-content-ideas (upstream) | other marketing-content-* for different types

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what marketing-content-blog-post does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.