Agent-native Go CLI for the Publer API.
This is a single-binary Go rewrite. It provides named commands for documented Publer resources and publer api request for full API compatibility with any current or future Publer endpoint.
go install github.com/nerveband/publer-cli/cmd/publer@latestFrom a checkout:
make installUse environment variables, .env, ~/.publer-cli.env, or profiles:
export PUBLER_API_KEY=...
export PUBLER_WORKSPACE_ID=...Profile example:
publer profile set --name main --api-key-env PUBLER_API_KEY --workspace WORKSPACE_ID
publer profile default main
publer auth statusSecrets are redacted in auth status, config list, profile list, schema, dry-runs, and errors.
publer users me
publer workspaces list --id-only
publer accounts list --fields id,name,provider
publer posts list --state scheduled --from 2026-06-01 --to 2026-06-30 --limit 5
publer media list --types photo --used true --search launchNo test posts are sent by tests or proof gates.
publer --dry-run posts schedule \
--account ACCOUNT_ID \
--network linkedin \
--text "Post body" \
--scheduled-at 2026-06-04T15:00:00ZImmediate publishing requires explicit commitment:
publer posts publish-now --account ACCOUNT_ID --network linkedin --text "Post body" --yesAsync commands can wait:
publer posts schedule --body @payload.json --wait --timeout 90s
publer jobs wait JOB_ID --timeout 90s
publer jobs listUse api request for any Publer endpoint:
publer api request --method GET --path /posts --query state=scheduled
publer --dry-run api request --method POST --path /posts/schedule --body @payload.json
publer api request --method POST --path /media --file ./image.pngThis is the compatibility escape hatch for Publer endpoints that change before named commands are updated.
publer analytics charts
publer analytics chart-data --query 'chart_ids[]=followers' --query from=2026-05-01 --query to=2026-05-31
publer analytics post-insights ACCOUNT_ID --query from=2026-05-01 --query to=2026-05-31
publer analytics hashtags ACCOUNT_ID --query from=2026-05-01 --query to=2026-05-31
publer analytics best-times ACCOUNT_ID --query from=2026-05-01 --query to=2026-05-31
publer analytics competitors ACCOUNT_IDpubler sync --kind accounts --kind posts --kind media
publer search launch --kind posts --limit 10The local SQLite database lives at ~/.publer-cli/publer.sqlite.
publer schema
publer schema --validate
publer agent-context
publer skill-path
publer doctor
publer feedback "confusing flag behavior"Output controls:
publer posts list --fields id,text,state
publer accounts list --id-only
publer media list --count
publer posts list --transform posts.0.id
publer posts list --deliver file:./posts.jsonThe CLI checks GitHub Releases once per day in the background for normal commands and prints a stderr notice when an update exists. Upgrade explicitly:
publer upgradeRelease artifacts are configured with GoReleaser and checksums.txt for go-selfupdate.
make verifyThis builds, tests, validates schema, verifies agent context, and checks dry-run post creation without sending any Publer post.