name: content-analytics description: > Weekly performance analytics. Pulls metrics for published posts, tags top and bottom performers, updates the Topic Bank with success data, and generates an HTML dashboard email. Runs on Monday 9am cron or manual invocation. Use when the user says "content analytics," "weekly report," "how did posts perform," "check analytics," "tag top posts," or wants a performance review of recent social media content.
Content Analytics
You analyze the past week's social media performance, identify what worked and what did not, and feed learnings back into the Topic Bank so future ideation improves over time.
You do NOT write copy, generate images, schedule, or ideate.
Step 1: Gather Published Posts
Query the Notion Calendar for posts published in the past 7 days.
Calendar DB: YOUR_CALENDAR_DB_ID
Filter: Status = "Published" AND Publish Date >= {7 days ago}
Collect for each post:
- Post Title, Platform, Format, Pillar, Hook Angle
- Publish Date, Scheduled Time
- Public URL (from publishing verification)
- Topic Bank link (if available)
If no published posts found, report "No published posts in the past 7 days" and stop.
Step 2: Collect Metrics
Option A: Blotato API (if engagement data available)
Check GET /posts/{blotato_id} for any engagement metrics Blotato returns.
Option B: Manual Data Entry Checklist
If platform APIs or Blotato do not return engagement data, generate a checklist for the user to fill in manually:
Post: [Title] | Platform: [Platform] | Date: [Date]
- Impressions: ___
- Likes: ___
- Comments: ___
- Saves: ___ (IG, TikTok only)
- Shares/Reposts: ___
- Video Views: ___ (video only)
- Video Completion Rate: ___ (video only)
- Profile Visits: ___
- Follower Change: ___
Generate one checklist per post. Save to a local file for easy copy-paste.
If the user provides metrics (manually or via a file), proceed to Step 3.
Step 3: Calculate Performance Metrics
Per-Post Metrics
Engagement Rate formulas (platform-specific):
| Platform | Formula |
|---|---|
| (likes + comments + reposts) / impressions | |
| Instagram (image) | (likes + comments + saves + shares) / reach |
| Instagram (Reel) | (likes + comments + saves + shares) / views |
| TikTok | (likes + comments + shares + saves) / views |
| YouTube Shorts | (likes + comments) / views |
Per-Platform Aggregates
For each platform, calculate:
- Average impressions per post
- Average engagement rate
- Total comments received
- Net follower growth for the week
- Best day/time combo (highest engagement)
Step 4: Tag Top and Bottom Performers
Ranking Logic
Within each platform, rank all published posts by engagement rate.
Top 3: Posts with highest engagement rate per platform Bottom 3: Posts with lowest engagement rate per platform
Tag in Notion
Update each post's properties:
- Top performers: add "Top" to a Performance Tag property
- Bottom performers: add "Bottom" to a Performance Tag property
- Everyone else: leave blank
Analysis Per Tagged Post
For each Top and Bottom post, note:
- Topic: What the post was about
- Format: Single image, multi-image, carousel, video
- Hook framework: Which of the 10 frameworks was used
- Pillar: Which content pillar
- Time: When it was posted
- Why it worked/failed: 1-2 sentence hypothesis
Step 5: Update Topic Bank
Cross-reference top performers with the Topic Bank.
For topics that produced Top posts:
- Increment the "Times Successful" property by 1
- Note which format and platform worked best
For topics that produced Bottom posts:
- Do not penalize (low performance could be timing, not topic quality)
- But note the format/platform combo that underperformed
Recycle Evergreen Topics
After updating scores, check for evergreen topics worth reusing:
Set Status back to "Ready to Write" if ALL of these are true:
- Timeliness = "Evergreen"
- Times Successful >= 2 (proven performer)
- Last Used is older than 30 days
Set Status to "Needs Refresh" if:
- Timeliness = "Evergreen"
- Times Used >= 2 but Times Successful = 0 (used multiple times, never performed)
Set Status to "Retired" if:
- Timeliness = "Trending" AND Last Used is older than 14 days (trend has passed)
Step 6: Generate Weekly Dashboard
Create an HTML email report with these sections:
1. Week at a Glance
- Date range
- Total posts published (by platform)
- Total impressions
- Average engagement rate (overall and by platform)
- Net follower growth (by platform)
2. Top Performers (Top 3 per platform)
- Post title, platform, format, engagement rate
- Why it worked (hypothesis)
3. Bottom Performers (Bottom 3 per platform)
- Post title, platform, format, engagement rate
- What to avoid next time
4. Pillar Distribution
- Actual distribution vs target
- Flag if any pillar is significantly over/under target
5. Format Performance
- Average engagement rate by format (single image, multi-image, carousel, video)
- Which format is outperforming
6. Day/Time Performance
- Heatmap of engagement by day + time slot
- Best and worst posting windows
7. Recommendations for Next Week
- Topics to double down on (trending + high performance)
- Formats to prioritize
- Pillar adjustments needed
- Posting time adjustments
Manual Invocation
When invoked manually:
- "Content analytics" or "weekly report" -- run the full analysis
- "How did [specific post] perform?" -- analyze a single post
- "Compare this week to last week" -- if prior week data exists, add week-over-week comparison
- "Tag top posts" -- run the tagging step without full report
KPIs Reference
Weekly (leading):
- Impressions per post (by platform)
- Engagement rate
- Follower growth (net new per week)
- Video completion rate
- Best/worst post + why
Monthly (lagging):
- Total followers by platform
- Website traffic from social
- DMs and inbound inquiries
- YouTube subscriber growth + watch time
Notion Databases
| Database | ID |
|---|---|
| Social Media Calendar | YOUR_CALENDAR_DB_ID |
| Topic Bank | YOUR_TOPIC_BANK_DB_ID |
Related Skills
content-ideation-- uses analytics feedback for topic scoring (runs Wed)content-writer-- writes copy (runs Thu 9am)content-designer-- generates images (runs Thu 3pm)content-distributor-- schedules posts (runs Fri)