Kol content monitor

Track what key opinion leaders (KOLs) in your space are posting on LinkedIn and Twitter/X.

How to use it

  1. Hit Copy SKILL.md — or use the Claude Code line below to get every file.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/monitoring/composites/kol-content-monitor#main ~/.claude/skills/kol-content-monitor

For one project only, change the path to .claude/skills/kol-content-monitor. This skill also uses kol-monitor.json, run_skill.py — copying SKILL.md alone won't be enough. See the folder on GitHub.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text216 lines
kol-content-monitor/SKILL.md216 lines6.6 KBpushed 96d agoRawView on GitHub

KOL Content Monitor

Track what Key Opinion Leaders in your space are writing about. Surface trending narratives early — before they peak — so your team can join the conversation at the right time with relevant content.

Core principle: For seed-stage teams, the fastest path to content distribution is riding a wave that's already breaking, not creating one from scratch.

When to Use

  • "What are the top voices in [our space] posting about?"
  • "What topics are trending on LinkedIn in [industry]?"
  • "I want to know what content is resonating before I write anything"
  • "Track [list of founders/experts] and tell me what they're saying"
  • "Find trending narratives I can contribute to"

Phase 0: Intake

KOL List

  1. Names and LinkedIn URLs of KOLs to track (if known)
    • If unknown: use kol-discovery skill first to build the list
  2. Twitter/X handles for the same KOLs (optional but recommended for full picture)
  3. Any specific topics/keywords you care about? (for filtering noisy feeds)

Scope

  1. How far back? (default: 7 days for weekly monitor, 30 days for first run)
  2. Minimum engagement threshold to include a post? (default: 20 reactions/likes)

Save config to the current working directory as kol-monitor.json (or user-specified path).

{
  "kols": [
    {
      "name": "Lenny Rachitsky",
      "linkedin": "https://www.linkedin.com/in/lennyrachitsky/",
      "twitter": "@lennysan"
    },
    {
      "name": "Kyle Poyar",
      "linkedin": "https://www.linkedin.com/in/kylepoyar/",
      "twitter": "@kylepoyar"
    }
  ],
  "days_back": 7,
  "min_reactions": 20,
  "keywords": ["GTM", "growth", "AI", "outbound", "founder"],
  "output_path": "kol-monitor-[DATE].md"
}

Phase 1: Scrape LinkedIn Posts

Run linkedin-profile-post-scraper for all KOL LinkedIn profiles:

python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
  --profiles "<url1>,<url2>,<url3>" \
  --days <days_back> \
  --max-posts 20 \
  --output json

Filter results: only include posts with reactions ≥ min_reactions.

Phase 2: Scrape Twitter/X Posts

Run twitter-mention-tracker for each handle:

python3 skills/twitter-mention-tracker/scripts/search_twitter.py \
  --query "from:<handle>" \
  --since <YYYY-MM-DD> \
  --until <YYYY-MM-DD> \
  --max-tweets 20 \
  --output json

Filter: only include tweets with likes ≥ min_reactions / 2 (Twitter engagement is lower than LinkedIn).

Phase 3: Topic Clustering

Group all posts across all KOLs by topic/theme:

Clustering approach:

  1. Extract the main topic from each post (1-3 word label)
  2. Group similar topics together
  3. Count: how many KOLs touched this topic? How many total posts?
  4. Rank by: total engagement (sum of reactions/likes across all posts on that topic)

This surfaces topics with broad consensus (multiple KOLs talking about it) vs. individual takes.

Signal types to flag:

Signal Meaning Example
Convergence 3+ KOLs on same topic in same week Multiple founders posting about "AI SDR fatigue"
Spike Topic that 2x'd in volume vs last week Suddenly everyone's talking about [new thing]
Underdog 1 KOL posting about topic nobody else covers Potential early-mover opportunity
Controversy Posts with high comment/reaction ratio Debate you could weigh in on

Phase 4: Output Format

# KOL Content Monitor — Week of [DATE]

## Tracked KOLs
[N] KOLs | [N] LinkedIn posts | [N] tweets | Period: [date range]

---

## Trending Topics This Week

