New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Uses OpenSEO as the measured SEO data plane for keyword

OpenSEO — Measured SEO Data Plane

by MoizIbnYousaf · MIT license · ★ 31 on GitHub

OpenSEO — Measured SEO Data Plane cover

Uses OpenSEO as the measured SEO data plane for keyword volume and difficulty, SERPs, ranked keywords, backlinks, local SEO, rank tracking, Search Console, GA4, and site audits. Use for measured SEO metrics, indexing evidence, organic…

---
name: openseo
description: >-
  Uses OpenSEO as the measured SEO data plane for keyword volume and difficulty,
  SERPs, ranked keywords, backlinks, local SEO, rank tracking, Search Console,
  GA4, and site audits. Use for measured SEO metrics, indexing evidence,
  organic analytics, local rankings, backlink profiles, or rank trackers.
  Prefer OpenSEO over guessed metrics when connected; otherwise continue with
  qualitative web research and mark numeric metrics unknown.
category: seo
tier: nice-to-have
layer: strategy
reads:
  - brand/keyword-plan.md
writes:
  - brand/keyword-plan.md
  - brand/learnings.md
env_vars:

Overview

OpenSEO supplies evidence; mktg skills supply methodology. Communicate only through OpenSEO's MCP-over-HTTP endpoint. There is no general OpenSEO REST research API, and mktg never calls DataForSEO directly.

Manual install (npx, ZIP)
Claude Codenpx skills add MoizIbnYousaf/marketing-cli --skill openseo -g -a claude-code
Claude Code (degit)npx degit MoizIbnYousaf/marketing-cli/skills/openseo#main ~/.claude/skills/openseo
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md6.1 KB
Read SKILL.md here
MoizIbnYousaf/main1 file shown
SKILL.md
Show the full text118 lines

OpenSEO — Measured SEO Data Plane

OpenSEO supplies evidence; mktg skills supply methodology. Communicate only through OpenSEO's MCP-over-HTTP endpoint. There is no general OpenSEO REST research API, and mktg never calls DataForSEO directly.

On Activation

  1. Run mktg seo status --json --fields readiness,catalog,project,bindingCorrupt,state.
  2. Interpret readiness:
    • hosted_oauth_ready: agent MCP client is authenticated interactively.
    • hosted_api_key_ready: headless hosted MCP can use OPENSEO_API_KEY.
    • selfhost_ready: bound/connected non-hosted MCP endpoint; local Docker HTTP is allowed only on loopback.
    • not_configured: continue through Exa/crawl/manual evidence and label KD, volume, CPC, authority, and rank unknown.
  3. Read .seo/openseo.json. If absent and project-scoped tools are needed, use openseo-project-setup.
  4. Read get_project_context before rebuying research. Use its research log to identify still-fresh evidence.
  5. Select only the tools needed from the v0.1.6 tool map.

Authentication

  • Root .mcp.json intentionally declares the hosted URL without a bearer header so MCP clients can perform OpenSEO OAuth.
  • Headless clients may add Authorization: Bearer ${OPENSEO_API_KEY} or x-api-key: ${OPENSEO_API_KEY} in their private client config. Never write a key value into the repository.
  • OPENSEO_MCP_URL overrides the endpoint for self-hosting. Hosted default is https://app.openseo.so/mcp.
  • mktg catalog info openseo reports headless API-key readiness; mktg seo status distinguishes OAuth, API key, and self-host modes.

Route Evidence, Do Not Duplicate Playbooks

Need OpenSEO evidence mktg owner
Keyword demand/opportunity keyword research, metrics, ranked terms, GSC openseo-keyword-research
Page mapping/cannibalization query+page GSC, SERPs, ranked URLs openseo-keyword-clustering
Market/competitor SERP competitors, domain/ranked terms, backlink profiles competitive OpenSEO skills
Technical/indexing site audit, URL inspection, GSC seo-audit
Local visibility business, local SERP, reviews, categories, rank grid seo-audit with local mode/brief
Organic outcomes GA4 landing/page/event/acquisition/opportunity tools seo-audit, seo-content, seo-machine
AEO hypotheses SERP, index, audit, backlink, GSC, GA4 evidence only ai-seo owns direct answer-engine observations

Cost and Mutation Policy

Before a paid batch, state the exact tool(s), item counts, requested limits, and cost shape. OpenSEO's server requests confirmation above its large-credit threshold, but mktg still asks whenever the planned spend is material or recurring.

