Competitor engagers skill
Find people actively engaging with competitor LinkedIn posts.
by growthenginenowoslawski·MIT license·★ 736 Stars on the repo·GitHub ↗
npx degit growthenginenowoslawski/coldoutboundskills/skills/competitor-engagers#main ~/.claude/skills/competitor-engagersChecked ·commit main
Files of Competitor engagers
Show the full text104 lines
Competitor Engagers
Finds people who are actively engaging with your competitors on LinkedIn — the highest-intent prospects for cold outreach.
Required step: Qualify with /icp-prompt-builder (do not skip)
After collecting the engager CSV, sample ~50 rows and run /icp-prompt-builder before scaling further. LinkedIn engagement alone doesn't guarantee ICP fit — someone who reacted to a competitor's post might be a peer, a candidate, a student, or an actual buyer. Qualifying filters separates them.
Why required: unfiltered engager lists typically have 30-50% non-ICP rows (fans, peers, recruiters, students). Running /icp-prompt-builder on a 50-row sample, tuning the qualification prompt, then applying it to the full list cuts wasted enrichment + send costs. Takes 10-15 min.
Setup (First Time Only)
Before running, ensure these environment variables are set in ~/.env:
RAPIDAPI_KEY=<your key from https://rapidapi.com/apibuilderz/api/realtime-linkedin-bulk-data>
OPENROUTER_API_KEY=<your key from https://openrouter.ai/keys>
Test your credentials:
npm run competitor-engagers -- --check-auth
Steps
Parse the user's input. They must provide a website URL (e.g., "clay.com"). Ask for:
- How many competitors to discover (default: 20)
- Posts per company (default: 30)
- Any specific competitor LinkedIn URLs to include
If the user just says "run it" or provides only a URL, use all defaults.
Run the auth preflight check:
npm run competitor-engagers -- --check-authIf it fails, help the user set up their API keys.
Run the main script:
npm run competitor-engagers -- --url={domain} --competitors={count} --posts={postsPerCompany} {--extra-competitor=URL ...} --verboseThe script prints live progress. It can take 30-120 minutes for a full run (20 competitors x 200 employees x engagement collection). If interrupted, re-run with
--resume:npm run competitor-engagers -- --url={domain} --resumeOnce complete, read the output CSV from
~/output/competitor-engagers/and present:- Total unique engagers found
- Top 10 most active engagers (by total_engagements)
- Breakdown by competitor
- Output file path
Offer follow-up actions:
- "Want to filter to only people with 3+ engagements?"
- "Want to enrich these with email addresses?"
- "Want to run this for a different company?"
- "Want me to start a dry run first to validate the competitor list?"
CLI Reference
--url=<domain> Target company domain (required)
--competitors=<n> AI-discovered competitor count (default: 20)
--posts=<n> Posts per company (default: 30)
--extra-competitor=<url> Add a competitor manually (repeatable)
--dry-run Discover competitors only, skip engagement scraping
--resume Resume from checkpoint after interruption
--verbose Detailed per-request logging
--check-auth Test API credentials and exit
Notes
- Skips people employed at the target company OR any of the competitor companies
- Comments and reactions only (reposts not collected)
- 90-day lookback window for posts
- Fetches up to 200 employees per competitor
- One row per person in output (deduplicated, sorted by engagement count)
- Checkpoint saved at
~/output/competitor-engagers/{domain}-checkpoint.json
What to do next
Run /icp-prompt-builder on a 50-row sample of the engagers CSV (required step — LinkedIn engagement alone doesn't guarantee ICP fit). Then /list-quality-scorecard on the filtered list.
Or wait: if your sample shows heavy non-ICP noise (>50% fans/peers/recruiters), the competitors you chose may be too broad. Re-run this skill with tighter competitor selection.
Related skills
/icp-prompt-builder— required filter pass on this skill's output/list-quality-scorecard— grade the filtered list/email-waterfall— if LinkedIn engagement doesn't include emails/campaign-copywriting— write copy referencing their specific engagement pattern
| 1 | |
| 2 | name competitor-engagers |
| 3 | description Find people actively engaging with competitor LinkedIn posts. Given a website URL, discovers competitors, fetches their company and employee posts, collects all commenters and reactors, and outputs a deduplicated CSV of engaged prospects. Use when someone wants to find leads from competitor engagement, build outreach lists from LinkedIn activity, or analyze who interacts with competitor content. |
| 4 | user_invocable true |
| 5 | |
| 6 | |
| 7 | # Competitor Engagers |
| 8 | |
| 9 | Finds people who are actively engaging with your competitors on LinkedIn — the highest-intent prospects for cold outreach. |
| 10 | |
| 11 | ## Required step: Qualify with /icp-prompt-builder (do not skip) |
| 12 | |
| 13 | After collecting the engager CSV, sample ~50 rows and run `/icp-prompt-builder` before scaling further. LinkedIn engagement alone doesn't guarantee ICP fit — someone who reacted to a competitor's post might be a peer, a candidate, a student, or an actual buyer. Qualifying filters separates them. |
| 14 | |
| 15 | **Why required:** unfiltered engager lists typically have 30-50% non-ICP rows (fans, peers, recruiters, students). Running `/icp-prompt-builder` on a 50-row sample, tuning the qualification prompt, then applying it to the full list cuts wasted enrichment + send costs. Takes 10-15 min. |
| 16 | |
| 17 | ## Setup (First Time Only) |
| 18 | |
| 19 | Before running, ensure these environment variables are set in `~/.env`: |
| 20 | |
| 21 | |
| 22 | RAPIDAPI_KEY=<your key from https://rapidapi.com/apibuilderz/api/realtime-linkedin-bulk-data> |
| 23 | OPENROUTER_API_KEY=<your key from https://openrouter.ai/keys> |
| 24 | |
| 25 | |
| 26 | Test your credentials: |
| 27 | |
| 28 | npm run competitor-engagers -- --check-auth |
| 29 | |
| 30 | |
| 31 | ## Steps |
| 32 | |
| 33 | Parse the user's input. They must provide a website URL (e.g., "clay.com"). Ask for: |
| 34 | How many competitors to discover (default: 20) |
| 35 | Posts per company (default: 30) |
| 36 | Any specific competitor LinkedIn URLs to include |
| 37 | |
| 38 | If the user just says "run it" or provides only a URL, use all defaults. |
| 39 | |
| 40 | Run the auth preflight check: |
| 41 | |
| 42 | npm run competitor-engagers -- --check-auth |
| 43 | |
| 44 | If it fails, help the user set up their API keys. |
| 45 | |
| 46 | Run the main script: |
| 47 | |
| 48 | npm run competitor-engagers -- --url={domain} --competitors={count} --posts={postsPerCompany} {--extra-competitor=URL ...} --verbose |
| 49 | |
| 50 | |
| 51 | The script prints live progress. It can take 30-120 minutes for a full run (20 competitors x 200 employees x engagement collection). If interrupted, re-run with `--resume`: |
| 52 | |
| 53 | npm run competitor-engagers -- --url={domain} --resume |
| 54 | |
| 55 | |
| 56 | Once complete, read the output CSV from `~/output/competitor-engagers/` and present: |
| 57 | Total unique engagers found |
| 58 | Top 10 most active engagers (by total_engagements) |
| 59 | Breakdown by competitor |
| 60 | Output file path |
| 61 | |
| 62 | Offer follow-up actions: |
| 63 | "Want to filter to only people with 3+ engagements?" |
| 64 | "Want to enrich these with email addresses?" |
| 65 | "Want to run this for a different company?" |
| 66 | "Want me to start a dry run first to validate the competitor list?" |
| 67 | |
| 68 | ## CLI Reference |
| 69 | |
| 70 | |
| 71 | --url=<domain> Target company domain (required) |
| 72 | --competitors=<n> AI-discovered competitor count (default: 20) |
| 73 | --posts=<n> Posts per company (default: 30) |
| 74 | --extra-competitor=<url> Add a competitor manually (repeatable) |
| 75 | --dry-run Discover competitors only, skip engagement scraping |
| 76 | --resume Resume from checkpoint after interruption |
| 77 | --verbose Detailed per-request logging |
| 78 | --check-auth Test API credentials and exit |
| 79 | |
| 80 | |
| 81 | ## Notes |
| 82 | |
| 83 | Skips people employed at the target company OR any of the competitor companies |
| 84 | Comments and reactions only (reposts not collected) |
| 85 | 90-day lookback window for posts |
| 86 | Fetches up to 200 employees per competitor |
| 87 | One row per person in output (deduplicated, sorted by engagement count) |
| 88 | Checkpoint saved at `~/output/competitor-engagers/{domain}-checkpoint.json` |
| 89 | |
| 90 | |
| 91 | |
| 92 | ## What to do next |
| 93 | |
| 94 | **Run `/icp-prompt-builder`** on a 50-row sample of the engagers CSV (required step — LinkedIn engagement alone doesn't guarantee ICP fit). Then `/list-quality-scorecard` on the filtered list. |
| 95 | |
| 96 | **Or wait:** if your sample shows heavy non-ICP noise (>50% fans/peers/recruiters), the competitors you chose may be too broad. Re-run this skill with tighter competitor selection. |
| 97 | |
| 98 | ## Related skills |
| 99 | |
| 100 | `/icp-prompt-builder` — required filter pass on this skill's output |
| 101 | `/list-quality-scorecard` — grade the filtered list |
| 102 | `/email-waterfall` — if LinkedIn engagement doesn't include emails |
| 103 | `/campaign-copywriting` — write copy referencing their specific engagement pattern |
| 104 |
Discussion
Alternatives
Browse more free Claude skills or everything in Product.