Skip to content

CLI reference: Audit profiles and content

15 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 owner-snapshot, per-platform profile readiness and fix list; no network

Terminal window
reachweaver profile-audit [-h] --file FILE [--platform PLATFORM] [--json]
Option Description
--file FILE Local JSON snapshot, or a profile .csv (platform,account_id,handle,profile_kind,keywords,field,value); no account login or network
--platform PLATFORM Only this platform from the profile-audit registry
--json Detailed machine-readable checklist with evidence and coverage

Offline platform-specific creative checks and comparable-age outcome summaries

Terminal window
reachweaver post-audit [-h] [--metrics-csv METRICS_CSV] [--owner-authorized] --file
FILE [--platform PLATFORM] [--age-hours AGE_HOURS]
[--tolerance-hours TOLERANCE_HOURS] [--min-posts MIN_POSTS]
[--json]
Option Description
--metrics-csv METRICS_CSV Optional normalized owner-exported post observations; no DB/network writes
--owner-authorized Confirm the CSV is your own authorized export
--file FILE Same owner-supplied profile/post snapshot
--platform PLATFORM Limit to one registered platform
--age-hours AGE_HOURS Native metric post age 24..720 hours (default 168)
--tolerance-hours TOLERANCE_HOURS Observation age tolerance 1..168 hours
--min-posts MIN_POSTS Minimum matched-age posts per format cohort 3..30
--json Detailed no-write JSON results

Offline canonical landing page + competing-message check

Terminal window
reachweaver seo-destinations [-h] --briefs BRIEFS --type {release,paper,product,docs}
[--project PROJECT] [--platform PLATFORM]
[--campaign CAMPAIGN] [--suggest-for PLATFORM]
Option Description
--briefs BRIEFS Local SEO briefs JSON (docs/SEO-INTEGRATION.md)
--type TYPE One of: release, paper, product, docs.
--project PROJECT Restrict to briefs for this project
--platform PLATFORM With –campaign: also emit a UTM link for the destination
--campaign CAMPAIGN With –platform or –suggest-for: utm_campaign for the destination link
--suggest-for PLATFORM Also suggest, per platform, how a post points at the destination: link and where to put it, length, keyword, tags, alt text; each with its basis (official/unverified/repo_policy/hypothesis). Repeat for several platforms

Discoverability checks on owner-supplied post texts (length, alt text, hashtags, UTM links, name spelling, cross-platform duplicates); offline unless –online link previews; read-only, never publishes

Terminal window
reachweaver seo-content-check [-h] [--name NAME] [--online] [--allow-origin ORIGIN]
[--json]
file
Option Description
file Local JSON: {“items”: [{id, platform, text, alt_text?, media_count?, link?, keywords?}], “names”?: […]}
--name NAME Canonical spelling of your project/brand name; variants are flagged; repeat
--online Also check each item’s link preview (Open Graph) and liveness: robots.txt first, one GET per distinct page
--allow-origin ORIGIN With –online: also follow redirects to this https origin; repeat
--json Full machine-readable report

SEO brief + campaign CTA landing-page checks; offline unless –online (GET own pages, robots.txt honoured, redirects inspected); never publishes

Terminal window
reachweaver landing-check [-h] --briefs BRIEFS [--campaign CAMPAIGN] [--online]
[--allow-origin ALLOW_ORIGIN [ALLOW_ORIGIN ...]] [--json]
Option Description
--briefs BRIEFS Local SEO briefs JSON (docs/SEO-INTEGRATION.md)
--campaign CAMPAIGN Campaign JSON whose CTAs and grounded claim phrases are checked
--online Explicit GET of each canonical page: status, redirects, rel=canonical, title, Open Graph, noindex, lang, lexical claim phrases
--allow-origin ALLOW_ORIGIN https origins a redirect may move to outside the brief’s registrable domain
--json Machine-readable report

AI answer-engine and search visibility of your own pages: robots.txt per crawler (search, training, user fetch), noindex/nosnippet, canonical, JSON-LD, fediverse:creator, llms.txt as info; offline unless –online; never publishes

