Marketing & SalesDocumentedScanned
x-timeline-digest
Build a deduplicated digest from X (Twitter) For You and Following timelines using bird.
Share:
Installation
npx clawhub@latest install x-timeline-digestView the full skill documentation and source below.
Documentation
x-timeline-digest
Overview
This skill uses bird to read X/Twitter timelines and build a high-signal digest. Sources:- For You timeline
- Following timeline
Delivery (Telegram, email, etc.) is NOT handled here.
Upstream OpenClaw workflows decide how to notify users.
Configuration
All config is read from: skills.entries["x-timeline-digest"].configConfig fields
| Name | Type | Default | Description |
| intervalHours | number | 6 | Interval window in hours |
| fetchLimitForYou | number | 100 | Tweets fetched from For You |
| fetchLimitFollowing | number | 60 | Tweets fetched from Following |
| maxItemsPerDigest | number | 25 | Max tweets in one digest |
| similarityThreshold | number | 0.9 | Near-duplicate similarity threshold |
| statePath | string | ~/.openclaw/state/x-timeline-digest.json | State file path |
Dependencies
- bird must be installed and available in PATH
- bird must already be authenticated (cookie login)
- Read-only usage
Usage
1. Basic (Raw JSON)
Run the digest generator to get a clean, deduplicated JSON payload:node skills/x-timeline-digest/digest.js
2. Intelligent Digest (Recommended)
To generate the "Smart Brief" (Categorized, Summarized, Denoised):node skills/x-timeline-digest/digest.js > digest.jsonread skills/x-timeline-digest/PROMPT.mddigest.json where {{JSON_DATA}} is.Note: The script automatically applies heuristic filtering (removes "gm", ads, short spam) before outputting JSON.
Bird Commands Used
For You timeline: bird home -n --json Following timeline: bird home --following -n --jsonState Management
State is persisted to statePath.State structure
{ "lastRunAt": "2026-02-01T00:00:00+08:00", "sentTweetIds": { "123456789": "2026-02-01T00:00:00+08:00" } }Rules
- Tweets already in sentTweetIds must not be included again
- After a successful run:
- Update lastRunAt
- Add pushed tweet IDs to sentTweetIds
- Keep IDs for at least 30 days