Skip to content

CLI reference: Research channels and sources

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.

Offline regional channel research and hypothetical timing windows; NEVER schedules/posts

Terminal window
reachweaver distribution-plan [-h] --region REGION --goal
{contributors,adoption,awareness,collaboration}
[--limit LIMIT] [--date DATE] [--timezone TIMEZONE]
[--market MARKET] [--json]
Option Description
--region REGION Target country/market, e.g. india, china, nigeria or global
--goal GOAL One measurable audience objective One of: contributors, adoption, awareness, collaboration.
--limit LIMIT Number of candidate channels (1..20)
--date DATE YYYY-MM-DD audience-local day for illustrative time tests, not an actual queue
--timezone TIMEZONE IANA timezone override, required with –date for global audiences
--market MARKET Audience market for market-specific notices: US, global or PLATFORM@MARKET (tiktok@US)
--json Return machine-readable RESEARCH-ONLY plan

Offline open social web map: which accounts are on ActivityPub, AT Protocol, Nostr or Farcaster, bridges, canonical home, duplicate reach, identity checklist; NEVER sends or touches the queue

Terminal window
reachweaver social-web-plan [-h] [--accounts A] [--setup FILE] [--presence PLATFORM]
[--bridged ID] [--fediverse-sharing ID] [--site URL]
[--site-kind {ghost,wordpress_activitypub,bridgy_fed_web,plain}]
[--json]
Option Description
--accounts A PUBLIC accounts config (same as global –accounts); a missing file counts as no accounts
--setup FILE Your own setup JSON (schema reachweaver.social-web-setup.v1): site, extra presences, bridges, fediverse sharing, identity steps done; see examples/social-web-setup.example.json
--presence PLATFORM A network you are on that accounts.json cannot hold, by registry id (e.g. pixelfed, ghost, nostr); repeat
--bridged ID Account id (or platform id) you bridged with Bridgy Fed, an opt-in bridge; repeat
--fediverse-sharing ID Threads account id (or ‘threads’) with fediverse sharing turned on; repeat
--site URL Your owned site or newsletter, https:// only
--site-kind SITE_KIND How the site connects to the open social web (default plain) One of: ghost, wordpress_activitypub, bridgy_fed_web, plain.
--json Machine-readable plan (schema reachweaver.social-web-plan.v1)

Offline platform discovery and topic/hashtag recommendations; not a reach forecast or publisher

Terminal window
reachweaver discovery-plan [-h] --file FILE [--account ID] [--json]
Option Description
--file FILE Owner-reviewed JSON with post text, topics and optional dated trend evidence
--account ID Show only this account’s own results per tag (default: every account on the plan’s platform); read from an existing database read-only, never re-ranked
--json Evidence, selected/skipped tags and creative checklist

Rank opt-in GitHub/feed/changelog/DOI source signals; local fixtures unless –online; never drafts/publishes

Terminal window
reachweaver sources-scan [-h] --config CONFIG [--online] [--state STATE] [--mark-seen]
[--allow-private] [--top TOP] [--json]
Option Description
--config CONFIG sources.reachweaver.json opt-in source list
--online Explicit GET of public GitHub API, https feeds/changelogs (robots.txt honoured) and Crossref; default reads local fixtures
--state STATE Optional JSON state of previously seen signal IDs (novelty)
--mark-seen Record shown candidate IDs in –state (local file only)
--allow-private Third private opt-in: also read sources that set visibility AND sensitivity private (GitHub, token required); their signals are marked private, never public evidence
--top TOP Ranked signals to show (1..100, default 10)
--json Machine-readable RESEARCH-ONLY signals

Offline: one sources-scan signal -> NEW campaign scaffold + .brief.md; placeholders block staging; no copy generated, never stages/publishes

Terminal window
reachweaver signal-brief [-h] --scan SCAN --signal-id SIGNAL_ID --brand BRAND --out OUT
[--accounts A]
[--objective {awareness,contributors,discussion,qualified_visits,signups}]
[--allow-duplicate] [--json]
Option Description
--scan SCAN Saved ‘sources-scan –json’ output (untrusted data)
--signal-id SIGNAL_ID Signal id, or a unique prefix of at least 8 hex characters
--brand BRAND Brand JSON (brand_id, approved_accounts)
--out OUT NEW campaign .json (0600); a NEW sidecar .brief.md is written next to it; refuses overwrite
--accounts A Optional PUBLIC accounts config; one placeholder variant per approved account with a live or manual path (same as global –accounts)
--objective OBJECTIVE Campaign objective (default awareness) One of: awareness, contributors, discussion, qualified_visits, signups.
--allow-duplicate Explicit human override to brief a near_duplicate or previously_seen signal
--json Machine-readable result (paths, validation, skipped accounts)

Offline: a saved GitHub release JSON or CHANGELOG section -> NEW campaign scaffold folder + brief.md; placeholders block staging; never stages/publishes

Terminal window
reachweaver release-brief [-h] (--release RELEASE | --changelog CHANGELOG)
[--version X.Y.Z] [--repo OWNER/NAME] --out OUT
[--brand BRAND] [--accounts A]
[--objective {awareness,contributors,discussion,qualified_visits,signups}]
[--campaign ID] [--json]
Option Description
--release RELEASE Saved release JSON (gh api repos/OWNER/NAME/releases/latest > release.json); untrusted data; ReachWeaver makes no network call
--changelog CHANGELOG Keep a Changelog CHANGELOG.md (use with –version)
--version X.Y.Z Changelog section to brief
--repo OWNER/NAME Repository; must match the release URL; with –changelog it gives the evidence URL when the section has no link reference
--out OUT NEW folder (0700) for campaign.reachweaver.json and brief.md (0600); refuses an existing path
--brand BRAND Brand JSON; with –accounts, one placeholder variant per approved account
--accounts A PUBLIC accounts config (needs –brand; same as global –accounts)
--objective OBJECTIVE Campaign objective (default awareness) One of: awareness, contributors, discussion, qualified_visits, signups.
--campaign ID Campaign id (default release-REPO-TAG)
--json Machine-readable result (paths, validation, skipped accounts)