Facebook Audience Insights

Read a Facebook Page and its audience from real data.

How to use it

  1. Hit Copy the whole skill.
  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 sergebulaev/facebook-skills/.codex-marketplace/facebook-skills/skills/fb-audience-insights#main ~/.claude/skills/fb-audience-insights

For one project only, change the path to .claude/skills/fb-audience-insights.

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 text73 lines
fb-audience-insights/SKILL.md73 lines5.1 KBpushed 13d agoRawView on GitHub

Facebook Audience Insights

Turn real Facebook data into a read on a Page and its audience: how big it is, what it is about, and who is actually engaging in the comments. This is the read layer, so the skill sees actual numbers instead of guessing.

One honest limit: Facebook hides the roster of who reacted to (liked) a post. It shows reaction counts, never a reactor list. The engagement signal here is commenters + Page stats, which is where the real conversation lives anyway. This reads commenters, not likers, on purpose.

When to use

  • "Analyze my Page / how is my Page doing"
  • "Pull the stats on this competitor Page"
  • "Who is commenting on this post"
  • "Read the comments on this Page post"
  • "Size up [a Page] before I pitch / benchmark against it"

Not for writing a Page post (use fb-post-writer) or drafting comment replies (use fb-engagement-drafter).

Setup (optional)

The read layer uses Apify (no login, no cookies). Get a free token at https://console.apify.com/account/integrations and set APIFY_TOKEN. No token? Paste the Page stats or the comments you already have and the skill runs the same analysis on them.

