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.
reachweaver distribution-plan
Section titled “reachweaver distribution-plan”Offline regional channel research and hypothetical timing windows; NEVER schedules/posts
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 |
reachweaver social-web-plan
Section titled “reachweaver social-web-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
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) |
reachweaver discovery-plan
Section titled “reachweaver discovery-plan”Offline platform discovery and topic/hashtag recommendations; not a reach forecast or publisher
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 |
reachweaver sources-scan
Section titled “reachweaver sources-scan”Rank opt-in GitHub/feed/changelog/DOI source signals; local fixtures unless –online; never drafts/publishes
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 |
reachweaver signal-brief
Section titled “reachweaver signal-brief”Offline: one sources-scan signal -> NEW campaign scaffold + .brief.md; placeholders block staging; no copy generated, never stages/publishes
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) |
reachweaver release-brief
Section titled “reachweaver release-brief”Offline: a saved GitHub release JSON or CHANGELOG section -> NEW campaign scaffold folder + brief.md; placeholders block staging; never stages/publishes
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) |
