Systems Lab

Agent skill

marketing-content-ideas

Generate B2B content ideas across buying stages and content types (blog, LinkedIn, X, case study, service-page opportunity).

activeNeeds a keyActs undeclared1,062 words

Filed under Content and SEO.

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

What it does when it runs

Generate B2B content ideas across buying stages and content types (blog, LinkedIn, X, case study, service-page opportunity). Use when planning a content calendar from ICP and service context. Requires firm profile, service, ICP, and persona files. For writing drafts use marketing-content-* skills per type.

Read from the skill and the 3 files 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
  • EXA_API_KEY
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 does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shell

Ask about marketing-content-ideas

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-ideas"
mkdir -p ~/.claude/skills/marketing-content-ideas
cp -R "/tmp/b2bforce/.agents/skills/marketing-content-ideas/." ~/.claude/skills/marketing-content-ideas/

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.

Before you install: this skill will not complete its job on a bare agent. It needs EXA_API_KEY, which you have to obtain separately.

Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/marketing-content-ideas/SKILL.md, which is licensed MIT (skill frontmatter). 1,062 words, 12 headings.

Content Ideas Generator

Generates 15–25 content ideas mapped to B2B buying stages and content types.

When to Use

  • User wants content calendar, ideation, or kanban backlog
  • After ICP + personas exist for a service
  • User specifies counts per type (e.g. 5 LinkedIn, 3 blog, 2 case study)

Prerequisites

Brand scope. In a multi-brand workspace (2+ brand homes in workspace/firm/brands/), every path this skill reads or writes is brand-scoped: definitional entities (services, ICP, personas, proof, channels) live in firm/brands/{brand}/…, working pipelines carry a {brand}/ segment under their entity root, and the working brand comes from the user's choice or B2BFORCE_BRAND — never guessed. Rules: Brand Scope Gate in AGENTS.md; paths: docs/WORKSPACE.md.

  1. workspace/firm/profile.md
  2. workspace/firm/services/{service-slug}.md
  3. workspace/marketing/icp/{icp-slug}.md + at least one persona
  4. Optional APIs: EXA_API_KEY (content landscape), DATAFORSEO_* (keywords), research for service-page opportunities

Hard gate: if the selected service has no linked ICP, or the ICP has no persona, stop and run marketing-icp first. Do not invent ICP/persona context inside the ideas prompt.

Run the central readiness check before generation:

scripts/validate-content-readiness.sh [service-slug] [icp-slug] [persona-slug]

Content types and stage rules

content_typeAllowed buying_stage
linkedin_post, x_post, blog_postall 5 stages
case_studydecision, vendor only
landing_pagevendor only
prospecting_sequenceany (usually separate skill)

Buying stages: problem → concept → education → decision → vendor

Details: references/buying-stages-and-types.md

Workflow

1. Build context

Assemble from workspace:

  • Company: name, tagline, description, industry, brand_voice, specializations
  • Service: name, type, challenges, features, outcomes, process, differentiators, fit_criteria
  • ICP: target client company segment; pain_points, goals, trigger_events, buying_mode, messaging_angle, job_to_be_done, anti_fit_criteria
  • Persona: decision maker or user; job_titles, seniority, pain_points, goals, content_formats, channels, objections
  • Persona distribution: if user selects multiple personas, either generate a separate batch per persona or assign explicit counts per persona; every idea must carry one persona slug.
  • Exclusion list: firm profile section existing_content, existing idea titles, existing unique_angle, existing buyer_question, and user-provided URLs/titles to avoid
  • Content landscape: Exa search — top 10 articles on topic in last 12 months (if API set). If no research API is used, mark ideas as research_mode: dry_run.

2. Service page opportunity research (optional)

When landing_page count > 0 and user requests research:

Run service-page research — 5 queries:

competitors, landing_structure, objections, social_proof, cta_strategies

Optional DataForSEO keyword data.

Save research JSON to include in idea files for landing_page type only.

3. AI generation

System prompt: references/system-prompt.md. A buying-mode-aware appendix is always added on top; it tailors ideas to the ICP's buying_modereactive (problem/pain → urgent, problem-solving) vs proactive (challenge/opportunity → aspirational, growth-oriented), with mixed as the default. The ICP's buying_mode, messaging_angle, and market_research are passed in context for the AI to adapt.