### 1. [Topic Name] — CONVERGENCE SIGNAL
- **KOLs discussing:** [Name 1], [Name 2], [Name 3]
- **Total posts:** [N] | **Total engagement:** [N] reactions/likes
- **Trend direction:** ↑ New this week / ↑↑ Growing / → Stable

**Best posts on this topic:**

> "[Post excerpt — first 150 chars]"
— [Author], [Date] | [N] reactions
[LinkedIn URL]

> "[Tweet text]"
— [@handle], [Date] | [N] likes
[Twitter URL]

**Content opportunity:** [1-2 sentences on how to contribute to this conversation]

---

### 2. [Topic Name]
...

---

## High-Engagement Posts (Top 5 This Week)

| Post | Author | Platform | Engagement | Topic |
|------|--------|----------|------------|-------|
| "[Preview...]" | [Name] | LinkedIn | [N] reactions | [topic] |
...

---

## Emerging Topics to Watch

Topics picked up by 1 KOL this week — too early to call a trend but worth tracking:
- [Topic] — [KOL name] — [brief description]
- [Topic] — ...

---

## Recommended Content Actions

### This Week (Ride the Wave)
1. **[Topic]** is peaking — ideal moment to publish your take. Suggested angle: [angle]
2. **[Controversy]** is generating debate — consider a nuanced response post. Your positioning: [suggestion]

### Next Week (Get Ahead)
1. **[Emerging topic]** is early-stage — write something now before it gets crowded.

Save to the current working directory as kol-monitor-[YYYY-MM-DD].md (or user-specified path).

Phase 5: Build Trigger-Based Content Calendar

Optional: from the monitor output, propose a content calendar entry for each "Ride the Wave" opportunity:

Topic: [topic]
Best post format: [LinkedIn insight post / tweet thread / blog]
Suggested hook: [hook]
Supporting points: [3 bullets from your product/experience]
Ideal publish date: [within 3 days of peak]

Scheduling

