MoizIbnYousaf/marketing-cli

seo-content

Create high-quality, SEO-optimized content that ranks AND reads like a human wrote it. Performs live SERP gap analysis, writes with anti-AI detection techniques, and adds schema markup. Use when someone needs a blog post, article, SEO page, or wants content that drives search traffic. Triggers on 'SEO content', 'blog post', 'article', 'SERP', 'programmatic SEO', 'content at scale', 'write a post about', 'rank for', or 'search-optimized content'. Two modes: single article or programmatic SEO at s

86CollectingReads filesWrites files
See how to use itView GitHub source
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/seo-content"
Automated source guide

Source checked Jul 28, 2026·Refresh due Oct 26, 2026

Reorganized from the pinned upstream SKILL.md

Turn seo-content's source instructions into a guide you can follow

According to the pinned SKILL.md from MoizIbnYousaf/marketing-cli: SEO content has a reputation problem. Most of it is low-value -- keyword-stuffed, AI-sounding, says nothing new. It ranks for a month, then dies.

npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/seo-content"
Check the pinned source

Best fit

  • Use when someone needs a blog post, article, SEO page, or wants content that drives search traffic.
  • Create high-quality, SEO-optimized content that ranks AND reads like a human wrote it. Performs live SERP gap analysis, writes with anti-AI detection techniques, and adds schema markup. Use when someone needs a blog post, article, SEO page, or wants content that drives search traffic. Triggers on 'SEO content', 'blog post', 'article', 'SERP', 'programmatic SEO', 'content at scale', 'write a post about', 'rank for', or 'search-optimized content'. Two modes: single article or programmatic SEO at s

Bring this context

  • Target keyword -- Primary keyword to rank for
  • Keyword cluster -- Related keywords to include naturally
  • Search intent -- Informational / Commercial / Transactional

Expected outputs

  • H1: Is DoorDash Organic? The Complete Guide for Health-Conscious Families
  • Quick answer (Featured Snippet target): 'DoorDash itself doesn't verify verification status...'
  • How to find verified-source restaurants on DoorDash (step-by-step with screenshots)

Key source sections

Read seo-content through these 5 source sections

Sections are extracted automatically from the pinned SKILL.md and link back to the source.

01

The Workflow (Single Article)

Use Exa MCP or firecrawl for live SERP research. Analyze top 5 results.

SKILL.md · The Workflow (Single Article)
Answer the search query in the first 2-3 sentencesApply the "So What?" chain -- write from the bottom, not the topSpecificity over generality (numbers, examples, always)
02

Phase 1: Research (SERP Analysis)

Use Exa MCP or firecrawl for live SERP research. Analyze top 5 results.

SKILL.md · Phase 1: Research (SERP Analysis)
Use Exa MCP or firecrawl for live SERP research. Analyze top 5 results.For each result capture: Title/URL, content type, word count, structure, unique angles, gaps, recency, domain type.Extract SERP features: People Also Ask (ALL of them), Featured Snippet format, AI Overview presence.
03

Phase 2: Content Brief

Create or enhance an existing brief from /keyword-research. Include: target keyword, secondary keywords, search intent, content type, target word count, audience, unique angle, key points, PAA questions, competitor gaps, internal links, CTA.

SKILL.md · Phase 2: Content Brief
Create or enhance an existing brief from /keyword-research. Include: target keyword, secondary keywords, search intent, content type, target word count, audience, unique angle, key points, PAA questions, competitor gaps…
04

Phase 3: Outline

Structure based on content type. See references/content-structures.md for templates (Pillar Guide, How-To, Comparison, Listicle).

SKILL.md · Phase 3: Outline
Structure based on content type. See references/content-structures.md for templates (Pillar Guide, How-To, Comparison, Listicle).Map PAA questions: depth-worthy ones become H2s, brief ones go to FAQ section.
05

Phase 4: Draft

Voice calibration: Match voice-profile.md if loaded. Default: direct, conversational, specific, opinionated.

SKILL.md · Phase 4: Draft
Answer the search query in the first 2-3 sentencesApply the "So What?" chain -- write from the bottom, not the topSpecificity over generality (numbers, examples, always)

