Source profileQuality 75/100

MoizIbnYousaf/marketing-cli/skills/openseo-keyword-clustering/SKILL.md

openseo-keyword-clustering

Cluster keywords by search intent and map each cluster to an existing or proposed page, with cannibalization detection from Search Console. Use this skill when the user has a keyword list (saved set, brand/keyword-plan.md, GSC export, or seed topic) and needs page targets, content briefs, or a site map for SEO pages — especially before seo-content or seo-machine page generation. Triggers: "cluster keywords", "keyword mapping", "map keywords to pages", "keyword cannibalization", "which page shoul

Source repository stars
27
Declared platforms
0
Static risk flags
0
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Group keywords into page-level clusters and assign each to an existing URL, a new page proposal, or a do-not-target bucket. Output lands in marketing/seo/clusters/.md (per-cluster briefs) and feeds seo-content / seo-machine with measured page targets.

Best for

  • Use this skill when the user has a keyword list (saved set, brand/keyword-plan.

Not for

  • Clustering by word similarity alone — because "best crm for dentists" and "crm pricing dentists" share words but not intent, and forcing them onto one page guarantees neither ranks. SERP intent wins; check overlap when…
  • Clustering tiny sets — because 6 keywords don't need a clustering framework, they need a paragraph. Under 10 terms, write a simple map.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/openseo-keyword-clustering"
Safe inspection promptEditorial

Inspect the Agent Skill "openseo-keyword-clustering" from https://github.com/MoizIbnYousaf/marketing-cli/blob/f12fbcbe4929584697b309b9096c9427b0cfce8e/skills/openseo-keyword-clustering/SKILL.md at commit f12fbcbe4929584697b309b9096c9427b0cfce8e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    1. Assemble the candidate set from the source hierarchy above; dedupe and drop off-strategy terms. 2. Cluster by intent and page type: same SERP intent + similar ranking pages belong together; different intent/buyer stage/SERP format splits. Lexical similarity is NOT evidence of…

    Assemble the candidate set from the source hierarchy above; dedupe and drop off-strategy terms.Cluster by intent and page type: same SERP intent + similar ranking pages belong together; different intent/buyer stage/SERP format splits. Lexical similarity is NOT evidence of same-page fit.Borderline terms: small getserpresults overlap check.
  2. 02

    On Activation

    1. Catalog + binding: mktg catalog info openseo --json --fields configured and .seo/openseo.json for projectId. No binding → openseo-project-setup first. No OpenSEO at all → do lexical clustering with Exa context but label every cluster "SERP-unvalidated." 2. Keyword source: pre…

    Catalog + binding: mktg catalog info openseo --json --fields configured and .seo/openseo.json for projectId. No binding → openseo-project-setup first. No OpenSEO at all → do lexical clustering with Exa context but label…Keyword source: prefer (a) brand/keyword-plan.md populated sections, (b) listsavedkeywords with a tag, (c) GSC live data, (d) seed discovery via researchkeywords. Under 10 usable terms → simple map, no clustering ceremo…1. Catalog + binding: mktg catalog info openseo --json --fields configured and .seo/openseo.json for projectId. No binding → openseo-project-setup first. No OpenSEO at all → do lexical clustering with Exa context but la…
  3. 03

    OpenSEO MCP Tools

    getsearchconsoleperformance with dimensions: ["query","page"]: the cannibalization truth source — one query splitting impressions across multiple URLs means existing cannibalization, not theoretical risk.

    getsearchconsoleperformance with dimensions: ["query","page"]: the cannibalization truth source — one query splitting impressions across multiple URLs means existing cannibalization, not theoretical risk.getrankedkeywords: domain/page-driven clustering from exact ranking rows + URLs.getserpresults: SERP-overlap validation for borderline terms (small batches, ≤10).
  4. 04

    Output Format

    Summary first: cluster count, pages to create, pages to update, cannibalization issues. Then:

    Summary first: cluster count, pages to create, pages to update, cannibalization issues. Then:

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score75/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars27SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
MoizIbnYousaf/marketing-cli
Skill path
skills/openseo-keyword-clustering/SKILL.md
Commit
f12fbcbe4929584697b309b9096c9427b0cfce8e
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

OpenSEO Keyword Clustering

Group keywords into page-level clusters and assign each to an existing URL, a new page proposal, or a do-not-target bucket. Output lands in marketing/seo/clusters/*.md (per-cluster briefs) and feeds seo-content / seo-machine with measured page targets.

On Activation

  1. Catalog + binding: mktg catalog info openseo --json --fields configured and .seo/openseo.json for projectId. No binding → openseo-project-setup first. No OpenSEO at all → do lexical clustering with Exa context but label every cluster "SERP-unvalidated."
  2. Keyword source: prefer (a) brand/keyword-plan.md populated sections, (b) list_saved_keywords with a tag, (c) GSC live data, (d) seed discovery via research_keywords. Under 10 usable terms → simple map, no clustering ceremony.

OpenSEO MCP Tools

  • get_search_console_performance with dimensions: ["query","page"]: the cannibalization truth source — one query splitting impressions across multiple URLs means existing cannibalization, not theoretical risk.
  • get_ranked_keywords: domain/page-driven clustering from exact ranking rows + URLs.
  • get_serp_results: SERP-overlap validation for borderline terms (small batches, ≤10).
  • list_saved_keywords / research_keywords: source sets.
  • save_keywords: apply cluster tags ONLY after confirmation.

Workflow

  1. Assemble the candidate set from the source hierarchy above; dedupe and drop off-strategy terms.
  2. Cluster by intent and page type: same SERP intent + similar ranking pages belong together; different intent/buyer stage/SERP format splits. Lexical similarity is NOT evidence of same-page fit.
  3. Borderline terms: small get_serp_results overlap check.
  4. Assign each cluster: existing URL (if supplied and fitting), new-page proposal, or do-not-target/later.
  5. Cannibalization check: GSC query+page data first; otherwise flag where two proposed pages share one intent.
  6. Write per-cluster briefs to marketing/seo/clusters/<cluster-slug>.md: page type, searcher problem, required sections, internal-link targets, priority.
  7. Optionally tag clusters with save_keywords after confirmation.
  8. Hand off: seo-content for single pages, seo-machine for programmatic batches — both now have measured targets instead of vibes.

Output Format

Summary first: cluster count, pages to create, pages to update, cannibalization issues. Then:

ClusterPrimary keywordSecondary keywordsIntentTarget pagePriorityNotes

Anti-Patterns

  • Clustering by word similarity alone — because "best crm for dentists" and "crm pricing dentists" share words but not intent, and forcing them onto one page guarantees neither ranks. SERP intent wins; check overlap when unsure.
  • Clustering tiny sets — because 6 keywords don't need a clustering framework, they need a paragraph. Under 10 terms, write a simple map.
  • Theoretical cannibalization warnings without data — because crying cannibalization on every overlapping term freezes page production; GSC query+page splits are the only proof. No GSC → label it "potential," not "confirmed."
  • Retagging saved keywords without confirmation — because tags are shared account state; a bulk retag can destroy someone else's organization. Confirm first.
  • Producing clusters with no page assignment — because a cluster without a target page is trivia. Every cluster ends in an existing URL, a new proposal, or an explicit do-not-target decision.

Adapted from every-app/open-seo .agents/skills/keyword-clustering (MIT). Workflow upstream; mktg artifact paths, brand-memory reads, and handoff wiring added here.

Alternatives

Compare before choosing

Computed 92165

JasonColapietro/suede-creator-skills

suede-workflow-skills

Umbrella workflow for 67 public skills: Full Send, copy, design, code review, SEO, launch packaging, MCP QA, iOS and Android app shipping, and creator workflows. Loads the full public skill pack.

Computed 9227

MoizIbnYousaf/marketing-cli

free-tool-strategy

Plans free tools, calculators, generators, and interactive widgets that attract target audience through search and social sharing. Engineering as marketing — build something useful, capture leads. Use when someone wants to build a free tool for marketing, says 'free tool', 'calculator', 'generator', 'engineering as marketing', 'side project marketing', 'interactive widget', 'lead generation tool', 'SEO tool', 'growth hack', 'build something to attract users', or wants to attract users through ut

Computed 9027

MoizIbnYousaf/marketing-cli

cmo

A senior marketing operator for any project. Orchestrates 72 marketing skills to build brands, generate content, and distribute across channels. Use this skill whenever the user wants to do marketing - brand voice, copy, SEO, email, social, launches, or anything marketing-related. Also triggers on 'help me market', 'write copy', 'launch strategy', 'brand voice', 'SEO', 'content', 'email sequence', 'social posts', 'landing page', 'grow', 'audience', 'competitors', 'what should I do next for marke

Computed 9027

MoizIbnYousaf/marketing-cli

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