Skip to content
Agentmart
Submit a tool

facebook

find posts in a group or across Facebook by keyword; search people, read profiles, extract hashtags and tagged people, dump reel comments, audit group-post…

Skill by overseers-desk

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/overseers-desk-facebook

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

find posts in a group or across Facebook by keyword; search people, read profiles, extract hashtags and tagged people, dump reel comments, audit group-post activity.

Use cases: security

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/facebook

What's inside

Skill name
facebook
Description
find posts in a group or across Facebook by keyword; search people, read profiles, extract hashtags and tagged people, dump reel comments, audit group-post activity.
License
MIT
Instructions
173 lines in SKILL.md · view on GitHub

Agent Skills spec issues

  • name: "facebook" does not match folder "facebook.com"

Files (17)

  • SKILL.md
  • auth-keyword-search.tcl
  • auth-parse-activity.tcl
  • auth-parse-photos.tcl
  • auth-parse-posts.tcl
  • auth-parse-profile.tcl
  • auth-parse-reel-comments.tcl
  • auth-parse-reel.tcl
  • auth-parse-reels-tab.tcl
  • auth-parse-search.tcl
  • auth-reel-comments-cdp.tcl
  • auth-search-posts.tcl
  • fb-common.tcl · lib/
  • identity.tcl · lib/
  • parse-reel-comments.tcl · lib/
  • reel-comments-cdp.tcl · lib/
  • whoami.tcl

SKILL.md (first lines)

## Execution model

This workflow produces large DOM outputs (1-15MB per page). Spawn a **Sonnet subagent** to run it so the main conversation context is not consumed. Each script runs under the **serialised-browsing** harness: `browser-serialiser` loads the skill into a policed safe interpreter and drives the browser through the command surface (no raw CDP, anti-ban pacing enforced). Invoke by reference, `browser-serialiser facebook.com/<script> <args>`; the subagent need not paste scripts inline. See the serialised-browsing skill for the command surface.

