CLI reference: Engagement
6 commands. Every command runs on your own computer; nothing is sent to a social network unless a publishing command is run by the owner with its live switches.
reachweaver engagement-fetch
Section titled “reachweaver engagement-fetch”READ-ONLY fetch of public replies (and, with –quotes, Bluesky quote posts) to your published Bluesky/Mastodon posts into an engagement-triage export; plan only unless –online; never replies
reachweaver engagement-fetch [-h] [--online] [--out OUT] [--account ACCOUNT] [--post-id POST_ID] [--max-posts MAX_POSTS] [--depth DEPTH] [--max-replies MAX_REPLIES] [--quotes] [--max-quotes MAX_QUOTES]| Option | Description |
|---|---|
--online |
Allow unauthenticated read-only GET requests (needs –out) |
--out OUT |
NEW owner-only (0600) engagement export JSON; never overwritten |
--account ACCOUNT |
Only this bluesky/mastodon account id |
--post-id POST_ID |
Only this local published post |
--max-posts MAX_POSTS |
Posts fetched per run (1..200, default 50) |
--depth DEPTH |
Reply levels below each post (1..20, default 6) |
--max-replies MAX_REPLIES |
Replies kept per post (1..500, default 100) |
--quotes |
Also read Bluesky quote posts of each post (app.bsky.feed.getQuotes, public AppView, unauthenticated, cursor pages); kind quote_post; network only with –online |
--max-quotes MAX_QUOTES |
Quote posts kept per Bluesky post with –quotes (1..500, default 100, at most 5 pages) |
reachweaver engagement-triage
Section titled “reachweaver engagement-triage”Offline comment/mention triage + reply/issue DRAFTS; no send path
reachweaver engagement-triage [-h] [--docs-map DOCS_MAP] [--out OUT] [--issues-dir ISSUES_DIR] [--json] [--optout OPTOUT] input| Option | Description |
|---|---|
input |
Owner-exported normalized engagement JSON |
--docs-map DOCS_MAP |
Owner docs map: topic keywords -> HTTPS docs URL |
--out OUT |
New .json or .md file for the triage + drafts; never overwritten |
--issues-dir ISSUES_DIR |
Write bug/feature GitHub issue DRAFTS here; never filed |
--json |
Print the full machine-readable report |
--optout OPTOUT |
Opt-out list JSON (default $REACHWEAVER_OPTOUT or config/optout.json if present); listed authors get no draft |
reachweaver engagement-queue
Section titled “reachweaver engagement-queue”Offline aging/SLA review queue over an engagement export; read-only, no send path
reachweaver engagement-queue [-h] [--docs-map DOCS_MAP] [--optout OPTOUT] [--now NOW] [--sla LABEL=HOURS] [--json] input| Option | Description |
|---|---|
input |
Owner-exported normalized engagement JSON |
--docs-map DOCS_MAP |
Owner docs map, as for engagement-triage |
--optout OPTOUT |
Opt-out list JSON (default $REACHWEAVER_OPTOUT or config/optout.json if present); listed authors are never queued |
--now NOW |
ISO 8601 time with timezone for the age calculation (default: current UTC time) |
--sla LABEL=HOURS |
Override one label’s overdue target in hours; repeatable |
--json |
Print the full machine-readable queue |
reachweaver followup-suggest
Section titled “reachweaver followup-suggest”Read-only: when a published post’s exact metric crosses an owner-set threshold, suggest a follow-up for human review (brief + next commands); never likes, replies, DMs, reposts, drafts or sends
reachweaver followup-suggest [-h] [--rules FILE] [--account ID] [--since DATE] [--state FILE] [--record] [--optout OPTOUT] [--now NOW] [--json]| Option | Description |
|---|---|
--rules FILE |
Owner rules JSON (see examples/followup-rules.example.json). Default: one ‘took off’ rule per account derived from your own results (2 x your median likes + replies + reposts at about 7 days, at least 10 posts with a result) |
--account ID |
Only posts of this account |
--since DATE |
Only posts published at or after this ISO 8601 time with timezone (e.g. 2026-10-01T00:00:00Z) |
--state FILE |
Private dedupe file of post/rule pairs already suggested (read if present; skipped pairs are not suggested again) |
--record |
With –state: record this run’s suggestions in that file (atomic, mode 0600; ids only) |
--optout OPTOUT |
Opt-out list JSON (default $REACHWEAVER_OPTOUT or config/optout.json if present); listed handles are never named in a suggestion |
--now NOW |
ISO 8601 time with timezone for snapshot ages (default: current UTC time) |
--json |
Machine-readable report |
reachweaver engage-scout
Section titled “reachweaver engage-scout”Ranked daily shortlist of conversations to join in your own words, with an angle per item; never posts, replies, likes or follows; network only with –online
reachweaver engage-scout [-h] --config FILE [--input FILE] [--online] [--platform P] [--limit N] [--state FILE] [--record STATE] [--optout OPTOUT] [--now NOW] [--json]| Option | Description |
|---|---|
--config FILE |
Owner scout config JSON (see examples/engage-scout.example.json) |
--input FILE |
Owner candidates file (reachweaver.engage-candidates, e.g. pasted X/LinkedIn/Threads/Reddit/YouTube/Stack Overflow links); repeatable |
--online |
Also run the read-only public searches (Bluesky, Mastodon hashtag, GitHub issues): GET only, no credential, bounded, stops on a rate limit |
--platform P |
Only these platforms (repeatable or comma-separated) |
--limit N |
Shortlist at most N items (1..50; also capped by the config’s daily_cap) |
--state FILE |
Private state file to read for dedupe (items already shown or marked are dropped) |
--record STATE |
Read and update this private state file (atomic, mode 0600; ids only) so items are not shown again |
--optout OPTOUT |
Opt-out list JSON (default $REACHWEAVER_OPTOUT or config/optout.json if present) |
--now NOW |
ISO 8601 time with timezone for ages (default: current UTC time) |
--json |
Machine-readable report |
reachweaver engage-log
Section titled “reachweaver engage-log”Record which engage-scout items you replied to or skipped, or print a weekly correlational readout; writes only the private state file
reachweaver engage-log [-h] --state FILE [--mark ID] [--replied | --skipped] [--with-link] [--at AT] [--readout] [--outcomes FILE] [--weeks N] [--now NOW] [--json]| Option | Description |
|---|---|
--state FILE |
The engage-scout –record state file |
--mark ID |
Shortlist id to mark (from engage-scout) |
--replied |
With –mark: you replied yourself |
--skipped |
With –mark: you decided not to reply |
--with-link |
With –replied: your reply included your project link |
--at AT |
ISO 8601 time of the reply (default: now) |
--readout |
Weekly readout of replies next to outcomes (correlational) |
--outcomes FILE |
With –readout: owner-recorded follower/star/visit snapshots (reachweaver.engage-outcomes) |
--weeks N |
With –readout: weeks to show (1..26, default 4) |
--now NOW |
ISO 8601 time with timezone (default: current UTC time) |
--json |
Machine-readable output |
