Content Audit Skill
Identify what content has worked best for the user so future posts double down on winning
topics, formats, and timing.
Required Apify Actors
Confirm the user has Apify connected and the following actors available before scraping.
Each actor bills independently — point the user to the Store links if any are missing.
| Platform |
Actor ID |
Data Available |
Apify Store |
| X/Twitter |
apidojo/tweet-scraper |
Likes, retweets, replies, timestamp |
Link |
| Reddit |
trudax/reddit-scraper |
Upvotes, comments, timestamp |
Link |
| Instagram |
apify/instagram-scraper |
Likes, comments, timestamp |
Link |
| Facebook |
apify/facebook-posts-scraper |
Reactions, comments, shares |
Link |
| LinkedIn |
harvestapi/linkedin-profile-scraper |
Posts, reactions (limited) |
Link |
| Medium |
Web fetch (no actor needed) |
Claps, responses |
— |
| Substack |
Web fetch (no actor needed) |
Likes, comments |
— |
Medium and Substack are publicly accessible — use web_fetch on the archive URL directly.
Step 1 — Identify Platforms to Audit
Ask which platforms to audit and collect handles for each.
Step 2 — Scrape Engagement Data via Apify
Trigger each platform's actor in parallel where possible. For each post, extract:
- Post text (title or first line as identifier)
- Engagement numbers: likes / upvotes / claps / comments / shares / retweets
- Date and time posted
- Post format: long-form / short take / list / question / story / thread
Minimum target: 20–30 posts per platform.
Scraping targets per platform:
X/Twitter (apidojo/tweet-scraper):
- Input: user profile URL
https://x.com/{username}
- Sort by: most liked / most retweeted
- Extract: text, likes, retweets, replies, timestamp
Reddit (trudax/reddit-scraper):
- Input:
https://www.reddit.com/user/{username}/submitted/?sort=top
- Extract: title, body, upvotes, comments, subreddit, timestamp
Instagram (apify/instagram-scraper):
- Input: username or profile URL
- Extract: caption, likes, comments, timestamp
Facebook (apify/facebook-posts-scraper):
- Input: public page or profile URL
- Extract: text, reactions, comments, shares, timestamp
LinkedIn (harvestapi/linkedin-profile-scraper):
- Input: profile URL
- Extract: posts, reactions (note: LinkedIn limits public engagement data)
Medium (web_fetch):
- URL:
https://medium.com/@{username}
- Extract: article titles, clap counts, response counts
Substack (web_fetch):
- URL: author archive URL
- Extract: post titles, like counts, comment counts
If any actor fails or returns empty, skip and move to manual input for that platform.
Step 3 — Manual Input for Failed / Closed Platforms
For any platform where scraping failed:
"For [platform], could you share your top 5–10 posts with the most engagement?
Paste the post text and give me rough numbers — even ballpark figures work."
Step 4 — Rank and Cluster Posts
Sort all posts by engagement. Identify the Top 10 Posts overall, noting:
- Platform, topic, format, engagement numbers, date + day + time
Then cluster into Topic Buckets:
- Group posts by theme (e.g., "career advice", "industry hot takes", "personal stories")
- For each cluster: post count, average engagement, highest single post engagement
Step 5 — Timing Analysis
From posts with timestamps:
- Best days of week (rank Mon–Sun by average engagement)
- Best time of day (morning / midday / evening / night)
- Posting frequency patterns (consistent weeks vs sporadic)
Step 6 — Generate the Audit Report
## [Name]'s Content Audit Report
Platforms audited: [list]
Total posts analyzed: [n]
### 🏆 Top 10 Posts
1. [Platform] — "[Post snippet]" — [engagement] — [date]
...
### 📦 Topic Clusters (ranked by avg engagement)
1. [Cluster name] — [n posts] — avg [x] engagements
...
### 📅 Best Times to Post (from your data)
- Best days: [e.g., Tuesday, Thursday]
- Best times: [e.g., 8–10am, 6–8pm]
### 💡 Key Patterns
- [Insight 1]
- [Insight 2]
### ⚠️ What's Not Working
- [Underperforming topic or format]
Step 7 — Save and Hand Off
Save via mimiq-memory:
python3 ~/.claude/skills/mimiq-memory/scripts/save_audit.py \
--platform "[platform]" \
--data '<audit JSON>' \
--best-times "[summary]" \
--topic-clusters "[summary]"
Then ask:
"Does this match your experience? Anything missing?"
1---2name: content-audit3description: Analyzes a user's social media posts to surface top-performing content, winning topics, best formats, and optimal posting times — using Apify actors for scraping public engagement data, falling back to manual input when actors are unavailable. ALWAYS trigger on: "what's been working for me", "what should I post about", "what are my best posts", "what topics get engagement", "when should I post", "analyze my content", "audit my social media", "what kind of posts do well for me", "I want to double down on what works", "show me my top performing content", "what do my followers respond to", sharing a social profile URL and asking what's working, or any question about past post performance or building a data-driven content calendar. Do NOT trigger for generic social media best practices with no reference to the user's own content — that's web search, not an audit.4---56# Content Audit Skill78Identify what content has worked best for the user so future posts double down on winning9topics, formats, and timing.1011---1213## Required Apify Actors1415Confirm the user has Apify connected and the following actors available before scraping.16Each actor bills independently — point the user to the Store links if any are missing.1718| Platform | Actor ID | Data Available | Apify Store |19|------------|-----------------------------------|-------------------------------------|-------------|20| X/Twitter | `apidojo/tweet-scraper` | Likes, retweets, replies, timestamp | [Link](https://apify.com/apidojo/tweet-scraper) |21| Reddit | `trudax/reddit-scraper` | Upvotes, comments, timestamp | [Link](https://apify.com/trudax/reddit-scraper) |22| Instagram | `apify/instagram-scraper` | Likes, comments, timestamp | [Link](https://apify.com/apify/instagram-scraper) |23| Facebook | `apify/facebook-posts-scraper` | Reactions, comments, shares | [Link](https://apify.com/apify/facebook-posts-scraper) |24| LinkedIn | `harvestapi/linkedin-profile-scraper` | Posts, reactions (limited) | [Link](https://apify.com/harvestapi/linkedin-profile-scraper) |25| Medium | Web fetch (no actor needed) | Claps, responses | — |26| Substack | Web fetch (no actor needed) | Likes, comments | — |2728> Medium and Substack are publicly accessible — use `web_fetch` on the archive URL directly.2930---3132## Step 1 — Identify Platforms to Audit3334Ask which platforms to audit and collect handles for each.3536---3738## Step 2 — Scrape Engagement Data via Apify3940Trigger each platform's actor in parallel where possible. For each post, extract:41- Post text (title or first line as identifier)42- Engagement numbers: likes / upvotes / claps / comments / shares / retweets43- Date and time posted44- Post format: long-form / short take / list / question / story / thread4546**Minimum target:** 20–30 posts per platform.4748### Scraping targets per platform:4950**X/Twitter** (`apidojo/tweet-scraper`):51- Input: user profile URL `https://x.com/{username}`52- Sort by: most liked / most retweeted53- Extract: text, likes, retweets, replies, timestamp5455**Reddit** (`trudax/reddit-scraper`):56- Input: `https://www.reddit.com/user/{username}/submitted/?sort=top`57- Extract: title, body, upvotes, comments, subreddit, timestamp5859**Instagram** (`apify/instagram-scraper`):60- Input: username or profile URL61- Extract: caption, likes, comments, timestamp6263**Facebook** (`apify/facebook-posts-scraper`):64- Input: public page or profile URL65- Extract: text, reactions, comments, shares, timestamp6667**LinkedIn** (`harvestapi/linkedin-profile-scraper`):68- Input: profile URL69- Extract: posts, reactions (note: LinkedIn limits public engagement data)7071**Medium** (web_fetch):72- URL: `https://medium.com/@{username}`73- Extract: article titles, clap counts, response counts7475**Substack** (web_fetch):76- URL: author archive URL77- Extract: post titles, like counts, comment counts7879If any actor fails or returns empty, skip and move to manual input for that platform.8081---8283## Step 3 — Manual Input for Failed / Closed Platforms8485For any platform where scraping failed:8687> "For [platform], could you share your top 5–10 posts with the most engagement?88> Paste the post text and give me rough numbers — even ballpark figures work."8990---9192## Step 4 — Rank and Cluster Posts9394Sort all posts by engagement. Identify the **Top 10 Posts** overall, noting:95- Platform, topic, format, engagement numbers, date + day + time9697Then cluster into **Topic Buckets**:98- Group posts by theme (e.g., "career advice", "industry hot takes", "personal stories")99- For each cluster: post count, average engagement, highest single post engagement100101---102103## Step 5 — Timing Analysis104105From posts with timestamps:106- **Best days of week** (rank Mon–Sun by average engagement)107- **Best time of day** (morning / midday / evening / night)108- **Posting frequency patterns** (consistent weeks vs sporadic)109110---111112## Step 6 — Generate the Audit Report113114```115## [Name]'s Content Audit Report116Platforms audited: [list]117Total posts analyzed: [n]118119### 🏆 Top 10 Posts1201. [Platform] — "[Post snippet]" — [engagement] — [date]121...122123### 📦 Topic Clusters (ranked by avg engagement)1241. [Cluster name] — [n posts] — avg [x] engagements125...126127### 📅 Best Times to Post (from your data)128- Best days: [e.g., Tuesday, Thursday]129- Best times: [e.g., 8–10am, 6–8pm]130131### 💡 Key Patterns132- [Insight 1]133- [Insight 2]134135### ⚠️ What's Not Working136- [Underperforming topic or format]137```138139---140141## Step 7 — Save and Hand Off142143Save via mimiq-memory:144```bash145python3 ~/.claude/skills/mimiq-memory/scripts/save_audit.py \146 --platform "[platform]" \147 --data '<audit JSON>' \148 --best-times "[summary]" \149 --topic-clusters "[summary]"150```151152Then ask:153> "Does this match your experience? Anything missing?"