Martin's corner on the web

Turning Facebook groups into a daily digest

I have multiple Facebook groups to monitor, and I dislike Facebook. Group discussions have turned into an arena for trolls, propaganda and confident misinformation, and the posts I actually need – announcements, deadlines, the occasional genuine recommendation – sit buried under all that, in whatever order the feed decides to show them. I kept missing the ones with deadlines in them. That bothered me enough to script my way out: a tool that harvests the groups, strips the noise – human and algorithmic – and hands me an actionable summary.

Facebook has no API for groups, and the existing options don’t really solve this. Scraping services hand you raw data and want your session cookies uploaded to their cloud, the paid monitors do keyword alerts from $199/month and can’t get into members-only groups anyway, and the open-source scrapers are mostly abandoned. So I wrote my own.

fbtool logs into Facebook with a real browser and scrolls each group the way a human would. Instead of parsing the page – a war you eventually lose, Facebook reshuffles its markup constantly – it records the data the feed itself loads: exact timestamps, full post text, permalinks, top comments. Everything lands in a local SQLite database, and a model of your choice (OpenAI, Anthropic, or fully local via Ollama/vLLM) turns the recent history into a Markdown digest grouped by topic, with links back to the threads that matter. The digest reads in two minutes. The feed optimizes for time spent; the digest for time saved.

Here is what that looks like in practice – a slice of a real digest from my building’s owners group, translated from Bulgarian, names and numbers redacted:

# Facebook group summary — 2026-07-26

_Covering 60 days (28 posts across 1 groups)_

### 1) Building safety and maintenance
- **Loose facade panel on the 13th floor** – reported hanging off the
  building next to the elevators; second-floor neighbors warned to stay
  off their terraces until it is checked.
  https://www.facebook.com/groups/…/posts/…/
- **Kids on scooters in the garage** – riding fast down the exit ramp,
  a real accident risk; parents asked to react.

### 2) Containers, garbage and a composting idea
- Garbage piles up around the containers every other day even when the
  bins are empty; sometimes it blocks the stairs to them.
- A composting / food-waste proposal for the container area, with
  support in the comments. **Deadline: 7.09** for the community to
  decide and act.

**Actionable / time-sensitive:**
Anyone who wants in on the container initiative needs to organize
**before September 7**.

That September 7 deadline is exactly the kind of post I used to find out about a week too late.

The database turned out to be useful beyond the digest. Two examples ship in the repo: ask.py answers questions over a group’s history (“who offered a parking space for rent?” – right post, right permalink), and wishlist_watch.py checks new posts against a plain-language wishlist and can fire a notification from cron. A deadlines-to-calendar extractor or a directory of recommended local services would be small additions on top of the same data.

One warning: this is against Facebook’s ToS. A gentle once-a-day run from your home IP is low risk, but don’t point it at an account you can’t afford to lose – the README covers this in detail.

Code is on GitHub. If your groups also bury the important posts, a two-minute digest beats twenty minutes of scrolling.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.