Competitor content tracker

Monitor competitor content across blogs, LinkedIn, and Twitter/X on a recurring basis.

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/competitive-intel/composites/competitor-content-tracker#main ~/.claude/skills/competitor-content-tracker

For one project only, change the path to .claude/skills/competitor-content-tracker. This skill also uses 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 text191 lines
competitor-content-tracker/SKILL.md191 lines5.5 KBpushed 96d agoRawView on GitHub

Competitor Content Tracker

Monitor competitor content activity across three channels — blog, LinkedIn, Twitter/X — and produce a consolidated digest highlighting what's new, what's getting traction, and where you have a content gap.

When to Use

  • "Track what [competitor] is publishing"
  • "Show me what my competitors posted this week"
  • "What topics are competitors winning on?"
  • "I want a weekly competitor content digest"

Phase 0: Intake

Competitors to Track

  1. List of competitor company names + blog URLs (e.g., https://clay.com/blog)
  2. LinkedIn profile URLs of competitor founders/CMOs to track (optional but high-value)
  3. Twitter/X handles of the competitors or their founders (optional)

Scope

  1. How far back? (default: 7 days for weekly digest, 30 days for first run)
  2. Any topics/keywords you care most about? (used to surface relevant posts first)

Output

  1. Format preference: full digest (everything) or highlights only (top 3-5 per competitor)?

Save config to clients/<client-name>/configs/competitor-content-tracker.json.

{
  "competitors": [
    {
      "name": "Clay",
      "blog_url": "https://clay.com/blog",
      "linkedin_profiles": ["https://www.linkedin.com/in/kareem-amin/"],
      "twitter_handles": ["@clay_hq", "@kareemamin"]
    }
  ],
  "days_back": 7,
  "keywords": ["GTM", "outbound", "AI agents", "growth"],
  "output_mode": "highlights"
}

Phase 1: Scrape Blog Content

Run blog-feed-monitor for each competitor blog URL:

python3 skills/capabilities/blog-feed-monitor/scripts/scrape_blogs.py \
  --urls "<competitor_blog_url>" \
  --days <days_back> \
  --keywords "<keywords>" \
  --output summary

Collect: post title, publish date, URL, excerpt.

Phase 2: Scrape LinkedIn Posts

Run linkedin-profile-post-scraper for each tracked founder/executive LinkedIn URL:

python3 skills/capabilities/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
  --profiles "<linkedin_url_1>,<linkedin_url_2>" \
  --days <days_back> \
  --max-posts 20 \
  --output summary

Collect: post text preview, date, reactions, comments, post URL.

Phase 3: Scrape Twitter/X

Run twitter-mention-tracker for each handle:

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

Collect: tweet text, date, likes, retweets, URL.

Phase 4: Analyze & Synthesize

After collecting raw data, synthesize across all channels:

For each competitor, identify:

  • New blog posts — titles, dates, topics
  • Top LinkedIn post — by engagement (reactions + comments), topic, key message
  • Top tweet — by likes, topic
  • Recurring themes — what topics did they post about most this period?
  • Content format patterns — are they doing listicles, opinion pieces, case studies?

Cross-competitor analysis:

  • Shared trending topics — what are multiple competitors writing about?
  • Coverage gaps — topics they're covering that you're not
  • Topics you own — where you're publishing and they're not
  • Engagement benchmarks — average likes/reactions across competitors (context for your own performance)

Phase 5: Output Format

Produce a structured markdown digest:

# Competitor Content Digest — Week of [DATE]

## Summary
- [N] new blog posts tracked across [N] competitors
- Top trending topic: [topic]
- Biggest content gap for you: [topic]

---

## [Competitor Name]

### Blog
- [Post Title] — [Date] — [URL]
  > [One-sentence summary]

### LinkedIn (top post)
> "[Post preview...]"
— [Author], [Date] | [Reactions] reactions, [Comments] comments
[URL]

### Twitter/X (top tweet)
> "[Tweet text]"
— [@handle], [Date] | [Likes] likes
[URL]

### Themes this week: [tag1], [tag2], [tag3]

---

## Content Gap Analysis

| Topic | Competitors covering | You covering |
|-------|---------------------|--------------|
| [topic] | Clay, Apollo | ❌ No |
| [topic] | Nobody | ✅ Yes |

## Recommended Actions
1. [Specific content opportunity to act on this week]
2. [Topic to consider writing a response/alternative take on]

Save digest to clients/<client-name>/intelligence/competitor-content-[YYYY-MM-DD].md.

Scheduling

This skill is designed to run weekly (Mondays recommended). Set up a cron job:

# Every Monday at 8am
0 8 * * 1 python3 run_skill.py competitor-content-tracker --client <client-name>

Cost

Component Cost
Blog scraping (RSS mode) Free
LinkedIn post scraping ~$0.05-0.20/profile (Apify)
Twitter scraping ~$0.01-0.05 per run
Total per weekly run ~$0.10-0.50 depending on scope

Tools Required

  • Apify access — via Gooseworks proxy by default (no key needed); set APIFY_API_TOKEN to BYO Apify
  • Upstream skills: blog-feed-monitor, linkedin-profile-post-scraper, twitter-mention-tracker

Trigger Phrases

  • "Run competitor content tracker for [client]"
  • "What did my competitors publish this week?"
  • "Give me a competitor content digest"
  • "What's [competitor] writing about?"
1---
2name: competitor-content-tracker
3description: >
4 Monitor competitor content across blogs, LinkedIn, and Twitter/X on a recurring basis.
5 Surfaces new posts, trending topics, and content gaps you can own. Chains blog-feed-monitor,
6 linkedin-profile-post-scraper, and twitter-mention-tracker. Use when you want a weekly digest
7 of what competitors are publishing and which topics are generating engagement.
8tags: [competitive-intel]
9---
10 
11# Competitor Content Tracker
12 
13Monitor competitor content activity across three channels — blog, LinkedIn, Twitter/X — and produce a consolidated digest highlighting what's new, what's getting traction, and where you have a content gap.
14 
15## When to Use
16 
17- "Track what [competitor] is publishing"
18- "Show me what my competitors posted this week"
19- "What topics are competitors winning on?"
20- "I want a weekly competitor content digest"
21 
22## Phase 0: Intake
23 
24### Competitors to Track
251. List of competitor company names + blog URLs (e.g., `https://clay.com/blog`)
262. LinkedIn profile URLs of competitor founders/CMOs to track (optional but high-value)
273. Twitter/X handles of the competitors or their founders (optional)
28 
29### Scope
304. How far back? (default: 7 days for weekly digest, 30 days for first run)
315. Any topics/keywords you care most about? (used to surface relevant posts first)
32 
33### Output
346. Format preference: full digest (everything) or highlights only (top 3-5 per competitor)?
35 
36Save config to `clients/<client-name>/configs/competitor-content-tracker.json`.
37 
38```json
39{
40 "competitors": [
41 {
42 "name": "Clay",
43 "blog_url": "https://clay.com/blog",
44 "linkedin_profiles": ["https://www.linkedin.com/in/kareem-amin/"],
45 "twitter_handles": ["@clay_hq", "@kareemamin"]
46 }
47 ],
48 "days_back": 7,
49 "keywords": ["GTM", "outbound", "AI agents", "growth"],
50 "output_mode": "highlights"
51}
52```
53 
54## Phase 1: Scrape Blog Content
55 
56Run `blog-feed-monitor` for each competitor blog URL:
57 
58```bash
59python3 skills/capabilities/blog-feed-monitor/scripts/scrape_blogs.py \
60 --urls "<competitor_blog_url>" \
61 --days <days_back> \
62 --keywords "<keywords>" \
63 --output summary
64```
65 
66Collect: post title, publish date, URL, excerpt.
67 
68## Phase 2: Scrape LinkedIn Posts
69 
70Run `linkedin-profile-post-scraper` for each tracked founder/executive LinkedIn URL:
71 
72```bash
73python3 skills/capabilities/linkedin-profile-post-scraper/scripts/scrape_linkedin_posts.py \
74 --profiles "<linkedin_url_1>,<linkedin_url_2>" \
75 --days <days_back> \
76 --max-posts 20 \
77 --output summary
78```
79 
80Collect: post text preview, date, reactions, comments, post URL.
81 
82## Phase 3: Scrape Twitter/X
83 
84Run `twitter-mention-tracker` for each handle:
85 
86```bash
87python3 skills/capabilities/twitter-mention-tracker/scripts/search_twitter.py \
88 --query "from:<handle>" \
89 --since <YYYY-MM-DD> \
90 --until <YYYY-MM-DD> \
91 --max-tweets 20 \
92 --output summary
93```
94 
95Collect: tweet text, date, likes, retweets, URL.
96 
97## Phase 4: Analyze & Synthesize
98 
99After collecting raw data, synthesize across all channels:
100 
101### For each competitor, identify:
102- **New blog posts** — titles, dates, topics
103- **Top LinkedIn post** — by engagement (reactions + comments), topic, key message
104- **Top tweet** — by likes, topic
105- **Recurring themes** — what topics did they post about most this period?
106- **Content format patterns** — are they doing listicles, opinion pieces, case studies?
107 
108### Cross-competitor analysis:
109- **Shared trending topics** — what are multiple competitors writing about?
110- **Coverage gaps** — topics they're covering that you're not
111- **Topics you own** — where you're publishing and they're not
112- **Engagement benchmarks** — average likes/reactions across competitors (context for your own performance)
113 
114## Phase 5: Output Format
115 
116Produce a structured markdown digest:
117 
118```markdown
119# Competitor Content Digest — Week of [DATE]
120 
121## Summary
122- [N] new blog posts tracked across [N] competitors
123- Top trending topic: [topic]
124- Biggest content gap for you: [topic]
125 
126---
127 
128## [Competitor Name]
129 
130### Blog
131- [Post Title] — [Date] — [URL]
132 > [One-sentence summary]
133 
134### LinkedIn (top post)
135> "[Post preview...]"
136— [Author], [Date] | [Reactions] reactions, [Comments] comments
137[URL]
138 
139### Twitter/X (top tweet)
140> "[Tweet text]"
141— [@handle], [Date] | [Likes] likes
142[URL]
143 
144### Themes this week: [tag1], [tag2], [tag3]
145 
146---
147 
148## Content Gap Analysis
149 
150| Topic | Competitors covering | You covering |
151|-------|---------------------|--------------|
152| [topic] | Clay, Apollo | ❌ No |
153| [topic] | Nobody | ✅ Yes |
154 
155## Recommended Actions
1561. [Specific content opportunity to act on this week]
1572. [Topic to consider writing a response/alternative take on]
158```
159 
160Save digest to `clients/<client-name>/intelligence/competitor-content-[YYYY-MM-DD].md`.
161 
162## Scheduling
163 
164This skill is designed to run weekly (Mondays recommended). Set up a cron job:
165 
166```bash
167# Every Monday at 8am
1680 8 * * 1 python3 run_skill.py competitor-content-tracker --client <client-name>
169```
170 
171## Cost
172 
173| Component | Cost |
174|-----------|------|
175| Blog scraping (RSS mode) | Free |
176| LinkedIn post scraping | ~$0.05-0.20/profile (Apify) |
177| Twitter scraping | ~$0.01-0.05 per run |
178| **Total per weekly run** | **~$0.10-0.50** depending on scope |
179 
180## Tools Required
181 
182- **Apify access** — via Gooseworks proxy by default (no key needed); set `APIFY_API_TOKEN` to BYO Apify
183- **Upstream skills:** `blog-feed-monitor`, `linkedin-profile-post-scraper`, `twitter-mention-tracker`
184 
185## Trigger Phrases
186 
187- "Run competitor content tracker for [client]"
188- "What did my competitors publish this week?"
189- "Give me a competitor content digest"
190- "What's [competitor] writing about?"
191 

Discussion

Alternatives

Also in Competitor research
Competitor Comparison & Alternatives PagesTell us your product and a rival you keep losing deals to, and get back a ready-to-publish page that shows why customers should pick you.Business & ops · MITAd angle minerMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.Business & ops · MITX audience insightsRead your X (Twitter) audience and niche from real data. Pull a handle's recent tweets (yours or a competitor's) with likes, replies, and views, see which formats and hooks are working, read the repliers on a tweet (X gates likers, so repliers are the signal), and scan a niche query for top tweets. Powered by Apify, no login. Triggers on "analyze my tweets", "what is working on X", "read the replies", "competitor tweets", "who is engaging". Not for writing a tweet (use x-post-writer).Marketing · MITFacebook Audience InsightsRead a Facebook Page and its audience from real data. Pull any Page's public stats (yours or a competitor's): followers, likes, categories, intro, websites. And pull the commenters on a public Page post, since Facebook hides the reactor and liker roster and shows counts only, so commenters are the signal. Powered by Apify, no login. Triggers on "analyze my Page", "competitor Page stats", "who is commenting", "read the comments", "audience insights". Not for writing Page posts (use fb-post-writer).Marketing · MIT