Each script navigates to the relevant page, dumps the rendered DOM (or, for reel comments, harvests the page's own GraphQL responses), and emits its report in one step. A profile reference is a bare handle, a numeric id, or a full URL.

## Prerequisites

A logged-in Facebook session in the user-data-dir the serialiser targets.

Optional config, `[facebook.com] user_id`: the numeric account expected signed in. `browser-serialiser` names it in the `session missing` line it prints on exit 77, so a person reading a failed run knows which login to restore.

### No-session detection

When no one is logged in, Facebook embeds `"USER_ID":"0"` and `"ACCOUNT_ID":"0"` in the page config and serves a login wall (`id="login_form"`, `input name="email"`, `input name="pass"`, action `login/device-based/regular/login/`). The `"USER_ID":"0"` marker is the reliable one: it fires even on a public profile whose `<title>` still reads like a real page (e.g. `Mark Zuckerberg | Facebook`) behind the wall, where a title-only check would be fooled. When logged in, `USER_ID`/`ACCOUNT_ID` carry the real numeric account id.

The harness classifies a login/checkpoint redirect into a terminal `logged-out`/`checkpoint` state; the scripts also check the no-session markers in the dumped DOM, and a hit is a fault of shape `login_wall`, never a result. When a read comes back with `fault.shape` of `login_wall`, surface `fault.detail` to the user verbatim — do not retry blindly or report empty results.

Facebook may otherwise serve different DOM structures depending on the target profile's privacy settings and the session locale.

## Pacing and walls

The harness owns pacing+jitter on every wire-touching verb and the 429/login backoff, so a script cannot burst. A page settles for a few seconds before its rendered DOM is read. On a login/checkpoint redirect the run goes terminal at once; a script never retries a wall.

## 1-2. Search for people

```bash
browser-serialiser facebook.com/auth-parse-search SEARCH TERMS
browser-serialiser facebook.com/auth-parse-search --pages SEARCH TERMS
```

Pass terms as plain arguments (the script URL-encodes them and navigates to `/search/people/?q=...`, or `/search/pages/` with `--pages`). Outputs profile URLs (both vanity `/username` and numeric `/profile.php?id=`) with nearby visible text, read from the page's result region only. The people vertical lists no Page, so a business or trade name belongs in `--pages`. A query Facebook finds nothing for reports `No results` with the site's own notice; a page with neither rows nor the notice is an `unrecognised` fault.

### Search variants for hard-to-find people

Try in order if no results:

1. `Name City` — `Vikram Mazumder Mumbai`
2. `Name Company` — `Vikram Mazumder Google`
3. `Name Country` — `Vikram Mazumder India`
4. Alternative romanisations — for Indian names try Mazumdar/Mazumder/Majumder/Majumdar; for Chinese names try Lin/Lim/Lam etc.

## 3-4. Fetch and parse a profile

```bash
browser-serialiser facebook.com/auth-parse-profile HANDLE_OR_URL
```

Navigates to the profile (a bare handle resolves to `https://www.facebook.com/HANDLE`; a numeric id to `/profile.php?id=ID`; a Page slug carrying its id, `Name-ID` or `p/Name-ID`, to `/ID`: the hyphenated forms redirect out to meta.com and the harness ends a run that leaves the site, and `/people/Name/ID/about` renders an unavailable notice; a reference with no page behind it ("This page isn't available") is reported as a `removed` fault rather than as the signed-in shell) and extracts name, meta descriptions, JSON-LD Person data (if present), bio/intro lines, role/work mentions, location mentions, and visible text blocks.

For the declared contact and ownership detail, point the same script at the About tab: `https://www.facebook.com/HANDLE/about` (numeric: `/profile.php?id=ID&sk=about`). The tab's values are not rendered text; they sit in the page's data payload per sub-tab, so an About read reports an `About:` block: the Call button's number, the Bio, then the Contact info and Details sub-tabs (phone with its type, email, Messenger, address, rating), each fetched as its own navigation, and the remaining sub-tabs (Intro, Category, Links, Names on some pages) by URL, readable by passing that URL as the reference. A sub-tab that declares nothing reads `none declared`; an About page whose payload lacks the `profile_field_sections` key is an `unrecognised` fault, so a schema change shows as a fault and not as an empty contact block.

## 5. Parse recent posts

```bash
browser-serialiser facebook.com/auth-parse-posts HANDLE_OR_URL
```

Navigates to the profile and extracts per post: text content, hashtags, tagged/mentioned people and pages (with profile URLs), and shared-from source. Produces a summary of all hashtags and tagged entities across posts.

The script auto-detects the profile owner's ID to exclude self-references. To override:

```bash
browser-serialiser facebook.com/auth-parse-posts HANDLE_OR_URL --owner-id 100006232604720
```

How it works: each Facebook post carries a unique `__cft__[0]` token in all its links. The script uses `data-ad-preview="message"` markers to locate post boundaries, then associates hashtag and profile links via these tokens. Comments are excluded by limiting tag search to the header + content region.

## 6. Fetch a single reel / page post with rendered counts and commenters

A `https://www.facebook.com/reel/{ID}` URL renders an empty shell with no content. Use the page-post permalink form:

```bash
browser-serialiser facebook.com/auth-parse-reel https://www.facebook.com/PAGE_ID/posts/POST_ID
```

`POST_ID` for a recent reel can be found in the main profile dump (§3). Look for `"post_id":"NNNNNNNNN"` adjacent to the reel's `/reel/{ID}` URL — there is one such pair per recent reel embedded in the profile JSON.

Outputs page name, caption (from `<title>`), counts from both embedded JSON (`reaction_count`, `share_count`, sometimes `total_comment_count`) and the rendered engagement bar (reactions / comments / shares visible to the viewer), and the commenters whose names render in the DOM along with the comment body text adjacent to each name.

Limit: Facebook lazy-loads comments. A single render yields the first ~5-10 comments out of the full thread. The total count in the engagement bar is the true number; do not invent further commenters beyond what the parser extracts. For the full comment thread use §9.

## 7. Parse reels-tab view counts

```bash
browser-serialiser facebook.com/auth-parse-reels-tab HANDLE_OR_URL
```

Navigates to the profile's reels tab (`/HANDLE/reels`, or `/profile.php?id=ID&sk=reels_tab` for a numeric id) and extracts per visible reel card: reel URL and view count (e.g. `191K`). The render yields the first few cards before lazy-load — typical yield is 3 reels.

How it works: each reel card has an eye-icon SVG with a fixed path string (`M7.5 10a2.5...`); the view count is the first `<span>` after it. The reel ID is the closest `/reel/NNNNN` link occurring before that SVG.

## 8. Keyword search

```bash
browser-serialiser facebook.com/auth-keyword-search HANDLE_OR_URL keyword1 keyword2 ...
```

Navigates to the profile, then for each keyword shows the count and surrounding context — useful for checking whether a profile mentions specific companies, roles, locations, or topics without reading the entire DOM. The first argument is the profile reference; the rest are keywords.

## 9. Dump reel comments to Markdown

The reel viewer (`https://www.facebook.com/reel/{id}`) is an authenticated SPA that defers comment loading until the Comment button is clicked, and uses "Most relevant" sort by default. The reel-comments script drives the viewer: it navigates via `capture` (so the page's own GraphQL comment responses are buffered — the primary private-data path), clicks Comment, switches sort to an unfiltered view, scrolls and expands "N replies" / "See more" until the harvested set stops growing, harvests the GraphQL bodies for canonical comment text, and emits the parsed Markdown directly.

```bash
browser-serialiser facebook.com/auth-reel-comments-cdp https://www.facebook.com/reel/REEL_ID --max-rounds 200
```

`facebook.com/auth-parse-reel-comments URL` is the same end-to-end (it reuses the same driver and renderer); either reference produces the Markdown.

Output format is raw: `Author · age` followed by body lines for each top-level comment, with replies indented under their parent (prefixed with `↳`). No headers, no profile URLs, no comment IDs — designed for reading.

The number of comments returned matches what Facebook serves over its GraphQL endpoint. The viewer's header count (e.g. "630 comments") is often higher than what's actually returned because Facebook counts include spam-filtered/deleted/cross-universe-aggregated items that the API does not serve to a logged-in viewer.

## 10. Audit the group-post activity log

```bash
browser-serialiser facebook.com/auth-parse-activity <profile-id|activity-url> [--max-rounds N]
```

From overseers-desk/magazines, MIT.

More from overseers-desk/magazines

Signals

Stars
1
Forks
0
Open issues
36
Last commit (this folder)
Sep 6, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from overseers-desk

Cite this page

facebook skill. Agent Mart. https://agentmart.dev/skills/overseers-desk-facebook (last updated 2026-10-24)