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

Find realistic link prospects with SERP

Openseo link prospecting

by MoizIbnYousaf · MIT license · ★ 31 on GitHub

Openseo link prospecting cover

Find 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…

---
name: openseo-link-prospecting
description: >-
  Find 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".
category: seo
tier: nice-to-have
layer: distribution
reads:
  - brand/positioning.md
env_vars:
  - OPENSEO_API_KEY
  - OPENSEO_MCP_URL

Overview

Find pages, sites, and authors that might realistically reference the user's linkable asset — then hand off-page-seo a qualified target list at .seo/backlink-targets.json instead of a cold start.

Manual install (npx, ZIP)
Claude Codenpx skills add MoizIbnYousaf/marketing-cli --skill openseo-link-prospecting -g -a claude-code
Claude Code (degit)npx degit MoizIbnYousaf/marketing-cli/skills/openseo-link-prospecting#main ~/.claude/skills/openseo-link-prospecting
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.md5.7 KB
Read SKILL.md here
MoizIbnYousaf/main1 file shown
SKILL.md
Show the full text103 lines

Find pages, sites, and authors that might realistically reference the user's linkable asset — then hand off-page-seo a qualified target list at .seo/backlink-targets.json instead of a cold start.

On Activation

  1. Readiness + binding: mktg seo status --json --fields readiness,catalog.endpointError,project. not_configured → prospect with Exa search only (queries below still apply) and label authority data unknown. For a ready state, verify live access with the free whoami MCP tool before paid calls.
  2. Clarify the asset: what page/study/tool/template is being promoted and WHY someone would reference it. No clear asset + reason → fix that first; outreach without a reason is spam.
  3. Read brand/positioning.md for angle/audience fit (tolerate missing).

OpenSEO MCP Tools

  • get_serp_results: find ranking articles, listicles, resource pages, comparisons, statistics pages (≤10 queries per call).
  • get_backlinks_overview: competitor backlink/referring-domain patterns — where do THEY get links (may be unavailable; continue without).
  • get_backlinks_profile: page-level source/target/anchor/dofollow/lost/broken evidence. Preserve target scope, pagination, filters, and one-per-domain mode in .seo/backlink-targets.json provenance.
  • get_domain_overview: qualify strong prospect domains.
  • get_ranked_keywords: topical-fit checks on prospects/competitors.
  • research_keywords: expand prospecting queries.

Contact Discovery (NOT OpenSEO)

Contact paths come from web/search/browser tools (Firecrawl fetch, Exa search, browser automation) — never attribute these to OpenSEO:

  • Author byline pages, contact pages, editorial guidelines, about/team pages
  • LinkedIn/X/Bluesky profiles, newsletter mastheads
  • Public emails in HTML or visible text; Person/Organization/sameAs/email structured data

Record only contact details actually found, each with its source URL.

Prospecting Query Patterns

<topic> resources · best <category> tools · <competitor> alternatives · <topic> statistics · <topic> guide · <topic> examples · <topic> templates · <topic> software · <topic> for <audience>

Workflow

  1. Build 5–10 prospecting queries from the asset; get_serp_results in batches.
  2. Competitors supplied? get_backlinks_overview their strongest domains first.
  3. Filter: keep editorial pages, resource lists, comparisons, statistics, templates, curated directories. Drop homepages, login walls, thin affiliate, spam, and direct competitors (unless a comparison angle is valid).
  4. Per prospect, define the angle: broken/missing resource, better current data, useful tool/template, comparison inclusion, expert quote.
  5. Contact discovery on the strongest prospects via web tools (source URLs recorded).
  6. Write targets to .seo/backlink-targets.json:
{ "version": 1, "updatedAt": "<iso>", "asset": "<url>", "targets": [{ "url": "", "domain": "", "source": "", "relevance": "", "angle": "", "contactPath": "", "contactSource": "", "priority": "high|med|low", "status": "new" }] }
  1. Draft 2–3 reusable outreach messages (resource inclusion, article update, comparison angle). Hand the list to off-page-seo for the campaign cadence.

