Install any skill in seconds. Free to start, no credit card required.
Get Started Free →apify/apify-link-prospecting-outreach
Find sites ranking for target keywords, score every prospect with Ahrefs domain authority and page-level traffic, identify the strongest pitch angle per row ("links to competitor", "mentions brand without linking", "top-3 SERP", "resource page", "outdated content"), generate brand-voice-matched outreach emails using an outreach-type-aware template (unlinked-mention claim, competitor-link replacement, resource-page inclusion, outdated-content replacement, topical niche-edit), and propose a concre
Passed 24 of 25 test cases with the skill, and 5 of 25 without it.
and 30 more in the full report
19 fixed5 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 19 test cases the skill fixed. Same model, same prompt, with and without the skill.
Our campaign goal is set to 'Maximum link volume from any relevant site'. A prospect domain has Domain Rating (DR) 32 and gets 120 monthly page visits. Which Prospect Tier does this website fall under?
| Checked | Without skill | With skill |
|---|---|---|
| Explains that the maximum link volume preset sets Tier A Domain Rating threshold to 30. | Missed | Passed |
| Classifies a domain with DR 32 and traffic 120 as Prospect Tier A under volume settings. | Missed | Passed |
The instructions your model reads when the skill loads.
Turn a goal + a target keyword + a URL the user wants to promote into a tiered, ready-to-send outreach list: SERP-ranking prospects with Ahrefs-scored authority, the strongest pitch angle per prospect, an outreach-type-matched email draft, and a copy-paste-ready link placement.
(No need to check it upfront)
.env file with APIFY_TOKENmcp__claude_ai_Ahrefs__* tools for prospect scoring)--env-file support)scripts/ folder: npm installAfter Step 1–2 inputs are collected, write them to a single campaign.json (schema in campaign.json.example). Every downstream script reads --config campaign.json, so the agent doesn't fork per-campaign copies. Sequence:
# 1. Run the Actor (writes {base}.json + sub-Actor sidecars when --fetch-sub-datasets)
node --env-file=.env scripts/run_actor.js --actor "apify/link-prospecting-tool" --input '<json>' --timeout 1800 --fetch-sub-datasets --output {base}.json --format json
# 2. Build unified prospect table from the sidecars
python3 scripts/build_prospects.py --config campaign.json
# 3. (After Step 5 Ahrefs MCP calls → save to {base}_ahrefs_domain.json + {base}_ahrefs_page.json)
python3 scripts/enrich_prospects.py --config campaign.json
# 4. (After Step 8 sub-agents write outputs to /tmp/placement_outputs/row_*.json)
python3 scripts/merge_subagent_outputs.py --config campaign.json --outputs-dir /tmp/placement_outputs
# 5. Write the final xlsx + metadata sidecar
python3 scripts/write_xlsx.py --config campaign.json
If the runner's client-side wait elapses with the Actor still running on Apify, use scripts/fetch_run_artifacts.js --run-id <id> --output {base}.json instead of restarting. If the parent run is missing SUB_ACTOR_RESULTS (post-2026-05-20 Actor schema), scripts/fetch_subactors_from_log.js resolves sub-Actor runIds from the parent log.
Copy this checklist and track progress:
test cases passed, vs 5 / 25 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.