SkillSignal prompt templates

Provide the task, context, and acceptance criteria

These prompts were written by SkillSignal from the source structure; they are not upstream text.

Task-start prompt

Confirm source fit, inputs, and outputs before acting.

Use seo-content to help me with: [specific task]. Context: [files, data, or background]. Constraints: [environment, scope, and prohibited actions]. Before acting, check the pinned SKILL.md and explain which sections apply, what inputs are still missing, and what you will deliver.

Source-guided execution

Make the Agent explicitly follow the key extracted sections.

Apply the pinned seo-content source to [task]. Pay particular attention to these source sections: “The Workflow (Single Article)”, “Phase 1: Research (SERP Analysis)”, “Phase 2: Content Brief”, “Phase 3: Outline”, “Phase 4: Draft”. Preserve the important decision at each step. Mark facts not covered by the source as “needs confirmation” instead of inventing them. Then verify the result against my acceptance criteria: [criteria].

Result-review prompt

Check omissions, permissions, and source drift before delivery.

Review the current seo-content result: (1) does it satisfy the original task; (2) were any applicable steps or limits in the pinned SKILL.md missed; (3) did it perform any unauthorized file, command, network, or data action; and (4) which conclusions remain unverified? List issues first, then fix only what the source or user authorization supports.

Output checklist

Verify each item before delivery

The task matches the purpose documented in the SKILL.md.

The source section “The Workflow (Single Article)” has been checked.

The source section “Phase 1: Research (SERP Analysis)” has been checked.

The source section “Phase 2: Content Brief” has been checked.

The source section “Phase 3: Outline” has been checked.

Inputs, constraints, and acceptance criteria are explicit.

Unverified facts, compatibility, and outcome claims are clearly marked.

Any file, command, network, or data action has been reviewed.

Choose a different workflow

When another Skill is the better fit

competitor-alternatives

Creates high-converting 'X vs Y' and 'X alternatives' SEO pages that capture comparison search traffic. Researches competitors, writes honest comparison content, and adds schema markup (FAQPage, ItemList). Use when someone needs alternatives pages, comparison content, or says 'alternatives page', 'vs page', 'comparison', 'competitor alternatives', 'X vs Y page', or wants to capture competitor brand search traffic with SEO content. Also trigger when someone wants to rank for competitor brand name

A separate implementation from MoizIbnYousaf/marketing-cli; compare its source, maintenance signals, and permission requirements.

Open source detail

openseo-competitor-analysis

Deep-dive ONE competitor's organic footprint — exact ranking keywords and URLs, content themes, backlink profile, and exploitable gaps — with findings written into brand/competitors.md. Use this skill when the user names a competitor and wants to know what to learn from them, counter, or outrank, including head-to-head comparisons against the user's own domain. For market-level mapping first, use openseo-competitive-landscape. Triggers: "analyze competitor", "competitor keywords", "competitor ba

A separate implementation from MoizIbnYousaf/marketing-cli; compare its source, maintenance signals, and permission requirements.

Open source detail

openseo-keyword-research

Discover keyword opportunities with MEASURED volume, keyword difficulty, CPC, and intent from OpenSEO, then write them into brand/keyword-plan.md. Use this skill whenever someone asks for keyword difficulty, KD, search volume, keyword ideas with metrics, striking-distance opportunities from Search Console, or SERP-validated keyword priorities. For qualitative research without an OpenSEO connection, use mktg's keyword-research instead (metrics will be unknown). Triggers: "keyword difficulty", "se

A separate implementation from MoizIbnYousaf/marketing-cli; compare its source, maintenance signals, and permission requirements.

Open source detail

FAQ

What does seo-content do?

SEO content has a reputation problem. Most of it is low-value -- keyword-stuffed, AI-sounding, says nothing new. It ranks for a month, then dies.

How do I start using seo-content?

The catalog detected this source-specific install command: npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/seo-content". Inspect the command and pinned source before running it.

Which Agent platforms does it declare?

No dedicated Agent platform is declared in the pinned source record.

Repository stars
27
Repository forks
5
Quality
86/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

86/100
Documentation30/30
Specificity20/25
Maintenance20/20
Trust signals16/25