User prompt includes:

  • Count per type OR total count distributed across stages
  • Language from firm context
  • Existing ideas from workspace/marketing/content/ideas/ as JSON (dedup)
  • Dedupe against titles, buyer questions, unique angles, and problem framing, not only exact title matches
  • Big5 topic guidance where relevant (cost, problems, comparisons, alternatives, reviews)
  • hook_type per idea: data | question | contrarian | specificity | problem | story
  • Quality rubric per idea: buyer question, stage fit, service fit, proof source, non-generic angle, next action
  • Persona-aware distribution if more than one persona is selected
  • Research mode: market_informed only if Exa/DataForSEO/SERP/market context was used; otherwise dry_run
  • SEO discipline: target_keyword only for blog_post and landing_page; set it empty/null for LinkedIn, X, case study, and prospecting
  • Proof discipline:
    • do not invent client names, metrics, page counts, revenue numbers, or research claims;
    • use specific numbers only when they exist in firm/service/proof context;
    • if case_study is requested and no real proof exists, create the idea with a [Client] placeholder and proof_source: needs real client proof before draft;
    • never generate a case study draft from a placeholder proof idea.

Output schema: references/output-schema.md

Generate batch ID: batch-{YYYY-MM-DD}-{uuid-short} — same ID in all idea files from this run.

4. Write workspace outputs

One file per idea:

workspace/marketing/content/ideas/{content_type}--{buying_stage}--{slug}.md

Keep all ideas in one folder. Do not create type subfolders. The filename is a human scanning index for large backlogs; frontmatter remains the source of truth.

---
title:
content_type: blog_post
buying_stage: problem
status: new
language: en
service: {slug}
icp: {slug}
persona: {slug}
buyer_question:
big5_topic: problems          # optional: cost|problems|comparisons|alternatives|reviews
target_keyword:                 # optional, from SEO research
generation_batch: batch-2026-06-01-abc123
competitive_research: false     # landing_page only — path to research file if saved
hook_type: data                 # metadata for quality (optional in frontmatter)
unique_angle:
proof_source:
next_action:
recommended_next_skill: marketing-content-blog-post
research_mode: dry_run
---

Description body: 2–3 sentences on content angle.

If landing_page with research, also write: workspace/marketing/content/ideas/{content_type}--{buying_stage}--{slug}-research.json

5. Default distribution (if user doesn't specify)

Channel registry first. If workspace/marketing/channels/ (multi-brand: firm/brands/{brand}/channels/) holds channel files, they decide distribution: enable only the content types some active channel lists in content_types, and size counts to the channels' schedule lines — a channel posting once a week does not need five ideas a week. Read each channel's body ("what to publish here") as context for the angles proposed. Rules: docs/content-generation.md, "Distribution channels".

Fallback (no channel files). Only content types that are enabled are generated. By default just three are enabled: LinkedIn×5, X×5, blog×3 (≈13 ideas). case_study has a default count of 2 and landing_page/prospecting_sequence default to 0, but those are off by default — they are only generated if the user enables them. The legacy "total count" mode (no per-type counts) defaults to 20 ideas spread across all 5 stages.

Quality rules

  • Titles must use hook patterns (data, question, contrarian, specificity, problem, story)
  • Avoid generic titles ("Complete Guide to X", "10 Best Tips")
  • Each idea needs unique_angle vs existing ideas and content landscape
  • Match content type to buying stage restrictions
  • Early stages → educational; late stages → comparison/proof
  • No fabricated proof: specific metrics, client names, research claims, and case study facts must come from workspace context or be marked as needing real proof.
  • Every idea must include buyer_question, next_action, recommended_next_skill, and research_mode.
  • Run scripts/validate-content-ideas.sh after writing ideas; fix any failures before generating drafts.

Related Skills

SkillWhen
marketing-icpMissing ICP
marketing-content-blog-post etc.Generate draft from approved idea
marketing-service-pageCreate service page from a landing_page opportunity

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-ideas 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.