tinyposter CLI
A tiny terminal command for posting. Zero dependencies. Works anywhere Node 18+ runs.
What you're building
A command on your computer called tinyposter. After this, you can type tinyposter post "hi" --to TWITTER in any terminal and the post goes live.
You need:
- Node.js 18 or newer (free, from nodejs.org)
- A tinyposter token
- About 2 minutes
Setup
- 01
Install
Open Terminal (Mac/Linux) or PowerShell (Windows) and run:
bashnpm install -g tinyposterOr, to skip the install step, prefix every command with
npx:bashnpx tinyposter help - 02
Log in
Get a token at your tokens page. Then run:
bashtinyposter loginIt asks for the token. Paste it. Done. The token is saved at:
- Mac:
~/Library/Application Support/tinyposter/config.json - Linux:
~/.config/tinyposter/config.json - Windows:
%APPDATA%\tinyposter\config.json
For CI / scriptsSetTINYPOSTER_TOKEN=tp_…as an environment variable instead of running login. The CLI uses it automatically. - Mac:
- 03
Try it
List what platforms you have connected:
bashtinyposter accountsPost:
bashtinyposter post "hello from my terminal" --to TWITTER,LINKEDIN
Commands
tinyposter login # save your token
tinyposter logout # forget the saved token
tinyposter whoami # who am I?
tinyposter accounts # list connected platforms
tinyposter usage # plan + posts used this period
tinyposter post "<text>" --to <PLATFORMS> # post now
tinyposter schedule "<text>" --to <PLATFORMS> --at <ISO>
tinyposter list [--status <status>] [--limit 25]
tinyposter cancel <id> # cancel scheduled post
tinyposter help # show help
tinyposter version # show versionCommon flags
--to TWITTER,LINKEDIN— where to publish (runaccountsfor the list)--at 2026-05-03T13:00:00Z— schedule time (ISO 8601)--media https://...,https://...— image/video URLs to attach--title "..."— used as YouTube/TikTok video title--json— print JSON instead of pretty output (great for scripts)
Examples
# Post the same thing to three platforms
tinyposter post "Friday recap incoming" --to TWITTER,LINKEDIN,BLUESKY
# Schedule a Sunday post
tinyposter schedule "Coffee thoughts" --to THREADS --at 2026-05-03T13:00:00Z
# Post a photo
tinyposter post "new piece today" --to INSTAGRAM \
--media https://example.com/photo.jpg
# See what's scheduled
tinyposter list --status scheduled
# Pipe to jq for fancy filtering
tinyposter list --json | jq '.data[] | select(.status=="failed")'
# Cancel
tinyposter cancel 8a3fbb20-1234-5678-aaaa-bbbbccccddddUse it from automation
The CLI is built for piping and scripting. Some common patterns:
Cron job — daily post
# crontab -e
0 9 * * * TINYPOSTER_TOKEN=tp_xxx /usr/local/bin/tinyposter post "good morning" --to TWITTERGitHub Actions — post on release
name: Tweet on release
on:
release:
types: [published]
jobs:
post:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npx tinyposter post "${{ github.event.release.body }}" --to TWITTER,LINKEDIN
env:
TINYPOSTER_TOKEN: ${{ secrets.TINYPOSTER_TOKEN }}Bash function — quick alias
# Drop into your shell config so "tweet hi" just works
tweet() { tinyposter post "$*" --to TWITTER; }
xpost() { tinyposter post "$*" --to TWITTER,LINKEDIN,BLUESKY; }Configuration
Two ways to point the CLI somewhere other than production (for testing):
- Env var:
TINYPOSTER_BASE_URL=http://localhost:3000 - Or edit
config.jsonmanually and add"baseUrl": "...".
Troubleshooting
▸command not found: tinyposter
The global install path isn't on your PATH. Easiest fix: use npx tinyposter instead. Or run npm config get prefix and add ${prefix}/bin to your PATH.
▸Permission denied installing globally
On Mac/Linux, prefix with sudo or use a Node version manager like nvm/fnm to install Node in your home directory (no sudo needed). Or skip install and use npx tinyposter.
▸I get a 401 / Unauthorized
Your token is wrong or revoked. Run tinyposter login with a fresh token from the tokens page.
▸I get 'platform_not_connected'
You asked for a platform you haven't hooked up yet. Run tinyposter accounts to see the list, or connect at accounts.
▸I get "quota_exceeded"
You're out of posts for this billing period. Upgrade at billing.
Source
The CLI is open source (MIT). It calls the public HTTP API. Read the source if you want to fork or audit it.
Next
- HTTP API — what the CLI is calling
- Coding agents — Codex / Cursor / Claude Code with the CLI