Terminal window
reachweaver ai-visibility [-h] [--briefs BRIEFS] [--page-id PAGE_ID [PAGE_ID ...]]
[--url URL] [--html HTML] [--robots ROBOTS] [--online]
[--allow-origin ALLOW_ORIGIN [ALLOW_ORIGIN ...]] [--json]
Option Description
--briefs BRIEFS Local SEO briefs JSON; –online checks only their canonical_url pages
--page-id PAGE_ID Brief page_id(s) to check (offline: exactly one)
--url URL Offline only: the address of the saved page (instead of –briefs)
--html HTML Offline: saved HTML of the page
--robots ROBOTS Offline: saved robots.txt of the site
--online Explicit GET of each brief page, its robots.txt and /llms.txt (robots.txt honoured, redirects inspected)
--allow-origin ALLOW_ORIGIN https origins a redirect may move to outside the brief’s registrable domain
--json Machine-readable report

Offline canonical UTM-tagged destination URL; no network

Terminal window
reachweaver utm-link [-h] --platform PLATFORM --campaign CAMPAIGN [--content CONTENT]
[--term TERM] [--allow-origin ALLOW_ORIGIN [ALLOW_ORIGIN ...]]
[--sources CONFIG]
url
Option Description
url
--platform PLATFORM utm_source; a ReachWeaver platform id
--campaign CAMPAIGN utm_campaign; slugged campaign id
--content CONTENT utm_content; post id or campaign variant id
--term TERM Optional utm_term
--allow-origin ALLOW_ORIGIN Reject destinations outside these https origins
--sources CONFIG sources-scan config; refuse a destination inside any visibility:private repository

Offline editorial checklist for 1-6 draft posts; not a reach prediction, never publishes (docs/CREATIVE-PREFLIGHT.md)

Terminal window
reachweaver creative-preflight [-h] --file FILE [--voice-profile PROFILE] [--json]
Option Description
--file FILE Owner-controlled JSON brief (reachweaver.creative-preflight.v1), at most 256 KB
--voice-profile PROFILE Also add advisory voice-check findings per draft from a voice-profile file (docs/VOICE-CHECK.md)
--json Machine-readable checklist, findings and limitations

Statistics of how you write, from your own past posts; writes one NEW private file, stores no post text (docs/VOICE-CHECK.md)

Offline. Reads posts you supply (–from FILE: .json, .csv, or text with posts separated by a line holding only —) or your published posts in the local database (–from-db, opened read-only) and writes a NEW 0600 JSON profile of plain statistics. Needs at least 10 posts; with fewer it reports insufficient_sample, writes nothing and exits 1.

Terminal window
reachweaver voice-profile [-h] (--from FILE | --from-db) [--account ACCOUNT]
[--platform PLATFORM] --out NEW_FILE [--json]
Option Description
--from FILE Local file of your own posts
--from-db Your published posts in the local database (read-only)
--account ACCOUNT With –from-db: only this account’s posts
--platform PLATFORM Only posts for this platform (unlabelled file posts count as this platform)
--out NEW_FILE NEW profile file (mode 600); refused if it exists
--json Print the profile as JSON

Advisory: compare a draft with your voice profile and a heuristic list of stock AI-style phrases; never blocks (docs/VOICE-CHECK.md)

Offline and advisory. Flags features of a draft outside the usual range of your own posts and phrases or patterns from a heuristic style list (not an AI detector). Findings are info or warn; it never blocks approval or publishing and exits 0 after a check. Without –profile only the tell list and generic checks run.

Terminal window
reachweaver voice-check [-h] [--profile PROFILE]
(--text TEXT | --post-id POST_ID | --file FILE)
[--platform PLATFORM] [--json]
Option Description
--profile PROFILE Profile written by voice-profile (optional)
--text TEXT Draft text
--post-id POST_ID A stored post (read-only database access)
--file FILE UTF-8 text file with the draft
--platform PLATFORM Compare with this platform’s length statistics (default: the stored post’s platform)
--json Machine-readable findings

Advisory: which AI-content label each target platform asks for (sourced rules, EU AI Act Art. 50 note); never blocks (docs/AI-CONTENT-LABELS.md)

Offline and advisory. Reads a draft’s authorship (human, ai_assisted, ai_generated) and its media flags (realistic_synthetic, provenance.created_by) and prints, per target platform, label required / recommended / not required / unknown, what to tick in the platform’s own composer and the cited source. Exits 0 after a check, 2 on an input error. Not legal advice; rules change, re-verify the cited page.

