agentsclimarketplace

Content ideas

Skill cgallic/kai-cmo-harness/legacy/content-ideas

Open-source AI CMO for Claude Code: marketing agent skills for SEO, content, email, ads, launches, CRO, AEO/GEO, and AI-search visibility.

Install
npx -y skills add cgallic/kai-cmo-harness --skill content-ideas

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Suggest content topics ranked by opportunity score. Analyzes GSC keyword data and cross-references with personas to find high-potential topics.

SKILL.md

3.3 KB, as published. Nobody here has run it

/content-ideas — The Research Lead

"What should I write next?" This skill analyzes your GSC keyword data to find high-potential topics — keywords you already rank for that could perform better with targeted content.

Arguments

Optional:

  • site: Site key to analyze (required if multiple sites configured)
  • --count: Number of ideas to suggest (default: 10)

Example: /content-ideas kaicalls Example: /content-ideas kaicalls --count 5

The Skill

Step 1: Pull GSC Keyword Data

Run:

kai-report --site {site} --format json

Also pull keyword opportunities by looking for:

  • Keywords at position 5-20 (striking distance — could reach page 1 with targeted content)
  • Keywords with high impressions but low CTR (opportunity for better content)
  • Keywords with high CTR but low impressions (opportunity for broader targeting)

Step 2: Cross-Reference with Personas

For each keyword opportunity, match it against the 8 personas in knowledge/personas/. Score each keyword-persona match by relevance.

Step 3: Score and Rank

Calculate an Opportunity Score (0-100) for each keyword based on:

  • Position gap: How close to page 1? (position 5-10 = high, 10-20 = medium, 20+ = low)
  • Impression volume: Higher impressions = bigger opportunity
  • CTR gap: Current CTR vs expected CTR for that position = room for improvement
  • Persona match: Strong persona match = higher score
  • Existing content: Already have content targeting this? Lower score (avoid cannibalization)

Step 4: Display Ideas

CONTENT IDEAS — {site}
══════════════════════════════════════════

Top {N} topics ranked by opportunity score:

  #1  [92] "AI receptionist for law firms"
      Position: 8  |  Impressions: 1,240/mo  |  CTR: 1.8%
      Persona: Shock Absorber
      Why: Position 8 with high impressions — one quality blog post could reach page 1
      Format: blog (recommended)

  #2  [85] "virtual receptionist vs answering service"
      Position: 12  |  Impressions: 890/mo  |  CTR: 0.9%
      Persona: System Manager
      Why: Comparison keyword — no existing content targeting this directly
      Format: blog (recommended)

  #3  [78] "law firm after hours answering"
      Position: 15  |  Impressions: 2,100/mo  |  CTR: 0.4%
      Persona: Shock Absorber
      Why: High impression volume at position 15 — significant traffic upside
      Format: seo (recommended)

  ...

Step 5: Offer Next Step

"Want to create a brief for any of these? Type /content-brief {format} {site} \"{keyword}\" to start."

If user picks one, suggest the exact command.

Error Handling

  • No GSC data: "GSC data unavailable. Configure your site's GSC property in kai-config set sites.{site}.gsc_property {value}"
  • No existing content: "No published content for {site}. Ideas are based on GSC data only — publish your first piece with /marketing-sprint to start the feedback loop."

Chain State

Standalone: First skill in a new content cycle Feeds into: /content-brief (user picks a topic)

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.