Start here
npm install -g @sprid/cli
sprid login
sprid connect
sprid status Your marketing plan
sprid plan execute-prepare --file <operation.json> --app <slug>Prepare exact profile, measurement, search/store or offer changes with completion evidence and an explicit manual path. Never applies a public change.sprid plan [get] --app <slug> [--offline]Read the shared recommendation, prepared artifacts and unfinished actions. --offline reads the saved local projection without sign-in.sprid plan discover|propose|prepare|guidance --file <input.json> --app <slug>Discover existing work, prepare a proposal or resolve accepted writing guidance. These operations do not publish or approve public changes.sprid plan accept|continue|verify|defer --id <id> --file <input.json> --app <slug>Continue the same revision-aware action across surfaces. Verification requires the action-specific evidence; acceptance is not publication consent.sprid plan export|import --app <slug> [--file <bundle.json>]Explicitly export or import a portable plan and documents. Import requires a file and expected revisions; conflicts preserve both versions.sprid plan research --file <input.json> --app <slug>Start explicitly authorized bounded hosted discovery. Read the cost ceiling first; this returns a resumable job.sprid plan capabilities --app <slug>Read availability and the cost ceiling without starting research or requiring a social account.sprid plan job-cancel --id <job-id> --app <slug>Cancel future provider work, retaining partial evidence and unresolved possible spend.sprid plan screenshot-capabilities --app <slug>Read hosted screenshot availability and its public-asset disclosure. Existing local screenshots commands remain unchanged.sprid plan screenshot-uploads|screenshot-compose --file <input.json> --app <slug>Prepare upload URLs or compose an explicitly approved declarative screenshot set. Reuse the request UUID after interruption; no listing is published.sprid plan job|review --id <id> --app <slug>Read a saved research job or weekly review without starting paid work.sprid plan link-local --id <action-id> --app <slug>Link the existing setup task to an existing shared action. Retains its local task ID and original artifact; does not upload or approve it.sprid plan prepare-local --file <action.json> --app <slug>Explicitly import the existing setup text artifact once. Its body must match the original file exactly; the existing task ID makes retries idempotent.sprid plan review-prepare|review-update --file <input.json> [--id <id>] --app <slug>Prepare or continue a review. Completion requires a saved conclusion and chosen continuation.sprid research list|get --app <slug> [--id <id>] [--revision N] [--search text]Read scoped document summaries or an immutable revision.sprid research save|import --file <document.json> --app <slug>Save an explicitly selected Markdown document with sources and baseRevision. Editing research does not accept its proposed strategy.sprid research archive --id <id> --file <input.json> --app <slug>Archive a document at its expected revision. Prior referenced revisions remain available to authorized readers.sprid research export --app <slug> [--directory <new-directory>]Export pinned Markdown revisions with source metadata and a documents manifest. Defaults to .sprid/research; refuses to overwrite existing work. Keep private research out of Git.
Shared posts and media
sprid capabilities [--json]Discover connected workflows, host fallbacks and local-only capabilities.sprid media upload <file...> --account <slug> [--request-id UUID]Upload ordered originals, returning stable asset IDs. Reuse the request ID and file order when retrying.sprid media import --file <sources.json>Import public HTTPS files or existing assets through the shared contract.sprid media reel --file <recipe.json>Create a metered hosted photos/text reel after explicit user authorization. Returns a durable job ID.sprid media job <UUID>Read saved upload results or creation progress without repeating the operation.sprid media init|build|register|check|push|preview …Run the existing local media pipeline. Historical sprid post invocations remain supported.sprid post create --file <draft.json>Create a shared draft from ordered asset references and a stable requestId. Never publishes.sprid post get <postId>Read the shared post and its slides. Every <postId> here takes the number or the post's ref, such as BND-142.sprid post update <postId> --file <changes.json>Apply the existing post-update contract to a shared draft.sprid post preview --id <postId>Preview a shared post. Without --id, historical local preview arguments are unchanged.sprid post deliveries <postId>Read scheduled, failed and delivered publications with platform receipts.sprid post handoff <postId>Print the prompt to paste into an agent: what the post currently is, which verbs to call, and an empty line for the ask. Same string the editor's "Hand off to agent" button copies.
Installation and updates
sprid doctor [--json] [--offline] [--apply-updates]Check the running CLI against the npm latest release. --apply-updates is a between-jobs boundary and installs compatible updates only after explicit opt-in.sprid update [--check] [--yes]Update the running installation and verify its new version. --check only reports; potentially breaking releases require --yes. Project installs use their own package manager and lockfile.sprid update --auto on|offOpt this installation into or out of compatible updates at job boundaries. Default off. Agents must have user approval before enabling.
Store assets and releases
sprid screenshots --config aso.config.ts [--lang en] [--review]Compose localized store screenshots from your captures. Runs locally; requires Bun. Use --help for device and slot options.sprid release metadata|screenshots|graphics [--config release.config.ts] [--execute]Preview store listing changes locally; --execute sends the reviewed changes. Requires Bun.sprid release ship [--execute] [--ios-only|--android-only]Build and submit your app using its release configuration. Dry run by default; use --help for all options.
Apps and market editions
sprid account create|update [id] --file payload.jsonCreate an app content account or update its identity. Creation requires workspaceId, appProfileId, name and slug; market, locale, persona and timezone are explicit.sprid account avatar <account> [file|url]Set the avatar Sprid’s mails and templates draw. No source uses the app’s icon: App Store artwork, else the website’s manifest or touch icon. A file must be PNG, JPEG or WebP; a 1024 px app icon from the repo is the best source.sprid appsList apps with their content accounts and workspace IDs.sprid insights --app <slug> [--account <slug>] [--days N]Read app results once, with social content optionally narrowed to one account.sprid family compare --app <slug> [--days N]Compare themes at matched post age with sample counts and channel baselines.sprid family list --app <slug>List content families, themes and market editions.sprid family create --file payload.jsonCreate a family: sourcePostId, title, theme and sourceReference.sprid family edition <familyId> --file payload.jsonCopy an independent draft: accountId, locale and market. Translate it in the editor or through the API.sprid family localize <postId> --file payload.jsonSave translated captions and slide text or reel beats atomically, clearing old approval.sprid family get|preview <postId>Read the edition or render its current content for review.sprid family review <postId> --file payload.jsonApprove a rendered revision with fingerprint, sourceReference and confirmed: true.sprid family plan|schedule <familyId> --file payload.jsonPlan exact postId/channelId/scheduledFor destinations. Scheduling also requires the returned planFingerprint.
Sign in
sprid setup begin --file <artifact> --task publish|review|repo [--source <source>] [--entry website|installed-skill|browser|paid]Save the first useful result locally before signup. Repeating begin preserves the same task and retry key.sprid setup continue [--yes] [--account <slug>] [--payload <draft.json>] [--platform <platform>]Resume the saved app and task across browser approvals. --yes confirms inferred app identity. A text draft payload contains title, captionInstagram, aspectRatio and slides: [{text, subtitle, role}]. Repeated preparation returns the same post. Review and approve it in the post editor.sprid setup statusRead local progress and the original artifact. Continue rechecks server identity and each publishing destination’s status.sprid setup results [--account <slug>]Count prepared drafts, accepted publishing approvals and confirmed deliveries separately, with per-destination receipts. An accepted API instruction does not attest a human click.sprid setup verify --source <source> --operation <operation> [--params-file <params.json>]Verify the selected review source with a live app-scoped read and save its evidence. Discover operations with marketing-review capabilities.sprid login [--api URL] [--no-browser]Sign in through your browser.sprid whoamiShow your user, workspace and API address.sprid use [<workspace>]Choose a workspace. Leave the name out to list your workspaces.sprid logoutSign out and remove the saved login.
Connect your app
sprid initCreate an App Profile from .sprid/app.json in your repo.sprid connectShow missing connections and the commands to add them.sprid connect <service> --app <slug> --key <file> …Save a store or analytics key. Read sprid docs <service> for the required fields.sprid connect <platform> --account <slug>Connect a publishing account through the platform’s sign-in page.sprid pinterest boards --account <slug> [--channel <id>] [--bookmark <token>]List boards and sections for the exact connected Pinterest channel; a returned bookmark reads the next page.sprid pinterest create --account <slug> --name <name> [--description <text>] [--privacy public|secret]Create a board in the exact connected Pinterest account. Older connections must reconnect once to grant board creation permission.sprid pinterest set <postId> --board <id> --link <url> [--section <id>] [--title "…"] [--description "…"] [--alt-text "…"] [--ai-disclosures AI_MODIFIED,SYNTHETIC_PERFORMER]Save the reviewed Pin destination and searchable metadata on a draft.sprid pinterest metrics <publishId> --account <slug> [--days 30] [--refresh]Read the selected Pin’s bounded Pinterest metrics window.sprid connect --from-local [--app <slug>]Import credentials from your existing local Sprid configuration.sprid connect <service> --clear [--app <slug>]Remove a saved service key.sprid disconnect <platform> --account <slug> [--forget]Disconnect a channel. --forget also removes it from your account if it has no publishing history.sprid docs search <words...> [--limit N] [--json]Search bundled guides and command syntax offline. Results include an excerpt and the command to read more.sprid docs [<guide>|cli|queries|metrics] [--offline]Read current guides with a labeled offline fallback. The CLI reference always describes your installed version. --offline skips the network.
Read your results
sprid statusShow what needs you, your connections and the publishing queue.sprid next [--limit N]List the next actions and how to complete them.sprid marketing-review [--app <slug>] [--days N|--since YYYY-MM-DD] [--end YYYY-MM-DD] [--check]Read connected analytics and a versioned metric dataset for two equal periods. End is exclusive. Validated results retain blocked reasons; complete packets are saved immutably under marketing-reports/evidence. --check reads setup only.sprid marketing-review --view summary|full [--sources gsc,posthog] [--refresh|--cached-only]Summary is a compact entry point; full retains evidence. Exact-window snapshots name freshness. Refresh forces provider reads; cached-only makes none. Daily collection refreshes connected sources automatically for active plans.sprid marketing-review evidence --app <slug> --id <evidence.id>Read the exact app-scoped source snapshot without provider calls, including after key rotation. Saved privately for 90 days; this command also archives the receipt locally.sprid marketing-review context --app <slug> [--file <context.json>]Read shared review memory, or save {baseRevision,context}. Context holds definitions, investigations, decisions, corrections and release references. Concurrent changes return a conflict without overwriting. Explicitly select context to share; never upload keys or raw customer records.sprid marketing-review collection --app <slug> --enabled true|falseEnable or pause daily connected-source collection. Stored evidence remains readable; this grants no publishing or model-spending permission.sprid marketing-review capabilities --app <slug> [--source <source>]Discover read operations, parameter schemas, examples and missing setup for every connected source. Configuration is not a live credential check.sprid marketing-review query --app <slug> --source <source> --operation <operation> [--params-file <params.json>]Run a discovered read through Sprid-held credentials. Parameters are a JSON object; resource IDs come from the App Profile. Continue with returned next.params and keep coverage/truncation in your report.sprid marketing-review query --app <slug> --query-file <query.sql>Run a read-only PostHog query through the app’s stored connection.sprid queueShow what is scheduled and what failed.sprid queue retry <publishId>Retry a failed or missed publish.sprid reviews [--app <slug>] [--unanswered] [--max-rating N] [--limit N]Read store reviews.sprid reviews draft <id>Draft a reply using the workspace’s model key. Nothing is sent.sprid reviews reply <id> [--text "…"] [--yes]Review and send a public reply. --yes skips the confirmation.
Build your own media
sprid post init [--kind text|composed|stills|own]Choose how this repo builds posts.sprid post new <slug> [--lane <name>]Create a post specification.sprid post build [slug] [--lane <name>]Run your media builder.sprid post register [slug] [--lane <name>] [--built-with <command>] [--platforms <list>]Record the files your builder produced.sprid post check [slug] [--deep] [--platforms <list>]Check the media. --deep also checks it against connected platforms.sprid post preview [--serve [port]] [--open] [--lane <name>] [--copy] [--verify]Preview your posts as a grid or feed.sprid post push [slug] [--force]Upload finished media to Sprid.sprid post draft [slug] [--force]Create a Sprid draft with media and caption.sprid post sync [slug] [--execute] [--adopt] [--lane <name>]Update existing posts with rebuilt media, keeping their schedule.sprid post pull [slug]Read Sprid’s schedule and status into your local registry.sprid post statusShow local and remote post status together.sprid post doctorCheck which API and publishing channels this repo can reach.
Workspace and agents
sprid open [post <id>|draft|calendar|connections|accounts|billing|spend|app]Open the relevant Sprid screen.sprid invite <email> [--role editor|admin] [--account <slug>]Invite a collaborator.sprid upgrade [pulse|push|founding]Open checkout for a plan.sprid mcp [--surface core|all]Connect an MCP client through the CLI’s saved login.sprid help [<command> [<subcommand>]|environment|exit-codes] [--json]Read focused help without authentication. JSON includes the installed command catalog.sprid completion bash|zsh|fishPrint a shell completion script. Source it in your shell; Sprid never edits shell configuration.
Useful options
- Use sprid help <command> or sprid <command> --help for focused help; sprid docs cli prints the complete installed reference.
- Use sprid docs search <words> to find commands and guides offline.
- Add --json when passing results to a script. Errors include ok: false and error; usage errors exit 2, runtime failures exit 1. Local tools may propagate their own nonzero codes.
- Enable completion in the current shell: source <(sprid completion bash), source <(sprid completion zsh), or sprid completion fish | source. Zsh requires compinit first.
- Use -w/--workspace <slug|id> for one command, or sprid use to remember your choice.
- sprid login stores its token in ~/.sprid/credentials.json. SPRID_PAT overrides it.
- SPRID_URL overrides the API address. SPRID_APP_URL overrides the web app address.
Connect a service
Read setup steps, required permissions and a live check:
sprid docs posthog