Terminal window
reachweaver ai-label-check [-h] (--post-id POST_ID | --file FILE) [--platform ID]
[--media MEDIA]
[--authorship {human,ai_assisted,ai_generated}] [--eu]
[--public-interest {yes,no}] [--editorial-review {yes,no}]
[--json]
Option Description
--post-id POST_ID A stored post (read-only database access)
--file FILE Draft, variant or campaign JSON (authorship and platform read from it)
--platform ID Target platform(s), e.g. youtube,instagram; replaces the draft’s own platform; repeat or comma-separate
--media MEDIA Media manifest JSON (realistic_synthetic and provenance per asset)
--authorship AUTHORSHIP Who wrote the text (overrides the file; a stored post has none recorded) One of: human, ai_assisted, ai_generated.
--eu Also check EU AI Act Art. 50 (you publish from, or for an audience in, the EU); secondary-sourced, not legal advice
--public-interest PUBLIC_INTEREST With –eu: does the text inform the public on matters of public interest? One of: yes, no.
--editorial-review EDITORIAL_REVIEW With –eu: did a person review or edit the AI text and hold editorial responsibility for it? One of: yes, no.
--json Machine-readable advice

Read-only: who approved each published post, when, the approved hash, ledger line and authorship (EU AI Act Art. 50(4) human-review evidence; not legal advice)

Terminal window
reachweaver eu-review-evidence [-h] [--since WHEN] [--account ID] [--platform PLATFORM]
[--post-id ID] [--limit LIMIT]
[--format {text,json,markdown}] [--json] [--now NOW]
Option Description
--since WHEN Only posts published since 30d (days ago), YYYY-MM-DD or an ISO time
--account ID Only this account
--platform PLATFORM Only this platform id
--post-id ID Only this post; repeat
--limit LIMIT Newest published posts listed, 1..5000 (default 500)
--format FORMAT text (default), json or markdown One of: text, json, markdown.
--json Same as –format json
--now NOW Reference time for –since 30d (ISO 8601 with timezone; default now)

Offline media manifest checks: headers, platform limits, alt text, captions, rights; never uploads

Terminal window
reachweaver media-check [-h] [--json] manifest
Option Description
manifest Media manifest JSON; asset paths are relative to it
--json Machine-readable errors/warnings report

Offline: campaign brief -> vertical-video storyboard, SRT skeleton, alt-text placeholders, image specs, media manifest, safe-area check; generates no media

Terminal window
reachweaver media-storyboard [-h] [--campaign CAMPAIGN] [--out OUT]
[--check STORYBOARD] [--duration DURATION]
[--aspect ASPECT]
[--video-targets VIDEO_TARGETS [VIDEO_TARGETS ...]]
[--image-targets IMAGE_TARGETS [IMAGE_TARGETS ...]]
[--locale LOCALE] [--fit {cover,contain}]
[--safe-zones SAFE_ZONES] [--json]
Option Description
--campaign CAMPAIGN Campaign JSON (campaign contract or signal-brief scaffold)
--out OUT NEW output folder (0700, files 0600); refuses existing output
--check STORYBOARD Re-check an edited storyboard.json: safe areas, subtitle timing and unresolved placeholders
--duration DURATION Video length in seconds, 10..180 (default 30)
--aspect ASPECT Frame aspect W:H (default 9:16)
--video-targets VIDEO_TARGETS
--image-targets IMAGE_TARGETS
--locale LOCALE BCP-47 subtitle/alt-text locale (default en)
--fit FIT Assumed player fit for non-9:16 frames: centered crop (default) or letterbox One of: cover, contain.
--safe-zones SAFE_ZONES Owner UI-overlay zones JSON overriding the built-ins (sourced from paid-ad specs, accessed 2026-10-09)
--json Machine-readable result

Offline: one master video -> per-platform cut list (segments that fit each platform’s sourced duration limit, crop to the target aspect, subtitle format, a suggested ffmpeg command); opens and edits no media

Terminal window
reachweaver media-cutlist [-h] [--json] plan
Option Description
plan Cut-list JSON (docs/MEDIA-ASSETS.md#cut-list-media-cutlist)
--json Machine-readable cut list