Separate spend from mutation:

  • whoami, project/context reads, saved-keyword reads, GSC, and GA4 are free reads.
  • save_keywords, create_project, tags, and update_project_context mutate shared account state but do not themselves consume DataForSEO credits; confirm broad/destructive changes.
  • research, SERP, backlinks, local SEO, site audit, and rank runs may consume credits.
  • scheduled rank tracking requires estimate_rank_tracker_cost, explicit approval, and the approved credit ceiling passed to the write/run call.

State Contract

Evidence Local contract
project/domain/MCP URL .seo/openseo.json
keyword transfer .seo/keywords-sync.json → mktg seo sync-keywords --confirm
rank observations .seo/rank-snapshots/<date>.json
backlinks .seo/backlinks/<date>.json with target scope, pagination, and provider limits
GSC / GA4 exports .seo/gsc/, .seo/ga4/ when a file snapshot is needed
site audits .seo/audits/<audit-id>.json plus summary

OpenSEO remains the measurement backend; brand/ and the active playbook tracker remain mktg's decision memory.

Anti-Patterns

  • Inventing REST endpoints — upstream automation is MCP-over-HTTP; guessed REST paths fail and misstate the security boundary.
  • Treating configured: false as proof OAuth is disconnected — catalog readiness is headless env readiness; mktg seo status owns the richer truth.
  • Calling DataForSEO directly — this bypasses OpenSEO's project, usage, and cost controls.
  • Calling free account mutations “paid research” — spend and shared-state risk need different approvals.
  • Saving only backlink totals — scope (exact, subfolder, domain, subdomains), pagination, and provider limitations determine what totals mean.
  • Claiming OpenSEO MCP measures AI answers — v0.1.6 has no AI Visibility MCP tools. Use ai-seo direct observations and OpenSEO supporting evidence.

Progressive Enhancement

Level Behavior
L0 Qualitative web/manual evidence; metrics unknown.
L1 Hosted OAuth or API key exposes measured MCP tools.
L2 Bound project/context avoids duplicate spend and enables GSC/GA4.
L3 Synced snapshots feed mktg playbooks and long-arc trackers.

After writing artifacts, log completion with mktg run openseo --complete --writes <paths> --result success --json.


OpenSEO integration targets every-app/open-seo v0.1.6 over an MIT-safe HTTP/MCP boundary.

