← 返回 Skills 市场
phuc-nt

Facebook Group Monitor

作者 phuc-nt · GitHub ↗ · v1.3.0 · MIT-0
cross-platform ✓ 安全检测通过
429
总下载
1
收藏
1
当前安装
3
版本数
在 OpenClaw 中安装
/install facebook-group-monitor
功能描述
Monitor Facebook groups for new posts using Playwright browser automation with stealth mode and persistent login session. Scrapes group feed, tracks seen pos...
使用说明 (SKILL.md)

Facebook Group Monitor Skill

Overview

Playwright-based headless browser scraper for Facebook groups. Default behavior: captures a stitched "feed strip" (scrolls 3× viewport, crops to feed column, stitches into 1 JPEG) → agent calls vision model once with a custom prompt to extract and interpret all new posts in a single LLM call.

Requires one-time manual login via terminal to establish a persistent browser session.

Setup

See references/SETUP.md for installation and first-time login instructions.

File Locations (after install)

  • Script: scripts/fb-group-monitor.py
  • Shell wrapper: scripts/fb-group-monitor.sh
  • Browser session: auto-created at scripts/.browser-data/ (persistent login)
  • Seen posts: auto-created at scripts/.seen-posts.json (dedup tracking)
  • Screenshots: scripts/screenshots/ or custom --shots-dir

Commands

1. Check login session

scripts/fb-group-monitor.sh status

Output:

{"success": true, "action": "status", "message": "Session active — logged in to Facebook."}

2. Scrape new posts (with feed strip screenshot)

scripts/fb-group-monitor.sh scrape \x3CGROUP_URL> [--limit N] [--shots-dir \x3CPATH>]