Output Format

Prospect URL Domain Source Relevance Suggested angle Contact path Priority

Anti-Patterns

  • Inventing emails, handles, or contact names — because a single fabricated contact burns the user's credibility with a real human. Only record what was found, with the source URL; otherwise name the next discovery step.
  • Attributing contact discovery to OpenSEO — because OpenSEO finds PROSPECTS; web/browser tools find CONTACTS. The misattribution teaches a wrong tool model and hides the real source when details need re-verification.
  • Mass-template outreach — because editors can smell a blast, and one spam report damages the domain's future deliverability. Personalize by page and reason, or don't send.
  • Prospecting without a linkable asset and reason — because "please link to my homepage" converts at ~0%. No asset + reason, no outreach.
  • Skipping competitor/paid-placement flags — because pitching a direct competitor or a pay-to-play listicle wastes the user's outreach capital and can backfire publicly. Flag both in the target list.

Close the loop

After writing files, log completion so mktg plan / mktg status count the work (bare mktg run only logs loaded):

mktg run openseo-link-prospecting --complete --writes <paths written> --result success --json

Adapted from every-app/open-seo .agents/skills/link-prospecting (MIT). Workflow upstream; mktg artifact paths, off-page-seo handoff, and contact-attribution discipline added here.

1---
2name: openseo-link-prospecting
3description: >-
4 Find realistic link prospects with SERP and backlink evidence, discover
5 contact paths via web tools, and draft personalized outreach — with targets
6 saved to .seo/backlink-targets.json for off-page-seo campaigns. Use this
7 skill when the user has a linkable asset (study, tool, guide, template,
8 product page) and wants backlinks, resource-page inclusions, or comparison
9 mentions. Triggers: "link prospecting", "find backlink opportunities",
10 "resource page outreach", "get backlinks for", "link building outreach".
11category: seo
12tier: nice-to-have
13layer: distribution
14reads:
15 - brand/positioning.md
16env_vars:
17 - OPENSEO_API_KEY
18 - OPENSEO_MCP_URL
19triggers:
20 - link prospecting
21 - find backlink opportunities
22 - resource page outreach
23 - get backlinks for
24 - link building outreach
25allowed-tools:
26 - Bash(mktg catalog *)
27 - Bash(mktg run *)
28---
29 
30# OpenSEO Link Prospecting
31 
32Find pages, sites, and authors that might realistically reference the user's linkable asset — then hand `off-page-seo` a qualified target list at `.seo/backlink-targets.json` instead of a cold start.
33 
34## On Activation
35 
361. **Readiness + binding**: `mktg seo status --json --fields readiness,catalog.endpointError,project`. `not_configured` → prospect with Exa search only (queries below still apply) and label authority data `unknown`. For a ready state, verify live access with the free `whoami` MCP tool before paid calls.
372. **Clarify the asset**: what page/study/tool/template is being promoted and WHY someone would reference it. No clear asset + reason → fix that first; outreach without a reason is spam.
383. Read `brand/positioning.md` for angle/audience fit (tolerate missing).
39 
40## OpenSEO MCP Tools
41 
42- `get_serp_results`: find ranking articles, listicles, resource pages, comparisons, statistics pages (≤10 queries per call).
43- `get_backlinks_overview`: competitor backlink/referring-domain patterns — where do THEY get links (may be unavailable; continue without).
44- `get_backlinks_profile`: page-level source/target/anchor/dofollow/lost/broken evidence. Preserve target scope, pagination, filters, and one-per-domain mode in `.seo/backlink-targets.json` provenance.
45- `get_domain_overview`: qualify strong prospect domains.
46- `get_ranked_keywords`: topical-fit checks on prospects/competitors.
47- `research_keywords`: expand prospecting queries.
48 
49## Contact Discovery (NOT OpenSEO)
50 
51Contact paths come from web/search/browser tools (Firecrawl fetch, Exa search, browser automation) — never attribute these to OpenSEO:
52 
53- Author byline pages, contact pages, editorial guidelines, about/team pages
54- LinkedIn/X/Bluesky profiles, newsletter mastheads
55- Public emails in HTML or visible text; `Person`/`Organization`/`sameAs`/`email` structured data
56 
57Record only contact details actually found, each with its source URL.
58 
59## Prospecting Query Patterns
60 
61`<topic> resources` · `best <category> tools` · `<competitor> alternatives` · `<topic> statistics` · `<topic> guide` · `<topic> examples` · `<topic> templates` · `<topic> software` · `<topic> for <audience>`
62 
63## Workflow
64 
651. Build 5–10 prospecting queries from the asset; `get_serp_results` in batches.
662. Competitors supplied? `get_backlinks_overview` their strongest domains first.
673. Filter: keep editorial pages, resource lists, comparisons, statistics, templates, curated directories. Drop homepages, login walls, thin affiliate, spam, and direct competitors (unless a comparison angle is valid).
684. Per prospect, define the angle: broken/missing resource, better current data, useful tool/template, comparison inclusion, expert quote.
695. Contact discovery on the strongest prospects via web tools (source URLs recorded).
706. Write targets to `.seo/backlink-targets.json`:
71 
72```json
73{ "version": 1, "updatedAt": "<iso>", "asset": "<url>", "targets": [{ "url": "", "domain": "", "source": "", "relevance": "", "angle": "", "contactPath": "", "contactSource": "", "priority": "high|med|low", "status": "new" }] }
74```
75 
767. Draft 2–3 reusable outreach messages (resource inclusion, article update, comparison angle). Hand the list to `off-page-seo` for the campaign cadence.
77 
78## Output Format
79 
80| Prospect URL | Domain | Source | Relevance | Suggested angle | Contact path | Priority |
81| ------------ | ------ | ------ | --------- | --------------- | ------------ | -------- |
82 
83## Anti-Patterns
84 
85- **Inventing emails, handles, or contact names** — because a single fabricated contact burns the user's credibility with a real human. Only record what was found, with the source URL; otherwise name the next discovery step.
86- **Attributing contact discovery to OpenSEO** — because OpenSEO finds PROSPECTS; web/browser tools find CONTACTS. The misattribution teaches a wrong tool model and hides the real source when details need re-verification.
87- **Mass-template outreach** — because editors can smell a blast, and one spam report damages the domain's future deliverability. Personalize by page and reason, or don't send.
88- **Prospecting without a linkable asset and reason** — because "please link to my homepage" converts at ~0%. No asset + reason, no outreach.
89- **Skipping competitor/paid-placement flags** — because pitching a direct competitor or a pay-to-play listicle wastes the user's outreach capital and can backfire publicly. Flag both in the target list.
90 
91## Close the loop
92 
93After writing files, log completion so `mktg plan` / `mktg status` count the work (bare `mktg run` only logs `loaded`):
94 
95```bash
96mktg run openseo-link-prospecting --complete --writes <paths written> --result success --json
97```
98 
99 
100---
101 
102*Adapted from [every-app/open-seo](https://github.com/every-app/open-seo) `.agents/skills/link-prospecting` (MIT). Workflow upstream; mktg artifact paths, off-page-seo handoff, and contact-attribution discipline added here.*
103 
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-link-prospecting

Openseo link prospecting — mktg setup demo (from the MoizIbnYousaf/marketing-cli README)
Openseo link prospecting — 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 starsSkillUses OpenSEO as the measured SEO data plane for keywordOpenSEO — Measured SEO Data PlaneMoizIbnYousaf/marketing-cli · by MoizIbnYousafUses 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.★ 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 stars