Skip to content

CLI reference: Post by hand

5 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.

Easy offline handoff: choose social networks, type a caption and get copy-ready text and checklists; never sends

Terminal window
reachweaver share [-h] [--platform NAME] [--list] [--guide] [--text TEXT | --file FILE]
[--note NOTE] [--title TITLE]
[--format {text,image,video,carousel,link}] [--attach ATTACH]
[--media MEDIA] [--out OUT] [--preview] [--strict] [--no-shorten]
[--web] [--open] [--port PORT] [--idea ID]
Option Description
--platform NAME Social network(s), e.g. instagram,threads or –platform tiktok –platform youtube
--list Show friendly example network names; no network
--guide Ask simple questions in your terminal; no login required
--text TEXT Caption to prepare (one exact text, reviewed separately per platform)
--file FILE Existing local UTF-8 file with the caption, including line breaks
--note NOTE Short idea for human-only groups; never used as ready-made post text
--title TITLE YouTube video title when a YouTube destination is selected
--format FORMAT Override a platform’s inferred format (image/video requires manual media attachment) One of: text, image, video, carousel, link.
--attach ATTACH A local photo/video you will attach yourself in each app; its header is checked offline against each network’s sourced limits (size, duration, aspect ratio…), never uploaded
--media MEDIA Optional advanced media-check manifest for existing validation
--out OUT New output folder (default: a unique private folder under state/)
--preview Check without writing any files
--strict All or nothing: if any network is blocked, write none (default: prepare the others, list the skipped ones with their fix and exit 1)
--no-shorten Keep a caption that is too long for a network as written (a blocking error) instead of shortening it at a word boundary with a SHORTENED flag
--web Start the mobile-friendly browser composer on 127.0.0.1 (manual, offline)
--open With –web, open the local composer in your default browser
--port PORT With –web, local port; 0 chooses a free port (default)
--idea ID With –web, start the composer draft from this open idea’s text (the inbox is not changed); –text works the same way. An unsaved draft is kept and the page offers the text instead

Record a post you made by hand from its link, with its numbers if you have them, in one step; run it again with new numbers to update them; local, never sends

Terminal window
reachweaver posted [-h] [--likes N] [--replies N] [--reposts N] [--views N]
[--text TEXT] [--at WHEN] [--account ACCOUNT] [--platform PLATFORM]
[URL]
Option Description
URL The link of your post (copy it from the app’s share menu)
--likes N Likes you see now: a count, or unknown / suppressed / not_available / delayed / estimated:N
--replies N, --comments N Replies you see now: a count, or unknown / suppressed / not_available / delayed / estimated:N (–comments is the same option)
--reposts N Reposts you see now: a count, or unknown / suppressed / not_available / delayed / estimated:N
--views N Views you see now: a count, or unknown / suppressed / not_available / delayed / estimated:N
--text TEXT The post text (optional; reports show its first words). Again on a post you recorded by hand: corrects its text
--at WHEN When you posted it: now, today, yesterday, YYYY-MM-DD, ‘YYYY-MM-DD HH:MM’ (your computer’s time zone) or ISO 8601 with a timezone. Without it a terminal asks (Enter = today); a script gets now. Again on a post you recorded by hand: corrects its date
--account ACCOUNT Your account id, when several accounts on that network could have posted it; again on a post you recorded by hand: corrects it
--platform PLATFORM The network, when the link’s address does not say (e.g. your own Mastodon server that is not in your accounts file)

Offline creator-ready package for Threads/Instagram/Facebook Pages/YouTube/TikTok, or a generic package for any other manual_only distribution-registry destination; never sends

Terminal window
reachweaver manual-export [-h] --platform PLATFORM --variant VARIANT [--media MEDIA]
[--account-meta ACCOUNT_META] --out OUT [--json]
Option Description
--platform PLATFORM threads, instagram, facebook, youtube or tiktok (sourced package), or any other manual_only id in the distribution registry such as dev, x, product_hunt or hacker_news (generic package; human-only destinations get a notes form, never post text). Chinese platforms such as weibo, xiaohongshu, douyin, bilibili and wechat add sourced limits, topics and the AI/ad declarations (docs/CHINA.md)
--variant VARIANT Variant JSON: text, format, link_url, platform_options; talking_points for human-only destinations
--media MEDIA Media manifest JSON validated with media-check rules
--account-meta ACCOUNT_META PUBLIC account metadata JSON (handle, account_type); no secrets
--out OUT NEW output folder (0700, files 0600); refuses existing output
--json Print the full machine-readable package

Offline: preflight 1-25 manual-export items as a whole, then write one package folder each with SHA-256 of the exact text; never sends or schedules

Terminal window
reachweaver manual-export-batch [-h] --file FILE --out OUT [--json]
Option Description
--file FILE Batch JSON: schema_version 1 and items of platform, variant, optional account_meta and at (advisory time with offset); human-only destinations refused
--out OUT NEW output folder (0700, files 0600); one blocking error anywhere writes nothing
--json Print the batch manifest as JSON

Offline delivery route per distribution-registry channel (official API adapter, manual package, human-only notes or unsupported); never connects, posts or schedules

Terminal window
reachweaver delivery-options [-h] [--platform PLATFORM] [--json]
Option Description
--platform PLATFORM One distribution-registry channel id (default: every channel)
--json Machine-readable routes