Source profileQuality 87/100

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

openseo

Use OpenSEO (open-source Semrush/Ahrefs alternative) as the SEO data plane — keyword difficulty, search volume, SERP results, ranked keywords, backlinks, rank tracking, and Google Search Console. Use this skill whenever someone asks for keyword difficulty, KD, search volume, SERP positions, domain rankings, backlink data, rank tracking, or GSC performance. ALWAYS prefer OpenSEO's measured data over estimated metrics when the catalog is configured; fall back to Exa-backed keyword-research (with a

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

You connect mktg's SEO playbooks to a running OpenSEO instance (hosted at openseo.so or self-hosted Docker). You do NOT invent metrics. You do NOT call DataForSEO directly. You route measured data (KD, volume, SERP, ranked keywords, backlinks, rank tracking, GSC) into mktg artif…

Best for

    Not for

    • Inventing KD/volume numbers — because agents hallucinate plausible metrics and downstream decisions (content priorities, page generation) get built on fiction. If OpenSEO is not configured, the metric is unknown, full s…
    • Calling DataForSEO directly from mktg — because it bypasses OpenSEO's project state, caching, and cost controls, and duplicates the vendor integration mktg deliberately does not own. Always go through OpenSEO.

    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"
    Safe inspection promptEditorial

    Inspect the Agent Skill "openseo" from https://github.com/MoizIbnYousaf/marketing-cli/blob/f12fbcbe4929584697b309b9096c9427b0cfce8e/skills/openseo/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

      Step 1 — Verify the catalog is registered and configured

      Exit code 1 → the openseo catalog is not registered (upgrade marketing-cli). Stop.

      Exit code 1 → the openseo catalog is not registered (upgrade marketing-cli). Stop.configured: false → env vars are missing. Build the fix string from missingenvs. Canonical envs: OPENSEOAPIKEY (required for non-interactive automation) and OPENSEOAPIBASE (REST base; self-host override). The MCP URL is…configured: true → proceed. If only the MCP client is connected (OAuth login in the user's agent client) but no API key exists, treat readiness as mcpclientonly: MCP tools work interactively, headless automation does no…
    2. 02

      Step 2 — Establish the data-plane connection

      Preferred: OpenSEO MCP tools via the agent's MCP client (root .mcp.json ships an openseo server entry — the user connects it once in their client). Hosted MCP uses OAuth login; self-host uses its own base URL via OPENSEOMCPURL.

      Preferred: OpenSEO MCP tools via the agent's MCP client (root .mcp.json ships an openseo server entry — the user connects it once in their client). Hosted MCP uses OAuth login; self-host uses its own base URL via OPENSE…If no MCP connection and no OPENSEOAPIKEY: state the gap and downgrade to the Exa/Firecrawl path (Step 3 fallback). Do not fabricate a connection.
    3. 03

      Step 3 — Route to the playbook with measured inputs

      Hand the measured data to the SEO playbooks instead of running parallel research:

      Hand the measured data to the SEO playbooks instead of running parallel research:Fallback (no OpenSEO): run the Exa-backed keyword-research path and mark every metric unknown. Say plainly: "OpenSEO is not configured — these are qualitative findings, not measured KD/volume. Set OPENSEOAPIKEY (or conn…
    4. 04

      North Star

      1. Measured data beats estimated data. When OpenSEO is configured, metrics come from OpenSEO's MCP tools. When it is not, you say so explicitly and fall back to Exa-backed qualitative research — metrics marked unknown. 2. mktg never calls DataForSEO directly. OpenSEO owns the ve…

      Measured data beats estimated data. When OpenSEO is configured, metrics come from OpenSEO's MCP tools. When it is not, you say so explicitly and fall back to Exa-backed qualitative research — metrics marked unknown.mktg never calls DataForSEO directly. OpenSEO owns the vendor relationship; mktg talks to OpenSEO only.Expensive calls (bulk research, savekeywords) follow dry-run/confirm discipline — DataForSEO credit is real money.
    5. 05

      On Activation

      Run these steps before anything else. Each has a fallback that keeps the skill useful when OpenSEO is absent.

      Exit code 1 → the openseo catalog is not registered (upgrade marketing-cli). Stop.configured: false → env vars are missing. Build the fix string from missingenvs. Canonical envs: OPENSEOAPIKEY (required for non-interactive automation) and OPENSEOAPIBASE (REST base; self-host override). The MCP URL is…configured: true → proceed. If only the MCP client is connected (OAuth login in the user's agent client) but no API key exists, treat readiness as mcpclientonly: MCP tools work interactively, headless automation does no…

    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 score87/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/SKILL.md
    Commit
    f12fbcbe4929584697b309b9096c9427b0cfce8e
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    OpenSEO — SEO Data Plane

    You connect mktg's SEO playbooks to a running OpenSEO instance (hosted at openseo.so or self-hosted Docker). You do NOT invent metrics. You do NOT call DataForSEO directly. You route measured data (KD, volume, SERP, ranked keywords, backlinks, rank tracking, GSC) into mktg artifacts like brand/keyword-plan.md.

    OpenSEO is a data plane, not a playbook. The SEO methodology lives in keyword-research, seo-content, seo-audit, off-page-seo, ai-seo, and seo-machine — this skill is how those playbooks stop guessing.

    North Star

    1. Measured data beats estimated data. When OpenSEO is configured, metrics come from OpenSEO's MCP tools. When it is not, you say so explicitly and fall back to Exa-backed qualitative research — metrics marked unknown.
    2. mktg never calls DataForSEO directly. OpenSEO owns the vendor relationship; mktg talks to OpenSEO only.
    3. Expensive calls (bulk research, save_keywords) follow dry-run/confirm discipline — DataForSEO credit is real money.
    4. OpenSEO project state syncs into .seo/ and brand/keyword-plan.md; it never becomes a competing second source of truth.

    On Activation

    Run these steps before anything else. Each has a fallback that keeps the skill useful when OpenSEO is absent.

    Step 1 — Verify the catalog is registered and configured

    mktg catalog info openseo --json --fields configured,missing_envs,auth.credential_envs,mcp
    
    • Exit code 1 → the openseo catalog is not registered (upgrade marketing-cli). Stop.
    • configured: false → env vars are missing. Build the fix string from missing_envs. Canonical envs: OPENSEO_API_KEY (required for non-interactive automation) and OPENSEO_API_BASE (REST base; self-host override). The MCP URL is mcp.default_url (https://app.openseo.so/mcp) unless OPENSEO_MCP_URL overrides it for self-host.
    • configured: true → proceed. If only the MCP client is connected (OAuth login in the user's agent client) but no API key exists, treat readiness as mcp_client_only: MCP tools work interactively, headless automation does not.

    Step 2 — Establish the data-plane connection

    Preferred: OpenSEO MCP tools via the agent's MCP client (root .mcp.json ships an openseo server entry — the user connects it once in their client). Hosted MCP uses OAuth login; self-host uses its own base URL via OPENSEO_MCP_URL.

    If no MCP connection and no OPENSEO_API_KEY: state the gap and downgrade to the Exa/Firecrawl path (Step 3 fallback). Do not fabricate a connection.

    Step 3 — Route to the playbook with measured inputs

    Hand the measured data to the SEO playbooks instead of running parallel research:

    JobRouteData you supply
    Keyword opportunity discoverykeyword-researchKD, volume, intent from OpenSEO research tools
    Programmatic SEO inputsseo-machineValidate KD/competition before page generation
    Backlink gapsoff-page-seoOpenSEO backlink overview for the domain
    Rank drops / striking distanceai-seo, seo-auditRank tracker + GSC snapshots

    Fallback (no OpenSEO): run the Exa-backed keyword-research path and mark every metric unknown. Say plainly: "OpenSEO is not configured — these are qualitative findings, not measured KD/volume. Set OPENSEO_API_KEY (or connect the MCP) to upgrade this run."

    Cost Discipline

    • Research calls in small batches are fine. Bulk pulls (hundreds of keywords) and save_keywords writes REQUIRE user confirmation first — say the estimated call count out loud.
    • Default to conservative result limits; widen only when asked.
    • Log surprises (unexpected credit spend, rate limits) to brand/learnings.md via mktg run openseo --learning '{...}'.

    State Contract

    OpenSEO conceptmktg home
    Project id / domain.seo/openseo.json ({ projectId, domain, mcpUrl, updatedAt }) — create on first link
    Saved keywordsMerge into brand/keyword-plan.md (confirm before overwriting)
    Rank snapshots.seo/rank-snapshots/<date>.json + short summary md
    Backlink overview.seo/backlink-overview.json (input for off-page-seo)

    One resume protocol per long-arc SEO effort: docs/seo-machine.md stays the single tracker; OpenSEO data feeds it, it does not fork it.

    Anti-Patterns

    • Inventing KD/volume numbers — because agents hallucinate plausible metrics and downstream decisions (content priorities, page generation) get built on fiction. If OpenSEO is not configured, the metric is unknown, full stop.
    • Calling DataForSEO directly from mktg — because it bypasses OpenSEO's project state, caching, and cost controls, and duplicates the vendor integration mktg deliberately does not own. Always go through OpenSEO.
    • Saving keywords or running bulk research without confirmation — because every call can spend DataForSEO credit; silent bulk spends are how budgets blow up. Confirm first, state the call count.
    • Treating the OpenSEO web UI as required — because the MCP/API surface is the agent path; the UI is a human convenience. Never block an agent run waiting for a human to click something in a dashboard.
    • Forking SEO state into a second system of record — because two keyword lists drift and agents stop trusting both. Sync INTO .seo/ + brand/keyword-plan.md; OpenSEO stays the measurement backend, mktg stays the playbook brain.

    Progressive Enhancement

    LevelBehavior
    L0 (no envs, no MCP)Gap note + Exa-backed keyword-research fallback; metrics unknown
    L1 (OPENSEO_API_KEY set)Non-interactive research calls where REST exists; MCP still preferred
    L2 (MCP connected)Full tool surface: research, SERP, ranked keywords, backlinks, GSC
    L3 (project linked + synced).seo/ snapshots feed seo-machine and off-page-seo automatically

    Integration shape follows the postiz catalog pattern: raw HTTP/MCP over the network boundary, never vendored code. OpenSEO is MIT-licensed (every-app/open-seo).

    Alternatives

    Compare before choosing

    Computed 9327

    MoizIbnYousaf/marketing-cli

    off-page-seo

    Backlink + distribution checklist that expands a site's KD ceiling beyond what on-page work alone can earn. Use when the user mentions 'backlinks', 'off-page SEO', 'directory submissions', 'guest posts', 'outreach targets', 'link building', 'submit to directories', 'get listed in listicles', 'Product Hunt launch backlinks', or asks 'how do I get more domain authority'. Generates a prioritized, researched target list across directories, listicles, and guest-post candidates — does NOT submit anyth

    Computed 9237,126

    github/awesome-copilot

    competitor-ad-intelligence

    Use this skill when the user asks to analyze, tear down, or reverse-engineer a competitor's paid ads. Trigger for prompts like "what ads is [competitor] running", "tear down their ad strategy", "competitor ad analysis", "find ad angles we haven't tried", or "reverse-engineer their paid funnel". Do not trigger for organic/SEO competitor research or website positioning analysis.

    Computed 9227

    MoizIbnYousaf/marketing-cli

    seo-machine

    Build an organic-traffic operating system for any site or app: a multi-phase, resumable engine that ships programmatic landing pages (alternatives, comparisons, use-cases, playbooks) on top of real keyword research. Use when the user says 'SEO machine', 'build organic traffic', 'rank on Google', 'we need traffic', 'alternatives pages', 'comparison pages', '/for/ pages', 'programmatic SEO', or 'build an SEO engine'. Distinct from `seo-audit` (one-off diagnostic) and `seo-content` (single-article

    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