Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Find Key Opinion Leaders (KOLs) in a given domain by combining web research with LinkedIn post search. Given a company/idea and target domain, generates authority keywords, searches LinkedIn posts to find prolific authors with high engagement, and merges with web-researched influencers. Use when someone wants to "find influencers in X space" or "who are the KOLs for Y industry."
.claude/skills/gooseworks-ai-kol-discovery/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 29% | 0% |
Find Key Opinion Leaders in any domain by searching LinkedIn posts for prolific, high-engagement authors and merging with web-researched influencers.
Core principle: Search for authority/thought-leadership keywords, not pain-language. We want people who shape conversation in the space — conference speakers, newsletter writers, podcast hosts, and prolific LinkedIn posters.
Ask the user these questions:
Based on intake, generate 15-25 topic/authority keywords. These are NOT pain-language — they're the terms thought leaders use when sharing expertise:
Also generate:
Present keywords to user for approval before running.
Save config in the current working directory or wherever the user prefers:
Config JSON structure:
json{ "client_name": "example", "domain_keywords": ["\"freight tech\" thought leadership", "supply chain innovation"], "exclusion_patterns": ["hiring.*position", "we.re recruiting"], "kol_title_keywords": ["vp", "founder", "analyst", "editor", "host"], "vendor_exclude_keywords": ["software engineer", "saas", "recruiter"], "domain_relevance_keywords": ["freight", "logistics", "supply chain"], "country_filter": "", "max_posts_per_keyword": 50, "min_posts": 2, "min_total_engagement": 50, "top_n_kols": 50 }
bashpython3 skills/kol-discovery/scripts/kol_discovery.py \ --config kol-discovery.json \ --output-dir . \ [--test] [--web-kols kol-web-kols.json] [--yes]
Flags:
--config (required) — path to client config JSON--output-dir — directory for output CSV (default: current working directory)--test — limit to 5 keywords (validation run)--web-kols — path to web-researched KOL JSON (agent generates this)--yes — skip cost confirmation prompts--max-runs — override Apify run limitWhat the script does:
apimaestro/linkedin-posts-search-scraper-no-cookies for each domain keywordCost estimate: ~$0.10 per keyword. Full run with 20 keywords: ~$2-3.
Always run with --test first.
Before or alongside the script, do web research to find known KOLs:
Save as JSON in the current working directory:
json[ { "name": "Jane Doe", "linkedin_url": "https://www.linkedin.com/in/janedoe/", "source": "FreightWaves conference speaker 2025", "notes": "Hosts weekly logistics podcast" } ]
Pass to script via --web-kols.
Present results:
Common adjustments:
min_posts or min_total_engagement thresholdsCSV exported to the current working directory:
| Column | Description | |--------|-------------| | Rank | Overall rank by KOL Score | | Name | Full name | | LinkedIn URL | Profile link | | Headline | From LinkedIn | | KOL Score | Composite score | | Total Posts | Posts found in search | | Total Reactions | Sum of reactions across posts | | Total Comments | Sum of comments across posts | | Avg Engagement | Average reactions+comments per post | | Top Post URL | Highest engagement post | | Top Post Preview | First 100 chars of top post | | Source | post-data / web-research / both |
APIFY_API_TOKEN in .envapimaestro/linkedin-posts-search-scraper-no-cookies (keyword search)Trigger phrases:
With existing config:
bashpython3 skills/kol-discovery/scripts/kol_discovery.py \ --config clients/example/configs/kol-discovery.json \ --output-dir clients/example/leads --yes
Other measured skills in the registry, with their headline benchmark lift.