Compare before choosing

Related Agent Skills and source variants

These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.

competitor-alternatives by MoizIbnYousaf

Creates high-converting 'X vs Y' and 'X alternatives' SEO pages that capture comparison search traffic. Researches competitors, writes honest comparison content, and adds schema markup (FAQPage, ItemList). Use when someone needs alternatives pages, comparison content, or says 'alternatives page', 'vs page', 'comparison', 'competitor alternatives', 'X vs Y page', or wants to capture competitor brand search traffic with SEO content. Also trigger when someone wants to rank for competitor brand name

openseo-competitor-analysis by MoizIbnYousaf

Deep-dive ONE competitor's organic footprint — exact ranking keywords and URLs, content themes, backlink profile, and exploitable gaps — with findings written into brand/competitors.md. Use this skill when the user names a competitor and wants to know what to learn from them, counter, or outrank, including head-to-head comparisons against the user's own domain. For market-level mapping first, use openseo-competitive-landscape. Triggers: "analyze competitor", "competitor keywords", "competitor ba

openseo-keyword-research by MoizIbnYousaf

Discover keyword opportunities with MEASURED volume, keyword difficulty, CPC, and intent from OpenSEO, then write them into brand/keyword-plan.md. Use this skill whenever someone asks for keyword difficulty, KD, search volume, keyword ideas with metrics, striking-distance opportunities from Search Console, or SERP-validated keyword priorities. For qualitative research without an OpenSEO connection, use mktg's keyword-research instead (metrics will be unknown). Triggers: "keyword difficulty", "se

openseo-competitive-landscape by MoizIbnYousaf

Map who is winning an SEO market with measured data — recurring SERP domains, organic footprints, winning content themes, backlink authority, and the gaps worth attacking. Use this skill for market-level questions ("who ranks for X", "how competitive is this space", "where are the SEO openings") before committing to keyword targets or content themes. For one named competitor, use openseo-competitor-analysis instead. Triggers: "competitive landscape seo", "who ranks for", "seo market map", "how c

openseo-coach by MoizIbnYousaf

Friendly SEO coach mode for the mktg + OpenSEO stack. Use this skill when the user is new to SEO, unsure which SEO workflow to run, asks "what does OpenSEO do", wants strategy explained in plain language, or needs help choosing between keyword research, clustering, competitive analysis, and link prospecting. Triggers: "seo coach", "new to seo", "explain openseo", "what seo should i do", "seo strategy help".

View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 9 min

/seo-content -- Publication-Ready SEO Content

SEO content has a reputation problem. Most of it is low-value -- keyword-stuffed, AI-sounding, says nothing new. It ranks for a month, then dies.

This skill creates content that ranks AND builds trust. Content that sounds like an expert sharing what they know, not a content mill churning out filler.

The goal: Would someone bookmark this? Would they share it? Would they come back?

If yes, Google will reward it. If no, no amount of optimization saves it.


On Activation

  1. Read brand/ directory: load voice-profile.md, keyword-plan.md, audience.md, positioning.md, competitors.md, learnings.md if present.
  2. Show what loaded:
    Brand context loaded:
    ├── Voice Profile   ✓ "{tone summary}"
    ├── Keyword Plan    ✓ {N} pillars, {N} briefs
    ├── Audience        ✓ "{audience summary}"
    ├── Positioning     ✓ "{primary angle}"
    ├── Competitors     ✓ {N} competitors profiled
    └── Learnings       ✓ {N} entries
    
  3. If files missing, note suggestions at the end (e.g., run /brand-voice).
  4. Check for existing content file at ./campaigns/content/{keyword-slug}.md.
    • If exists --> Content Refresh Mode (see below).
    • If not --> Full Creation Mode.
  5. Determine mode: Single article or Scale mode (programmatic SEO).
  6. Read brand/landscape.md if it exists — check the Claims Blacklist before making ecosystem or competitive claims. If stale (>14 days) or missing, warn that market claims may be outdated.