Input

  • A Facebook Page URL (yours or a competitor's), or
  • A public Page-post URL (or a bare pfbid post id) to read its commenters

Output

  1. Page read - the Page's title, category, followers, likes, and intro, with a one-line take on positioning and size
  2. Commenter read - who commented on a post, recurring questions or themes, commenters worth a reply or a follow
  3. Competitor read - the same Page stats for a rival, so you can benchmark follower size, category, and how they describe themselves
  4. Action list - what to write more of, whose comments to reply to, which Page angle to borrow

Steps

  1. Pull the data. For a Page: lib.ApifyClient().fetch_page_stats(page_url). For a post's commenters: fetch_post_commenters(post_url, max_comments=25). Falls back to pasted data if no token.
  2. Read the Page. Report followers, likes, category, and intro. Compare a competitor's numbers to the user's own Page to size the gap honestly (a bigger follower count is context, not destiny).
  3. Read the commenters. Cluster comments into questions, agreement, and pushback. Recurring questions are content ideas; commenters with substance are reply candidates. Sort by reactions and replies to surface the comments that themselves traveled.
  4. Be honest about the wall. Facebook does not expose who reacted or liked. Never present a "top likers" list. If the user asks for likers, explain the platform limit and pivot to commenters.
  5. Build the action list. Write-more-of (angles the audience responds to), engage (specific commenters to reply to), borrow (a competitor Page's positioning move). Route drafts to fb-post-writer / fb-engagement-drafter.
  6. Deliver the report in the Output shape, with the raw Page stats and ranked comments attached.

What the read layer exposes

Method Returns
fetch_page_stats(page_url) Page stats: title, page_name, page_id, followers, likes, categories, intro, websites, email, profile/cover photo urls
fetch_post_commenters(post_url, max_comments) commenters on a post: author, author_id, message, reactions, replies, depth, is_reply (the engagement signal, since reactors/likers are hidden)

Both are verified live against apify/facebook-pages-scraper and danek/facebook-comments-ppr.

Hard rules

Global voice rules: see root SKILL.md Voice rules. Additional skill-specific rules:

  • Be honest that this reads commenters, not likers (Facebook hides the reactor roster). Never imply a full liker or reactor list exists.
  • Compare against the user's own Page before calling a competitor "ahead" or "behind". Raw follower count without context misleads.
  • Never invent a Page stat, a follower number, a comment, or a commenter name. If a Page or post returns nothing (private, comments off, share link that hides ids), say so and ask the user to paste.
  • A theme is only a theme if it recurs across several comments, not one.
  • Page stats are a public snapshot, not private Insights (no reach, no demographics). Do not present them as Meta Business Suite Insights.

Related skills

  • fb-post-writer - write more of what the read shows the audience responds to
  • fb-engagement-drafter - reply to a commenter the read surfaced
  • fb-hook-extractor - reverse-engineer a hook from a competitor's high-share post
  • fb-content-planner - feed the winning angles into a weekly plan
  • fb-page-optimizer - borrow a competitor Page's positioning into your own Page setup
1---
2name: fb-audience-insights
3description: "Read 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)."
4---
5 
6# Facebook Audience Insights
7 
8Turn real Facebook data into a read on a Page and its audience: how big it is, what it is about, and who is actually engaging in the comments. This is the read layer, so the skill sees actual numbers instead of guessing.
9 
10One honest limit: Facebook hides the roster of who **reacted** to (liked) a post. It shows reaction counts, never a reactor list. The engagement signal here is **commenters + Page stats**, which is where the real conversation lives anyway. This reads commenters, not likers, on purpose.
11 
12## When to use
13 
14- "Analyze my Page / how is my Page doing"
15- "Pull the stats on this competitor Page"
16- "Who is commenting on this post"
17- "Read the comments on this Page post"
18- "Size up [a Page] before I pitch / benchmark against it"
19 
20Not for writing a Page post (use `fb-post-writer`) or drafting comment replies (use `fb-engagement-drafter`).
21 
22## Setup (optional)
23 
24The read layer uses **Apify** (no login, no cookies). Get a free token at `https://console.apify.com/account/integrations` and set `APIFY_TOKEN`. No token? Paste the Page stats or the comments you already have and the skill runs the same analysis on them.
25 
26## Input
27 
28- A Facebook Page URL (yours or a competitor's), or
29- A public Page-post URL (or a bare `pfbid` post id) to read its commenters
30 
31## Output
32 
331. **Page read** - the Page's title, category, followers, likes, and intro, with a one-line take on positioning and size
342. **Commenter read** - who commented on a post, recurring questions or themes, commenters worth a reply or a follow
353. **Competitor read** - the same Page stats for a rival, so you can benchmark follower size, category, and how they describe themselves
364. **Action list** - what to write more of, whose comments to reply to, which Page angle to borrow
37 
38## Steps
39 
401. **Pull the data.** For a Page: `lib.ApifyClient().fetch_page_stats(page_url)`. For a post's commenters: `fetch_post_commenters(post_url, max_comments=25)`. Falls back to pasted data if no token.
412. **Read the Page.** Report followers, likes, category, and intro. Compare a competitor's numbers to the user's own Page to size the gap honestly (a bigger follower count is context, not destiny).
423. **Read the commenters.** Cluster comments into questions, agreement, and pushback. Recurring questions are content ideas; commenters with substance are reply candidates. Sort by `reactions` and `replies` to surface the comments that themselves traveled.
434. **Be honest about the wall.** Facebook does not expose who reacted or liked. Never present a "top likers" list. If the user asks for likers, explain the platform limit and pivot to commenters.
445. **Build the action list.** Write-more-of (angles the audience responds to), engage (specific commenters to reply to), borrow (a competitor Page's positioning move). Route drafts to `fb-post-writer` / `fb-engagement-drafter`.
456. **Deliver the report** in the Output shape, with the raw Page stats and ranked comments attached.
46 
47## What the read layer exposes
48 
49| Method | Returns |
50|---|---|
51| `fetch_page_stats(page_url)` | Page stats: title, page_name, page_id, followers, likes, categories, intro, websites, email, profile/cover photo urls |
52| `fetch_post_commenters(post_url, max_comments)` | commenters on a post: author, author_id, message, reactions, replies, depth, is_reply (the engagement signal, since reactors/likers are hidden) |
53 
54Both are verified live against `apify/facebook-pages-scraper` and `danek/facebook-comments-ppr`.
55 
56## Hard rules
57 
58Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific rules:
59 
60- Be honest that this reads **commenters, not likers** (Facebook hides the reactor roster). Never imply a full liker or reactor list exists.
61- **Compare against the user's own Page** before calling a competitor "ahead" or "behind". Raw follower count without context misleads.
62- Never invent a Page stat, a follower number, a comment, or a commenter name. If a Page or post returns nothing (private, comments off, share link that hides ids), say so and ask the user to paste.
63- A theme is only a theme if it recurs across several comments, not one.
64- Page stats are a public snapshot, not private Insights (no reach, no demographics). Do not present them as Meta Business Suite Insights.
65 
66## Related skills
67 
68- `fb-post-writer` - write more of what the read shows the audience responds to
69- `fb-engagement-drafter` - reply to a commenter the read surfaced
70- `fb-hook-extractor` - reverse-engineer a hook from a competitor's high-share post
71- `fb-content-planner` - feed the winning angles into a weekly plan
72- `fb-page-optimizer` - borrow a competitor Page's positioning into your own Page setup
73 

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 · MITCompetitor & Alternative PagesWhen the user wants to create competitor comparison or alternative pages for SEO and sales enablement. Also use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'competitive landing pages,' 'how do we compare to X,' 'battle card,' or 'competitor teardown.' Use this for any content that positions your product against competitors. Covers four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. For sales-specific competitor docs, see sales-enablement.Marketing · MIT