MoizIbnYousaf/marketing-cli

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

82Collecting
See how to use itView GitHub source
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/openseo-keyword-research"
Automated source guide

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

Reorganized from the pinned upstream SKILL.md

Turn openseo-keyword-research's source instructions into a guide you can follow

According to the pinned SKILL.md from MoizIbnYousaf/marketing-cli: Turn seed topics into a prioritized, MEASURED keyword opportunity set and land it in brand/keyword-plan.md. mktg's keyword-research is the playbook (methodology); this skill is the measured-data engine behind it when OpenSEO is configured.

npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/openseo-keyword-research"
Check the pinned source

Best fit

  • 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

Bring this context

  • A concrete task that matches the documented purpose of openseo-keyword-research.
  • The files, examples, or context the task depends on.
  • Your constraints, target environment, and definition of done.

Expected outputs

  • A result that follows the pinned openseo-keyword-research instructions.
  • A concise record of assumptions, inputs used, and unresolved questions.
  • A final check against the source workflow and relevant permission signals.

Key source sections

Read openseo-keyword-research through these 5 source sections

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

01

Workflow

1. Normalize seeds into 2–5 distinct research angles filtered by positioning. 2. GSC connected? Pull striking-distance terms first and hydrate with getkeywordmetrics. Work that list before broad discovery. 3. researchkeywords per angle; getkeywordmetrics to hydrate; getrankedkey…

SKILL.md · Workflow
Normalize seeds into 2–5 distinct research angles filtered by positioning.GSC connected? Pull striking-distance terms first and hydrate with getkeywordmetrics. Work that list before broad discovery.researchkeywords per angle; getkeywordmetrics to hydrate; getrankedkeywords if a domain is in the brief.
02

On Activation

1. Catalog check: mktg catalog info openseo --json --fields configured — if not configured, stop spending: state the gap and hand off to Exa-backed keyword-research with metrics marked unknown. 2. Project binding: read .seo/openseo.json for projectId. Missing → run openseo-proje…

SKILL.md · On Activation
Catalog check: mktg catalog info openseo --json --fields configured — if not configured, stop spending: state the gap and hand off to Exa-backed keyword-research with metrics marked unknown.Project binding: read .seo/openseo.json for projectId. Missing → run openseo-project-setup first (or ask the user for the project id).Brand grounding: read brand/positioning.md + existing brand/keyword-plan.md (tolerate templates). Business-fit beats volume-fit — the positioning file is the filter.
03

OpenSEO MCP Tools

getsearchconsoleperformance: when GSC is connected, START here. High rowLimit, filter average position 5–20 client-side (the API sorts by clicks, not position). These striking-distance terms are the fastest wins — and z…

SKILL.md · OpenSEO MCP Tools
getsearchconsoleperformance: when GSC is connected, START here. High rowLimit, filter average position 5–20 client-side (the API sorts by clicks, not position). These striking-distance terms are the fastest wins — and z…getkeywordmetrics: hydrate up to 700 keywords per call with volume, KD, intent, CPC, trends. Use on striking-distance terms and every candidate set.researchkeywords: discovery from 1–5 seeds per call; prefer 150 results unless exhaustive research was requested.
04

Cost Discipline

State estimated call counts before bulk pulls (200 keywords) and get confirmation.

SKILL.md · Cost Discipline
State estimated call counts before bulk pulls (200 keywords) and get confirmation.Small exploratory batches are fine without asking.GSC-first ordering exists precisely to avoid spending credits on data the user already owns.
05

Anti-Patterns

Inventing metrics when OpenSEO returns nothing — because a hallucinated KD of "about 35" silently becomes the foundation of a content plan. If OpenSEO doesn't return a value, write unknown.

SKILL.md · Anti-Patterns
Inventing metrics when OpenSEO returns nothing — because a hallucinated KD of "about 35" silently becomes the foundation of a content plan. If OpenSEO doesn't return a value, write unknown.Volume-first prioritization — because a 10k-volume term that doesn't match the product converts nobody and burns months. Positioning filters the list before metrics rank it.savekeywords without explicit confirmation — because saves mutate the user's OpenSEO account and bulk saves burn credit. Ask, state the count, then save.

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 openseo-keyword-research 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 openseo-keyword-research source to [task]. Pay particular attention to these source sections: “Workflow”, “On Activation”, “OpenSEO MCP Tools”, “Cost Discipline”, “Anti-Patterns”. 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 openseo-keyword-research 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 “Workflow” has been checked.

The source section “On Activation” has been checked.

The source section “OpenSEO MCP Tools” has been checked.

The source section “Cost Discipline” 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

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

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

FAQ

What does openseo-keyword-research do?