Prioritization (defer to seo-machine's publishing order)

When the user asks "what should I write next?" — the answer follows seo-machine's conversion-intent-first publishing order, not "whatever has highest volume":

OrderPatternWhy
1/alternatives/[competitor]Highest conversion intent — reader is already in market
2/compare/[a]-vs-[b]Be the third option in any two-vendor comparison
3/for/[use-case] and /for/[audience]JTBD without competitor name — high TP/volume ratio
4Long-form playbooks (this skill's wheelhouse)Authority + AI-citation + inbound link draw
5Generic blog postsLowest conversion — defer until ~10 indexed pages exist

If docs/seo-machine.md exists at the project root, route the user to that skill's Resume mode instead of writing standalone articles — the roadmap there already encodes the priority order. seo-content is the right tool for single articles and playbook-pattern long-form; alternatives/compare/use-case pages belong in seo-machine's programmatic sprint.


Brand Memory

Reads (if they exist)

FileWhat it providesHow it shapes output
voice-profile.mdTone, personality, vocabulary, rhythmDirectly shapes writing style
keyword-plan.mdPrioritized keywords, content briefs, SERP dataTarget keyword, cluster, intent, content type
audience.mdBuyer profiles, sophistication level, pain pointsHow technical to write, what examples to use
positioning.mdMarket angles, differentiatorsUnique angle for the piece
competitors.mdNamed competitors, their positioningWhat angle competitors take
learnings.mdPast performance dataWhat content approaches worked before

Writes

FileWhat it contains
./campaigns/content/{keyword-slug}.mdPublication-ready article with frontmatter
./brand/assets.mdAppends entry for the created content piece
./brand/learnings.mdAppends findings after feedback collection

Required Inputs

  1. Target keyword -- Primary keyword to rank for
  2. Keyword cluster -- Related keywords to include naturally
  3. Search intent -- Informational / Commercial / Transactional
  4. Content type -- Pillar guide / How-to / Comparison / Listicle / etc.
  5. Brand voice profile -- (from voice-profile.md, if available)
  6. Unique angle -- What perspective makes this different?

Pre-fill from brand memory when available. Ask the user only for what's missing.


The Workflow (Single Article)

RESEARCH --> BRIEF --> OUTLINE --> DRAFT --> HUMANIZE --> OPTIMIZE --> SCHEMA --> REVIEW --> SAVE

Phase 1: Research (SERP Analysis)

Use Exa MCP or firecrawl for live SERP research. Analyze top 5 results.

For each result capture: Title/URL, content type, word count, structure, unique angles, gaps, recency, domain type.

Extract SERP features: People Also Ask (ALL of them), Featured Snippet format, AI Overview presence.

Gap analysis: What's missing? What's outdated? What's generic? What's your edge?

Present findings in structured format. See references/serp-analysis-format.md.

If web search unavailable: flag to user, prefix SERP claims with ~, skip to Phase 2 using brand context instead.

Phase 2: Content Brief

Create or enhance an existing brief from /keyword-research. Include: target keyword, secondary keywords, search intent, content type, target word count, audience, unique angle, key points, PAA questions, competitor gaps, internal links, CTA.

Phase 3: Outline

Structure based on content type. See references/content-structures.md for templates (Pillar Guide, How-To, Comparison, Listicle).

Map PAA questions: depth-worthy ones become H2s, brief ones go to FAQ section.

Phase 4: Draft

Voice calibration: Match voice-profile.md if loaded. Default: direct, conversational, specific, opinionated.

Rules:

  • Answer the search query in the first 2-3 sentences
  • Apply the "So What?" chain -- write from the bottom, not the top
  • Specificity over generality (numbers, examples, always)
  • Show your work (how you know, not just what you claim)
  • Use positioning angle from positioning.md to shape perspective

Phase 5: Humanize (Critical)

This is the soul of the skill. See references/anti-ai-detection.md for the full detection pattern guide.

Summary checklist:

  • Kill AI words (delve, comprehensive, crucial, leverage, landscape, etc.)
  • Kill AI phrases ("In today's...", "It's important to note...", "Let's dive in")
  • Break the triple pattern -- humans are messier
  • Inject: personal experience, opinions with reasoning, admitted limitations, specific examples, honest uncertainty, tangents and asides
  • Vary rhythm: short punches, long explanations, fragments, questions

The Read-Aloud Test: If you stumble reading it aloud, rewrite it.

Phase 6: Optimize (On-Page SEO)

[ ] Primary keyword in title (front-loaded), H1, first 100 words, 1+ H2, meta, URL slug
[ ] Secondary keywords in H2s naturally
[ ] Meta description: 150-160 chars, compelling, includes keyword
[ ] Internal links: 4-8 per piece
[ ] External links: 2-4 authoritative sources
[ ] Featured snippet optimization (definition/list/table format)
[ ] Image alt text with relevant keywords

Title format: [Primary Keyword]: [Benefit or Hook] ([Year] if relevant) Under 60 characters, front-load keyword.

Phase 7: Schema Markup (JSON-LD)

Generate for EVERY article:

  1. Article schema -- headline, description, author, dates, publisher, keywords
  2. FAQ schema -- from PAA questions answered in the article
  3. HowTo schema -- if content type is how-to tutorial

Include schema in article frontmatter. See references/schema-templates.md.

Phase 8: Quality Review

Run all checklists before saving:

  • Content quality: Answers title in first 300 words, 3+ specific examples, unique angle present, all PAA answered, SERP gaps addressed
  • Voice quality: No AI-isms, personality present, matches voice-profile.md
  • SEO quality: Keywords placed, meta compelling, links included, schema valid
  • E-E-A-T: Experience shown, expertise demonstrated, sources cited

See references/eeat-examples.md for 20 top-performing human content examples.


Content Refresh Mode

Triggered when content file already exists for the target keyword.

  1. Present existing content summary with options: Refresh / Rewrite / Expand / Start Fresh
  2. If Refresh: Re-run SERP analysis, compare against article:
    • New competitors since publication?
    • New PAA questions not covered?
    • Featured Snippet format changed?
    • Search intent shifted?
  3. Generate specific, actionable update recommendations (not "update the content" but "add section on {topic} after {section} because {evidence}")
  4. Apply updates, bump last_updated and serp_snapshot_date in frontmatter

Scale Mode (Programmatic SEO)

Triggered when user wants template-driven pages at scale ("programmatic SEO", "pages at scale", "100 pages for...", "location pages", etc.).

Core Principles

  1. Unique value per page -- not just swapped variables in a template
  2. Proprietary data wins -- hierarchy: proprietary > product-derived > user-generated > licensed > public
  3. Clean URL structure -- use subfolders, not subdomains
  4. Search intent match -- pages must answer what people are searching
  5. Quality over quantity -- 100 great pages beat 10,000 thin ones

The 12 Playbooks

PlaybookPatternExample
Templates"[Type] template""resume template"
Curation"best [category]""best website builders"
Conversions"[X] to [Y]""$10 USD to GBP"
Comparisons"[X] vs [Y]""webflow vs wordpress"
Examples"[type] examples""landing page examples"
Locations"[service] in [location]""dentists in austin"
Personas"[product] for [audience]""crm for real estate"
Integrations"[product A] + [product B]""slack asana integration"
Glossary"what is [term]""what is pSEO"
TranslationsContent in multiple languagesLocalized content
Directory"[category] tools""ai copywriting tools"
Profiles"[entity name]""stripe ceo"

See references/pseo-playbooks.md for detailed implementation of each playbook.

Choosing a Playbook

If you have...Consider...
Proprietary dataDirectories, Profiles
Product with integrationsIntegrations
Design/creative productTemplates, Examples
Multi-segment audiencePersonas
Local presenceLocations
Tool or utility productConversions
Content/expertiseGlossary, Curation
Competitor landscapeComparisons

You can layer multiple playbooks (e.g., "Best coworking spaces in San Diego").

Scale Mode Implementation

  1. Keyword pattern research -- identify repeating structure, variables, combinations
  2. Data requirements -- what populates each page, how it's updated
  3. Template design -- page structure with conditional content for uniqueness
  4. Internal linking architecture -- hub and spoke model, no orphan pages
  5. Indexation strategy -- prioritize high-volume, noindex thin variations, separate sitemaps by type

Scale Mode Quality Checks

  • Each page provides unique value (not just variable swaps)
  • Unique titles and meta descriptions per page
  • Proper heading structure and schema markup
  • Connected to site architecture, no orphan pages
  • In XML sitemap, crawlable, no conflicting noindex

Worked Example

Target keyword: 'is doordash organic' SERP gap: Top 5 results are forum posts and outdated blog articles. No definitive guide exists.

Article outline:

  1. H1: Is DoorDash Organic? The Complete Guide for Health-Conscious Families
  2. Quick answer (Featured Snippet target): 'DoorDash itself doesn't verify verification status...'
  3. How to find verified-source restaurants on DoorDash (step-by-step with screenshots)
  4. The problem with DoorDash's verification filter (cross-contamination, no certification)
  5. Better alternatives for guaranteed verified meal delivery
  6. FAQ schema: 'Does DoorDash have verified-source options?' / 'How do I know if a restaurant is really verified?'

Word count: 1,800 (benchmark: top 3 results average 1,200 — we go deeper)


File Output Format

File Location

./campaigns/content/{keyword-slug}.md

Slug: lowercase kebab-case, remove stop words if over 60 chars.

Frontmatter

---
title: "{SEO-Optimized Title}"
meta_description: "{150-160 character meta description}"
primary_keyword: "{target keyword}"
secondary_keywords: ["{kw1}", "{kw2}", "{kw3}"]
content_type: "{pillar-guide / how-to / comparison / listicle}"
search_intent: "{informational / commercial / transactional}"
target_word_count: {number}
actual_word_count: {number}
author: "{author name}"
date_created: "{YYYY-MM-DD}"
last_updated: "{YYYY-MM-DD}"
status: "draft"
serp_snapshot_date: "{YYYY-MM-DD}"
paa_questions_answered: {number}
schema_article: |
  {Article JSON-LD}
schema_faq: |
  {FAQ JSON-LD}
---

Chain Offers

After saving, present:

  • /content-atomizer -- distribute across social (3-5 LinkedIn, 8-12 Twitter, 2-3 IG carousels)
  • /newsletter -- feature article in next edition
  • /email-sequences -- nurture readers into subscribers
  • /seo-content -- write next article from keyword plan
  • "Refresh" to update this article later

Error States

  • No web search: Skip Phase 1, note limitation, proceed with brand context
  • No target keyword: Ask user or suggest /keyword-research
  • No voice profile: Use defaults (direct, conversational), suggest /brand-voice
  • Can't save: Display content for manual copy, suggest checking permissions

Anti-Patterns

Anti-patternInsteadWhy
Skipping Phase 5 (Humanize) to save timeCut research depth before cutting humanizationUnhumanized content reads like AI slop — readers bounce, Google devalues it, and the brand takes a credibility hit. Content that sounds like a committee wrote it doesn't earn trust, links, or shares.
Skipping schema markupAlways add Article + FAQ JSON-LD — it takes minutesSchema compounds over time: rich results, AI citations, and structured search features for the life of the content. Skipping it leaves free visibility on the table.
Keyword-stuffing headingsOne keyword in H1, natural secondary keywords in H2sGoogle detects keyword stuffing and users find it off-putting. If every heading reads like an SEO template, it's over-optimized.
Starting with a generic introAnswer the search query in sentence one"In today's digital world..." tells the reader nothing. The search query brought them here — if the value prop isn't instant, they bounce.

Implementation Notes

  1. Never skip SERP analysis when web search is available -- it's the differentiator
  2. Always check for existing content first -- refresh mode is high value
  3. Always generate schema markup -- Article + FAQ JSON-LD minimum
  4. Always save to disk -- the file IS the deliverable
  5. PAA questions are mandatory -- every one appears as H2 or FAQ entry
  6. Phase 5 (Humanize) is non-negotiable -- run the full AI detection checklist
  7. Always offer chain to /content-atomizer -- one article = 10+ social assets
  8. Register every piece in ./brand/assets.md
  9. Feedback closes the loop -- always present, always log
Skill path
skills/seo-content/SKILL.md
Commit SHA
f12fbcbe4929
Repository license
MIT
Data collected