1---
2name: openseo
3description: >-
4 Uses OpenSEO as the measured SEO data plane for keyword volume and difficulty,
5 SERPs, ranked keywords, backlinks, local SEO, rank tracking, Search Console,
6 GA4, and site audits. Use for measured SEO metrics, indexing evidence,
7 organic analytics, local rankings, backlink profiles, or rank trackers.
8 Prefer OpenSEO over guessed metrics when connected; otherwise continue with
9 qualitative web research and mark numeric metrics unknown.
10category: seo
11tier: nice-to-have
12layer: strategy
13reads:
14 - brand/keyword-plan.md
15writes:
16 - brand/keyword-plan.md
17 - brand/learnings.md
18env_vars:
19 - OPENSEO_API_KEY
20 - OPENSEO_MCP_URL
21triggers:
22 - keyword difficulty
23 - search volume
24 - serp results
25 - ranked keywords
26 - backlinks
27 - rank tracker
28 - gsc performance
29allowed-tools:
30 - Bash(mktg catalog *)
31 - Bash(mktg doctor *)
32 - Bash(mktg seo *)
33 - Bash(mktg run *)
34---
35 
36# OpenSEO — Measured SEO Data Plane
37 
38OpenSEO supplies evidence; mktg skills supply methodology. Communicate only through OpenSEO's MCP-over-HTTP endpoint. There is no general OpenSEO REST research API, and mktg never calls DataForSEO directly.
39 
40## On Activation
41 
421. Run `mktg seo status --json --fields readiness,catalog,project,bindingCorrupt,state`.
432. Interpret readiness:
44 - `hosted_oauth_ready`: agent MCP client is authenticated interactively.
45 - `hosted_api_key_ready`: headless hosted MCP can use `OPENSEO_API_KEY`.
46 - `selfhost_ready`: bound/connected non-hosted MCP endpoint; local Docker HTTP is allowed only on loopback.
47 - `not_configured`: continue through Exa/crawl/manual evidence and label KD, volume, CPC, authority, and rank `unknown`.
483. Read `.seo/openseo.json`. If absent and project-scoped tools are needed, use `openseo-project-setup`.
494. Read `get_project_context` before rebuying research. Use its research log to identify still-fresh evidence.
505. Select only the tools needed from the [v0.1.6 tool map](references/tools-v0.1.6.md).
51 
52## Authentication
53 
54- Root `.mcp.json` intentionally declares the hosted URL without a bearer header so MCP clients can perform OpenSEO OAuth.
55- Headless clients may add `Authorization: Bearer ${OPENSEO_API_KEY}` or `x-api-key: ${OPENSEO_API_KEY}` in their private client config. Never write a key value into the repository.
56- `OPENSEO_MCP_URL` overrides the endpoint for self-hosting. Hosted default is `https://app.openseo.so/mcp`.
57- `mktg catalog info openseo` reports **headless API-key readiness**; `mktg seo status` distinguishes OAuth, API key, and self-host modes.
58 
59## Route Evidence, Do Not Duplicate Playbooks
60 
61| Need | OpenSEO evidence | mktg owner |
62|---|---|---|
63| Keyword demand/opportunity | keyword research, metrics, ranked terms, GSC | `openseo-keyword-research` |
64| Page mapping/cannibalization | query+page GSC, SERPs, ranked URLs | `openseo-keyword-clustering` |
65| Market/competitor | SERP competitors, domain/ranked terms, backlink profiles | competitive OpenSEO skills |
66| Technical/indexing | site audit, URL inspection, GSC | `seo-audit` |
67| Local visibility | business, local SERP, reviews, categories, rank grid | `seo-audit` with local mode/brief |
68| Organic outcomes | GA4 landing/page/event/acquisition/opportunity tools | `seo-audit`, `seo-content`, `seo-machine` |
69| AEO hypotheses | SERP, index, audit, backlink, GSC, GA4 evidence only | `ai-seo` owns direct answer-engine observations |
70 
71## Cost and Mutation Policy
72 
73Before a paid batch, state the exact tool(s), item counts, requested limits, and cost shape. OpenSEO's server requests confirmation above its large-credit threshold, but mktg still asks whenever the planned spend is material or recurring.
74 
75Separate **spend** from **mutation**:
76 
77- `whoami`, project/context reads, saved-keyword reads, GSC, and GA4 are free reads.
78- `save_keywords`, `create_project`, tags, and `update_project_context` mutate shared account state but do not themselves consume DataForSEO credits; confirm broad/destructive changes.
79- research, SERP, backlinks, local SEO, site audit, and rank runs may consume credits.
80- scheduled rank tracking requires `estimate_rank_tracker_cost`, explicit approval, and the approved credit ceiling passed to the write/run call.
81 
82## State Contract
83 
84| Evidence | Local contract |
85|---|---|
86| project/domain/MCP URL | `.seo/openseo.json` |
87| keyword transfer | `.seo/keywords-sync.json` → `mktg seo sync-keywords --confirm` |
88| rank observations | `.seo/rank-snapshots/<date>.json` |
89| backlinks | `.seo/backlinks/<date>.json` with target scope, pagination, and provider limits |
90| GSC / GA4 exports | `.seo/gsc/`, `.seo/ga4/` when a file snapshot is needed |
91| site audits | `.seo/audits/<audit-id>.json` plus summary |
92 
93OpenSEO remains the measurement backend; `brand/` and the active playbook tracker remain mktg's decision memory.
94 
95## Anti-Patterns
96 
97- **Inventing REST endpoints** — upstream automation is MCP-over-HTTP; guessed REST paths fail and misstate the security boundary.
98- **Treating `configured: false` as proof OAuth is disconnected** — catalog readiness is headless env readiness; `mktg seo status` owns the richer truth.
99- **Calling DataForSEO directly** — this bypasses OpenSEO's project, usage, and cost controls.
100- **Calling free account mutations “paid research”** — spend and shared-state risk need different approvals.
101- **Saving only backlink totals** — scope (`exact`, `subfolder`, `domain`, `subdomains`), pagination, and provider limitations determine what totals mean.
102- **Claiming OpenSEO MCP measures AI answers** — v0.1.6 has no AI Visibility MCP tools. Use `ai-seo` direct observations and OpenSEO supporting evidence.
103 
104## Progressive Enhancement
105 
106| Level | Behavior |
107|---|---|
108| L0 | Qualitative web/manual evidence; metrics `unknown`. |
109| L1 | Hosted OAuth or API key exposes measured MCP tools. |
110| L2 | Bound project/context avoids duplicate spend and enables GSC/GA4. |
111| L3 | Synced snapshots feed mktg playbooks and long-arc trackers. |
112 
113After writing artifacts, log completion with `mktg run openseo --complete --writes <paths> --result success --json`.
114 
115---
116 
117OpenSEO integration targets [every-app/open-seo](https://github.com/every-app/open-seo) v0.1.6 over an MIT-safe HTTP/MCP boundary.
118 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 31
Checked
Source
MoizIbnYousaf/marketing-cli ↗
Creator
MoizIbnYousaf · 5 listings
View creator

Made with openseo

OpenSEO — Measured SEO Data Plane — mktg setup demo (from the MoizIbnYousaf/marketing-cli README)
OpenSEO — Measured SEO Data Plane — mktg setup demo (from the MoizIbnYousaf/marketing-cli README)

by MoizIbnYousaf

Similar skills

See all →
SkillThe Lighthouse Agentic Browsing fractionAgentic Browsing ReadinessAgriciDaniel/claude-seo · by AgriciDanielAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).★ 17.4k GitHub starsSkillReferring domains, anchor text distributionBacklink Profile AnalysisAgriciDaniel/claude-seo · by AgriciDanielBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.★ 17.4k GitHub starsSkillConnect a CMS to notfair SEO tools/setup-cmsnowork-studio/notfair-plugin · by nowork-studioConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report.★ 3.9k GitHub starsSkillBacklink profile for any domainBacklink checkRyze-AI-Adgent/open-seo-mcp-skills · by Ryze-AI-AdgentBacklink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor. Use when asked "check my backlinks", "backlink profile of X", "who links to them", or "link gap vs competitor".★ 3.1k GitHub starsSkillOptimize Core Web Vitals for better page experienceCore Web Vitals optimizationaddyosmani/web-quality-skills · by addyosmaniOptimize Core Web Vitals (LCP, INP, CLS) for better page experience using field and lab evidence. Use when asked to "improve Core Web Vitals", "fix LCP", "reduce CLS", "optimize INP", "page experience optimization", or "fix layout shifts".★ 2.8k GitHub starsSkillRun an SEO page observation-action-review loopRun the SEO page looptsingyuai/growth-lab · by tsingyuaiRun an SEO page observation-action-review loop with persistent Memory by coordinating demand research, page creation, adversarial review, image generation, IndexNow submission, and performance review. Use when taking an SEO page from opportunity discovery through publication, measurement, iteration, or continuing a previous SEO loop from Memory.★ 2k GitHub stars