Parameters:

  • GROUP_URL: Full URL (https://www.facebook.com/groups/123456) or just group ID
  • --limit N: Max posts to scrape (default: 10)
  • --shots-dir \x3CPATH>: ⚠️ REQUIRED for vision — save screenshots in agent workspace so image tool can read them
  • --no-shots: Skip screenshots (faster, text-only mode)

Example:

scripts/fb-group-monitor.sh scrape "https://www.facebook.com/groups/123456789" --limit 10 --shots-dir ./temp-screenshots

Output JSON (with feed strip screenshot):

{
  "success": true,
  "action": "scrape",
  "group_name": "Example Group Name",
  "group_url": "https://www.facebook.com/groups/123456789",
  "total_scraped": 6,
  "new_count": 3,
  "feed_screenshot": "/path/to/temp-screenshots/feed_abc12345_1741800000.jpg",
  "posts": [
    {
      "author": "Poster Name",
      "text": "Post content (may be truncated by Facebook's 'See more')...",
      "url": "https://facebook.com/groups/123456/posts/789",
      "images": 3
    },
    {
      "author": "Another Poster",
      "text": "Text-only post, no images...",
      "url": "https://facebook.com/groups/123456/posts/790",
      "images": 0
    }
  ],
  "message": "Found 3 new posts / 6 total."
}

Note: feed_screenshot is a single stitched JPEG covering the full feed (3 viewport scrolls). Individual posts no longer have a screenshot_path — use feed_screenshot (top-level) instead.

3. Clean old screenshots

scripts/fb-group-monitor.sh clean-shots

Auto-removes screenshots older than 48h and caps at 100 max. Script also auto-cleans before each scrape.

4. Login (one-time, from terminal)

scripts/fb-group-monitor.sh login

Opens browser, login manually, press Enter to save session. Session lasts weeks/months.

Agent Workflow

When triggered by cron or user request to check a group:

Step 1: Scrape

scripts/fb-group-monitor.sh scrape "\x3CGROUP_URL>" --limit 10 --shots-dir ./temp-screenshots

⚠️ Use --shots-dir pointing to a path within the workspace so the image tool can access screenshots.

Step 2: Analyze feed screenshot + combine with text

If feed_screenshot is present (1 stitched image covering the full feed):

  • Compose a dynamic prompt using the author list from the JSON, so vision focuses on the correct new posts (the feed strip also contains already-seen posts)
  • Call image tool with both image and prompt parameters:
    image tool:
      image: \x3Cfeed_screenshot path>
      prompt: "Facebook group feed. Find and analyze posts by these people (new posts to process):
      - [Author 1]: "[first few words of text from JSON]" — N images
      - [Author 2]: "[first few words of text from JSON]"
      ...
      For EACH post, do 2 things:
      1. EXTRACT: book/product name, author/publisher (read from cover), price (including handwritten prices), condition (new/used/marked/yellowed).
      2. INTERPRET: is the deal worth it (price vs market if known), is the item rare/valuable, actual condition assessment from photos."
    
  • ⚠️ NEVER call image tool with empty {} — default prompt just describes the image generically
  • ⚠️ Feed strip includes old posts — always include author + text snippet so vision targets the right posts
  • After getting vision result: match by author, add url from JSON
  • Prioritize image content over truncated text field ("see more" posts)

If feed_screenshot is absent (screenshot failed):

  • Read directly from text field of each post
  • Summarize available information, note "no screenshot available"

Step 3: Report to user

MUST include the original post link in each item for verification.

Format per new post:

📌 *[Title/Summary]*
👤 Author: [author]
💰 Price: [price or "unknown"]
📝 Condition: [description]
💡 Note: [deal assessment or insight, if any]
🔗 [post URL]

Step 4: If no new posts → stay silent (no notification)

Step 5: If success == false → report error briefly

⚠️ Anti-duplicate rule

  • Send Telegram only ONCE per run, regardless of whether vision succeeded or failed
  • If message tool returns an error → report once and stop, do NOT retry
  • If vision fails → fallback to text, send once with note "⚠️ Vision unavailable, text only"

Important Notes

  • Rate limiting: Recommended cron interval ≥ 2 hours — safe for Facebook
  • Session expired: If error "Not logged in" → run login from terminal
  • UI changes: Facebook updates DOM frequently → selectors may need updates
  • "See more": Text is truncated — feed strip screenshot usually has complete content
  • Feed strip: Scrolls 3× viewport height, crops to feed column, stitches 1 JPEG — reduces vision calls from N to 1
  • Screenshot quality: JPEG 82% — sufficient for LLM vision to read text and identify product images
  • Vision model: Use a vision-capable model (e.g. Gemini Flash) for the image tool call
安全使用建议
This skill appears to do exactly what it says: it automates a Chromium browser (Playwright) to log into Facebook (manual interactive login once), persist the browser session to scripts/.browser-data, scrape group posts, and save stitched screenshots in a workspace folder for vision-analysis. Before installing: 1) understand that the saved session directory contains Facebook auth cookies — treat it as sensitive and store it in a location you control or remove it when not needed; 2) perform the one-time login interactively on a trusted machine (do not give credentials to the agent); 3) consider using a dedicated Facebook account for scraping to limit exposure; 4) the skill will write screenshots and a .seen-posts.json file in its scripts folder (or in the workspace you point via --shots-dir) — review those files if you are concerned about local data retention; 5) installing dependencies will fetch Playwright and Chromium via their normal channels (pip/playwright install); review and run those commands yourself in a virtualenv rather than letting an agent run them. If you want stronger isolation, run this skill inside a constrained environment or VM and inspect scripts/fb-group-monitor.py yourself before use.
功能分析
Type: OpenClaw Skill Name: facebook-group-monitor Version: 1.3.0 The skill is a legitimate Facebook group monitoring tool that uses Playwright for browser automation and Pillow for image stitching. It features a robust scraping logic (fb-group-monitor.py) that extracts post data and generates 'feed strip' screenshots for LLM vision analysis, while maintaining a persistent login session to avoid credential handling risks. The instructions in SKILL.md are well-aligned with the stated purpose, providing clear guidance for the agent on data extraction and analysis without any signs of malicious intent or data exfiltration.
能力评估
Purpose & Capability
Name/description, SKILL.md, setup guide, and included scripts all describe a Playwright-based Facebook group scraper that uses a persistent browser session and stitched screenshots. The files and requested behaviors are consistent with that purpose; no unrelated credentials, services, or binaries are requested.
Instruction Scope
Runtime instructions require storing a persistent Playwright user-data directory (cookies/session) under scripts/.browser-data, saving screenshots into a workspace path so the agent's image tool can read them, and writing a seen-posts file. Those actions are expected for this skill but expose Facebook session cookies and scraped images on disk — the README correctly instructs first-time interactive login from a terminal rather than from the agent.
Install Mechanism
No install spec is embedded in the registry (instruction-only), but SETUP.md instructs installing well-known packages (playwright, playwright-stealth) and running 'playwright install chromium'. Playwright downloads Chromium from its standard release sources — no arbitrary external binaries or obscure URLs are referenced.
Credentials
The skill does not declare or require external API keys or secrets. It optionally reads FBMON_VENV to locate a virtualenv (a normal convenience). The persistent browser session effectively holds Facebook authentication cookies — sensitive but proportional and necessary for the stated functionality.
Persistence & Privilege
always is false and the skill does not change other skills' configuration. However, with a saved session in scripts/.browser-data, the agent (when invoked autonomously or via cron) can scrape Facebook groups without further manual interaction; users should be aware that saved session cookies grant ongoing access until the session expires or is cleared.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install facebook-group-monitor
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /facebook-group-monitor 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.3.0
v1.3.0: New feed strip workflow — dynamic vision prompt from JSON authors, anti-duplicate guard, updated output schema (feed_screenshot top-level). Resolves vision mismatch issue where model described wrong posts.
v1.1.0
Fix URL extraction: 4-pass strategy improves post link detection from 64% to 100%. Adds isPostLink() helper, broad anchor scan (Pass 2), timestamp aria-label fallback (Pass 3), and post ID extraction from photo set param (Pass 4).
v1.0.0
Initial release: Playwright-based FB group scraper with stealth mode and screenshot capture for LLM vision analysis
元数据
Slug facebook-group-monitor
版本 1.3.0
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 3
常见问题

Facebook Group Monitor 是什么?

Monitor Facebook groups for new posts using Playwright browser automation with stealth mode and persistent login session. Scrapes group feed, tracks seen pos... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 429 次。

如何安装 Facebook Group Monitor?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install facebook-group-monitor」即可一键安装,无需额外配置。

Facebook Group Monitor 是免费的吗?

是的,Facebook Group Monitor 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Facebook Group Monitor 支持哪些平台?

Facebook Group Monitor 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Facebook Group Monitor?

由 phuc-nt(@phuc-nt)开发并维护,当前版本 v1.3.0。

💬 留言讨论