Run weekly (Friday afternoon — catches the week's peaks and gives weekend to draft):

0 14 * * 5 python3 run_skill.py kol-content-monitor --client <client-name>

Cost

Component Cost
LinkedIn post scraping (per profile) ~$0.05-0.20 (Apify)
Twitter scraping (per run) ~$0.01-0.05
Total per weekly run (10 KOLs) ~$0.50-2.00

Tools Required

  • Apify API tokenAPIFY_API_TOKEN env var
  • Upstream skills: linkedin-profile-post-scraper, twitter-mention-tracker
  • Optional upstream: kol-discovery (to build initial KOL list)

Trigger Phrases

  • "What are the top voices in [space] posting about this week?"
  • "Track my KOL list and give me content ideas"
  • "Run KOL content monitor for [client]"
  • "What's trending on LinkedIn in [industry]?"
1---
2name: kol-content-monitor
3description: >
4 Track what key opinion leaders (KOLs) in your space are posting on LinkedIn and Twitter/X.
5 Surfaces trending narratives, high-engagement topics, and early signals of emerging
6 conversations before they peak. Chains linkedin-profile-post-scraper and twitter-mention-tracker.
7 Use when a marketing team wants to ride trends rather than create them from scratch,
8 or when a founder wants to know which topics are resonating with their audience.
9tags: [monitoring]
10---
11 
12# KOL Content Monitor
13 
14Track what Key Opinion Leaders in your space are writing about. Surface trending narratives early — before they peak — so your team can join the conversation at the right time with relevant content.
15 
16**Core principle:** For seed-stage teams, the fastest path to content distribution is riding a wave that's already breaking, not creating one from scratch.
17 
18## When to Use
19 
20- "What are the top voices in [our space] posting about?"
21- "What topics are trending on LinkedIn in [industry]?"
22- "I want to know what content is resonating before I write anything"
23- "Track [list of founders/experts] and tell me what they're saying"
24- "Find trending narratives I can contribute to"
25 
26## Phase 0: Intake
27 
28### KOL List
291. Names and LinkedIn URLs of KOLs to track (if known)
30 - If unknown: use `kol-discovery` skill first to build the list
312. Twitter/X handles for the same KOLs (optional but recommended for full picture)
323. Any specific topics/keywords you care about? (for filtering noisy feeds)
33 
34### Scope
354. How far back? (default: 7 days for weekly monitor, 30 days for first run)
365. Minimum engagement threshold to include a post? (default: 20 reactions/likes)
37 
38Save config to the current working directory as `kol-monitor.json` (or user-specified path).
39 
40```json
41{
42 "kols": [
43 {
44 "name": "Lenny Rachitsky",
45 "linkedin": "https://www.linkedin.com/in/lennyrachitsky/",
46 "twitter": "@lennysan"
47 },
48 {
49 "name": "Kyle Poyar",
50 "linkedin": "https://www.linkedin.com/in/kylepoyar/",
51 "twitter": "@kylepoyar"
52 }
53 ],
54 "days_back": 7,
55 "min_reactions": 20,
56 "keywords": ["GTM", "growth", "AI", "outbound", "founder"],
57 "output_path": "kol-monitor-[DATE].md"
58}
59```
60 
61## Phase 1: Scrape LinkedIn Posts
62 
63Run `linkedin-profile-post-scraper` for all KOL LinkedIn profiles:
64 
65```bash
66python3 skills/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
67 --profiles "<url1>,<url2>,<url3>" \
68 --days <days_back> \
69 --max-posts 20 \
70 --output json
71```
72 
73Filter results: only include posts with reactions ≥ `min_reactions`.
74 
75## Phase 2: Scrape Twitter/X Posts
76 
77Run `twitter-mention-tracker` for each handle:
78 
79```bash
80python3 skills/twitter-mention-tracker/scripts/search_twitter.py \
81 --query "from:<handle>" \
82 --since <YYYY-MM-DD> \
83 --until <YYYY-MM-DD> \
84 --max-tweets 20 \
85 --output json
86```
87 
88Filter: only include tweets with likes ≥ `min_reactions / 2` (Twitter engagement is lower than LinkedIn).
89 
90## Phase 3: Topic Clustering
91 
92Group all posts across all KOLs by topic/theme:
93 
94### Clustering approach:
951. Extract the main topic from each post (1-3 word label)
962. Group similar topics together
973. Count: how many KOLs touched this topic? How many total posts?
984. Rank by: total engagement (sum of reactions/likes across all posts on that topic)
99 
100This surfaces topics with **broad consensus** (multiple KOLs talking about it) vs. individual takes.
101 
102### Signal types to flag:
103 
104| Signal | Meaning | Example |
105|--------|---------|---------|
106| **Convergence** | 3+ KOLs on same topic in same week | Multiple founders posting about "AI SDR fatigue" |
107| **Spike** | Topic that 2x'd in volume vs last week | Suddenly everyone's talking about [new thing] |
108| **Underdog** | 1 KOL posting about topic nobody else covers | Potential early-mover opportunity |
109| **Controversy** | Posts with high comment/reaction ratio | Debate you could weigh in on |
110 
111## Phase 4: Output Format
112 
113```markdown
114# KOL Content Monitor — Week of [DATE]
115 
116## Tracked KOLs
117[N] KOLs | [N] LinkedIn posts | [N] tweets | Period: [date range]
118 
119---
120 
121## Trending Topics This Week
122 
123### 1. [Topic Name] — CONVERGENCE SIGNAL
124- **KOLs discussing:** [Name 1], [Name 2], [Name 3]
125- **Total posts:** [N] | **Total engagement:** [N] reactions/likes
126- **Trend direction:** ↑ New this week / ↑↑ Growing / → Stable
127 
128**Best posts on this topic:**
129 
130> "[Post excerpt — first 150 chars]"
131— [Author], [Date] | [N] reactions
132[LinkedIn URL]
133 
134> "[Tweet text]"
135— [@handle], [Date] | [N] likes
136[Twitter URL]
137 
138**Content opportunity:** [1-2 sentences on how to contribute to this conversation]
139 
140---
141 
142### 2. [Topic Name]
143...
144 
145---
146 
147## High-Engagement Posts (Top 5 This Week)
148 
149| Post | Author | Platform | Engagement | Topic |
150|------|--------|----------|------------|-------|
151| "[Preview...]" | [Name] | LinkedIn | [N] reactions | [topic] |
152...
153 
154---
155 
156## Emerging Topics to Watch
157 
158Topics picked up by 1 KOL this week — too early to call a trend but worth tracking:
159- [Topic] — [KOL name] — [brief description]
160- [Topic] — ...
161 
162---
163 
164## Recommended Content Actions
165 
166### This Week (Ride the Wave)
1671. **[Topic]** is peaking — ideal moment to publish your take. Suggested angle: [angle]
1682. **[Controversy]** is generating debate — consider a nuanced response post. Your positioning: [suggestion]
169 
170### Next Week (Get Ahead)
1711. **[Emerging topic]** is early-stage — write something now before it gets crowded.
172```
173 
174Save to the current working directory as `kol-monitor-[YYYY-MM-DD].md` (or user-specified path).
175 
176## Phase 5: Build Trigger-Based Content Calendar
177 
178Optional: from the monitor output, propose a content calendar entry for each "Ride the Wave" opportunity:
179 
180```
181Topic: [topic]
182Best post format: [LinkedIn insight post / tweet thread / blog]
183Suggested hook: [hook]
184Supporting points: [3 bullets from your product/experience]
185Ideal publish date: [within 3 days of peak]
186```
187 
188## Scheduling
189 
190Run weekly (Friday afternoon — catches the week's peaks and gives weekend to draft):
191 
192```bash
1930 14 * * 5 python3 run_skill.py kol-content-monitor --client <client-name>
194```
195 
196## Cost
197 
198| Component | Cost |
199|-----------|------|
200| LinkedIn post scraping (per profile) | ~$0.05-0.20 (Apify) |
201| Twitter scraping (per run) | ~$0.01-0.05 |
202| **Total per weekly run (10 KOLs)** | **~$0.50-2.00** |
203 
204## Tools Required
205 
206- **Apify API token**`APIFY_API_TOKEN` env var
207- **Upstream skills:** `linkedin-profile-post-scraper`, `twitter-mention-tracker`
208- **Optional upstream:** `kol-discovery` (to build initial KOL list)
209 
210## Trigger Phrases
211 
212- "What are the top voices in [space] posting about this week?"
213- "Track my KOL list and give me content ideas"
214- "Run KOL content monitor for [client]"
215- "What's trending on LinkedIn in [industry]?"
216 

Discussion

Alternatives

Also in Posting & scheduling
Linkedin comment drafterDraft a LinkedIn comment on someone else's post from its URL, or reshare (repost) it to your feed with optional commentary. Use when the user pastes a post URL and asks to comment, engage, be first commenter, or repost with their thoughts. Produces 1-3 variants in the user's voice, picks a reaction, and publishes via Publora on approval. Not for replying to existing comments (use linkedin-reply-handler).Marketing · MITLinkedin content plannerGenerate a 7-day LinkedIn content plan from a theme, audience, and pillars. Produces per-day post pillar, format, hook type, CTA, posting time, daily comment targets, and a weekly inbound-readiness check. Use when the user wants to plan a week or month of content, not draft a single post (use linkedin-post-writer).Marketing · MITLinkedin employee advocacyStand up and run a LinkedIn employee advocacy program for a marketing or sales team. Covers 14-day launch playbook, brand-guideline governance, per-post time budget, cadence benchmarks, and team ROI (reach, engagement, pipeline). Triggers on "employee advocacy", "get the team posting", "scale LinkedIn across team", "advocacy ROI". Not for planning one person's own calendar (use linkedin-content-planner).Marketing · MITInstagram Audience InsightsRead your Instagram niche and profile from real data via Apify, no login. Scan a hashtag for the posts traveling now (likes, comments, owner) to see the format and hook that works. Pull profile stats for any handle, yours or a competitor's: followers, posts, bio, category. Instagram hides who liked or commented on other accounts, so this is discovery plus profiles, not engagers. Triggers on "what works in my niche", "scan the hashtag", "competitor stats". Not for writing captions (use ig-caption-writer).Marketing · MIT