Turn seed topics into a prioritized, MEASURED keyword opportunity set and land it in brand/keyword-plan.md. mktg's keyword-research is the playbook (methodology); this skill is the measured-data engine behind it when OpenSEO is configured.

How do I start using openseo-keyword-research?

The catalog detected this source-specific install command: npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/openseo-keyword-research". 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
82/100
Source repository last pushed

Quality breakdown

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

82/100
Documentation24/30
Specificity18/25
Maintenance20/20
Trust signals20/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

seo-content by MoizIbnYousaf

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

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-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 4 min

OpenSEO Keyword Research

Turn seed topics into a prioritized, MEASURED keyword opportunity set and land it in brand/keyword-plan.md. mktg's keyword-research is the playbook (methodology); this skill is the measured-data engine behind it when OpenSEO is configured.

On Activation

  1. Catalog check: mktg catalog info openseo --json --fields configured — if not configured, stop spending: state the gap and hand off to Exa-backed keyword-research with metrics marked unknown.
  2. Project binding: read .seo/openseo.json for projectId. Missing → run openseo-project-setup first (or ask the user for the project id).
  3. Brand grounding: read brand/positioning.md + existing brand/keyword-plan.md (tolerate templates). Business-fit beats volume-fit — the positioning file is the filter.

OpenSEO MCP Tools

  • get_search_console_performance: when GSC is connected, START here. High rowLimit, filter average position ~5–20 client-side (the API sorts by clicks, not position). These striking-distance terms are the fastest wins — and zero extra credit cost.
  • get_keyword_metrics: hydrate up to 700 keywords per call with volume, KD, intent, CPC, trends. Use on striking-distance terms and every candidate set.
  • research_keywords: discovery from 1–5 seeds per call; prefer ~150 results unless exhaustive research was requested.
  • get_ranked_keywords: when the brief includes a domain/page — exact ranking rows (near-misses, competitor-owned terms).
  • get_serp_results: inspect SERPs for top candidates when intent is ambiguous. Keep batches small (≤10 queries).
  • list_saved_keywords: avoid re-researching what's already saved.
  • save_keywords: ONLY after explicit user confirmation, with concise tags (topic:<t>, intent:<i>, page:<slug>).

Workflow

  1. Normalize seeds into 2–5 distinct research angles filtered by positioning.
  2. GSC connected? Pull striking-distance terms first and hydrate with get_keyword_metrics. Work that list before broad discovery.
  3. research_keywords per angle; get_keyword_metrics to hydrate; get_ranked_keywords if a domain is in the brief.
  4. Remove irrelevant, duplicate, branded-only, and off-intent terms.
  5. Prioritize by practical opportunity: business fit → clear intent → reasonable KD → volume/CPC signal → winnable SERP.
  6. get_serp_results for high-potential or ambiguous terms when SERP intent would change the call.
  7. Write the shortlist into brand/keyword-plan.md (preserve its required sections per brand/SCHEMA.md; confirm before overwriting populated sections).
  8. Present: best opportunity theme, top keywords now, keywords to save, SERP caveats. Then next actions: openseo-keyword-clustering, seo-content, or save.

Cost Discipline

  • State estimated call counts before bulk pulls (>200 keywords) and get confirmation.
  • Small exploratory batches are fine without asking.
  • GSC-first ordering exists precisely to avoid spending credits on data the user already owns.

Anti-Patterns

  • Inventing metrics when OpenSEO returns nothing — because a hallucinated KD of "about 35" silently becomes the foundation of a content plan. If OpenSEO doesn't return a value, write unknown.
  • Volume-first prioritization — because a 10k-volume term that doesn't match the product converts nobody and burns months. Positioning filters the list before metrics rank it.
  • save_keywords without explicit confirmation — because saves mutate the user's OpenSEO account and bulk saves burn credit. Ask, state the count, then save.
  • Skipping the GSC-first pass when GSC is connected — because striking-distance terms (positions 5–20) are provably the cheapest wins in SEO and they're free to read. Discovery research before first-party data is wasted spend.
  • Overwriting a populated keyword-plan.md without confirmation — because that file is brand memory other skills build on (seo-content, seo-machine). Merge; confirm destructive rewrites.

Progressive Enhancement

LevelBehavior
L0 (no OpenSEO)Hand off to Exa-backed keyword-research; metrics unknown
L1 (OPENSEO_API_KEY)Metrics via available calls; MCP steps deferred
L2 (MCP connected)Full workflow incl. SERP validation
L3 (GSC connected)Striking-distance-first ordering; highest-signal path

Adapted from every-app/open-seo .agents/skills/keyword-research (MIT). Workflow and tool guidance upstream; mktg brand-memory writes, positioning filter, and cost discipline added here.

Skill path
skills/openseo-keyword-research/SKILL.md
Commit SHA
f12fbcbe4929
Repository license
MIT
Data collected