More from MoizIbnYousaf

SkillBuilds, measures, and improves an Answer Engine OptimizationAI SEO — Durable AEO ProgramMoizIbnYousaf/marketing-cli · by MoizIbnYousafBuilds, measures, and improves an Answer Engine Optimization program across ChatGPT, Perplexity, Claude, Gemini, Google AI Overviews, and Copilot. Use for AEO, GEO, LLMO, AI search visibility, AI citations, brand mentions, answer-engine monitoring, llms.txt, AI crawler audits, or questions like 'what does AI say about us?' and 'why are competitors cited instead of us?'. Produces a durable evidence report and prioritized gameplan, not a one-shot content checklist.★ 31 GitHub starsSkillOngoing link-building campaigns that raise domain authorityOff page SEOMoizIbnYousaf/marketing-cli · by MoizIbnYousafOngoing link-building campaigns that raise domain authority and expand a site's KD ceiling beyond what on-page work alone can earn. Use when the user mentions 'off-page SEO', 'link building', 'directory link building', 'backlink campaign', 'listicle placements', 'guest posts', 'outreach targets', 'get listed in listicles', 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 anything on the user's behalf. Pairs with `mktg-backlink-prospector` agent for parallel research. For a launch-day push (submit to directories, Product Hunt, BetaList), see /startup-launcher. For measured backlink data — referring domains, backlink counts, rank tracking — see /openseo. Distinct from `seo-machine` (on-page programmatic) and `seo-audit` (technical diagnostic). The off-page half of the SEO operation.★ 31 GitHub starsSkillDiscover keyword opportunities with MEASURED volumeOpenseo keyword researchMoizIbnYousaf/marketing-cli · by MoizIbnYousafDiscover 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", search volume", "keyword opportunities", "striking distance keywords", measured keyword research".★ 31 GitHub starsSkillFind realistic link prospects with SERPOpenseo link prospectingMoizIbnYousaf/marketing-cli · by MoizIbnYousafFind realistic link prospects with SERP and backlink evidence, discover contact paths via web tools, and draft personalized outreach — with targets saved to .seo/backlink-targets.json for off-page-seo campaigns. Use this skill when the user has a linkable asset (study, tool, guide, template, product page) and wants backlinks, resource-page inclusions, or comparison mentions. Triggers: "link prospecting", "find backlink opportunities", resource page outreach", "get backlinks for", "link building outreach".★ 31 GitHub stars