skills/capabilities/kol-engager-icp/SKILL.md
Find ICP-fit leads from KOL audiences on LinkedIn. Given a list of KOLs, scrapes their most relevant high-engagement post from the last 30 days, extracts engagers (reactors + commenters), pre-filters by position, enriches top profiles, and ICP-classifies. Cost-controlled: 1 post per KOL. Use when someone wants to "find leads from KOL audiences" or "scrape engagers from influencer posts" or after running kol-discovery.
npx skillsauth add athina-ai/goose-skills kol-engager-icpInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Find ICP-fit leads by scraping engagers from KOL posts on LinkedIn. This is the second half of the KOL pipeline — given KOLs (from kol-discovery or manually), it finds their best post, scrapes who engaged, and filters for your ICP.
Core principle: 1 post per KOL. Pick the most relevant, highest-engagement post from the last 30 days. This controls costs while maximizing lead quality.
Ask the user these questions:
Save config:
skills/kol-engager-icp/configs/{client-name}.json
Config JSON structure:
{
"client_name": "example",
"topic_keywords": ["freight automation", "dispatch operations"],
"topic_patterns": ["freight.*automat", "dispatch.*oper"],
"icp_keywords": ["freight", "logistics", "3pl"],
"target_titles": ["vp operations", "head of logistics", "coo"],
"exclude_titles": ["software engineer", "data scientist"],
"tech_vendor_keywords": ["competitor-name", "saas founder"],
"country_filter": "United States",
"kol_urls": ["https://www.linkedin.com/in/kol-1/"],
"days_back": 30,
"max_posts_per_kol": 20,
"max_kols": 10,
"max_enrichment_profiles": 200,
"mode": "standard"
}
python3 skills/kol-engager-icp/scripts/kol_engager_icp.py \
--config skills/kol-engager-icp/configs/{client-name}.json \
[--test] [--probe] [--yes] [--kols "url1,url2"]
Flags:
--config (required) — path to client config JSON--test — limit to 3 KOLs, 50 enrichment profiles--probe — test engager scraping with one post URL and exit--yes — skip cost confirmation prompts--kols — override KOL URLs from config (comma-separated)--max-runs — override Apify run limitStep 1: Scrape KOL posts — For each KOL, fetch recent posts (last 30 days, max 20 posts to scan) using harvestapi/linkedin-profile-posts.
Step 2: Select best post per KOL — Filter posts by topic_keywords/topic_patterns relevance, then pick the ONE with highest engagement (reactions + comments). Result: 1 post URL per KOL.
Step 3: Scrape engagers — Use harvestapi/linkedin-company-posts with scrapeReactions: true, scrapeComments: true to get reactors and commenters from each selected post.
Step 4: Pre-filter before enrichment — Score engagers by position:
+3 Commenter (higher intent)+2 Position matches ICP keywords+2 Position matches target titles-5 Position matches exclude titles or vendor keywords+1 Engaged on multiple postsmax_enrichment_profilesStep 5: Enrich — harvestapi/linkedin-profile-scraper in batches of 25. Apply country filter after.
Step 6: ICP classify & export — Classify as Likely ICP / Possible ICP / Unknown / Tech Vendor. Export CSV.
| Parameter | Test | Standard | Full | |-----------|------|----------|------| | KOLs processed | 3 | 10 | 20 | | Posts selected per KOL | 1 | 1 | 1 | | Max reactions scraped | all | all | all | | Max profiles enriched | 50 | 200 | 500 | | Est. total cost | ~$0.50 | ~$1.50-2 | ~$5-8 |
Run --probe first to verify engager scraping works:
python3 skills/kol-engager-icp/scripts/kol_engager_icp.py \
--config skills/kol-engager-icp/configs/{client-name}.json --probe
This scrapes posts from the first KOL, selects the best post, scrapes engagers from it, and prints a sample. No enrichment, no CSV.
Present results:
Common adjustments:
tech_vendor_keywordsicp_keywords or target_titlestopic_keywords to be less restrictivemax_enrichment_profiles or switch to test modeCSV exported to skills/kol-engager-icp/output/{client-name}-kol-engagers-{date}.csv:
| Column | Description | |--------|-------------| | Name | Full name | | LinkedIn Profile URL | Profile link | | Role | Parsed from headline | | Company Name | Parsed from headline | | Location | From enrichment | | KOL Source | Which KOL's post they engaged with | | Post URL | Link to the specific post | | Engagement Type | Comment or Reaction | | Comment Text | Their comment (personalization gold) | | ICP Tier | Likely ICP / Possible ICP / Unknown / Tech Vendor | | Pre-Filter Score | Priority score from Step 4 |
APIFY_API_TOKEN in .envharvestapi/linkedin-profile-posts (KOL post scraping)harvestapi/linkedin-company-posts (engager scraping from posts)harvestapi/linkedin-profile-scraper (profile enrichment)Trigger phrases:
After kol-discovery:
# Use KOL URLs from discovery output
python3 skills/kol-engager-icp/scripts/kol_engager_icp.py \
--config skills/kol-engager-icp/configs/example.json \
--kols "https://linkedin.com/in/kol1,https://linkedin.com/in/kol2"
Test mode:
python3 skills/kol-engager-icp/scripts/kol_engager_icp.py \
--config skills/kol-engager-icp/configs/example.json --test
content-media
Takes an existing screen recording or demo video and adds professional zoom/pan effects synchronized to the narration. Uses transcript-driven zoom targeting and Remotion for rendering. Optionally replaces audio with a soundtrack.
tools
Repurposes long-form video (podcasts, interviews, talks) into short-form vertical clips for Instagram Reels, TikTok, and YouTube Shorts. Handles transcription, moment selection, clip extraction, speaker-tracked reframing (16:9 to 9:16), and animated captions.
development
Creates talking head videos from any source material (docs, changelogs, blog posts, notes, transcripts). Produces multi-scene videos with avatar narration over screenshots/images using HeyGen v2 API. Supports Quick Shot and Full Producer modes.
tools
Generates Instagram-ready product reels from any e-commerce product page URL. Scrapes product images, classifies by type, generates AI-animated clips via Higgsfield API, creates text overlays with style presets, and composes a 15-20 second reel with music. Supports model-based and product-only reels.