# Best social media CLI tools (schedule posts from the terminal) > Best social media CLI tools for scheduling posts from the terminal - DunSocial dun/dunsocial, Buffer CLI, Postiz CLI, and Typefully API compared on sign-in, JSON, and CI. - Published: 2026-09-07 - Last updated: 2026-09-07 - Author: Sanju (Founder & CEO @ DunSocial) - Topics: cli, tools, comparison --- Most "social CLI" results are unofficial wrappers, one-network scripts, or SDKs you still wire yourself. Prefer first-party (or well-documented) clients that can draft, schedule, or publish against a real product workspace, with machine-readable output and a sign-in path that works for humans and for CI. ## Short answer Prefer CLIs that hit a real social workspace with schedule or publish, machine-readable output, and CI-safe credentials. **DunSocial** CLI (`dun` / `dunsocial`) is the center of gravity when you want device-code login for humans, scoped tokens for CI, `--json` on every command, and the same calendar, accounts, drafts, media, and AI Memory as the web app and hosted MCP. It is included in the **USD 20/mo** or **USD 192/yr** plan (14-day trial, no card; extra seats USD 8/mo). See [/cli](/cli). Buffer wins when you already live in Buffer's GraphQL API and want a schema-generated CLI. Postiz wins when you want a self-hostable stack with an official CLI. Typefully wins for writing-first teams that script the public API or use agent skills rather than a first-party CLI binary. | Tool | Schedule / publish from CLI? | Sign-in | Machine output | Same calendar as app? | Plan note (2026-09-07) | Best when | | --- | --- | --- | --- | --- | --- | --- | | DunSocial (`dun` / `dunsocial`) | Yes. Schedule, publish now, reschedule, cancel, drafts, media, memory | Device-code browser login; scoped `DUN_TOKEN` for CI | `--json` on every command; stable exit codes | Yes. Same workspace as web, MCP, REST | Included at USD 20/mo or USD 192/yr; 14-day trial; extra seats USD 8/mo | Terminal, CI, and local coding agents on one workspace | | Buffer CLI (`@bufferapp/cli`) | Yes. `buffer posts create` with queue, custom schedule, or share now | `buffer init` plus developer key; env key for CI | `--output json` / auto; `--dry-run` on mutations | Yes. Same Buffer org and channels | Free (3 channels); Essentials from USD 6/channel/mo; Team from USD 12/channel/mo | You already ship through Buffer's GraphQL surface | | Postiz CLI (`postiz`) | Yes. `posts:create`, list, delete, upload | OAuth2 device flow (`auth:login`) or settings key | Documented for scripts; custom API URL for self-host | Yes against the Postiz instance you target | Hosted Standard from about USD 29/mo (5 channels); self-host AGPL | Self-host or agent pipelines on Postiz | | Typefully | No first-party CLI binary documented; schedule via public API v2 / MCP / agent skills | API auth or OAuth for MCP clients | JSON over HTTP from the API | Yes for API-created drafts | Free and Creator tiers; confirm current pricing on typefully.com | Writing-first X / LinkedIn / Threads workflows | | Unofficial one-network CLIs | Varies; often publish-only for a single network | Tool-specific | Often ad hoc | Rarely a shared product calendar | Depends on the wrapper | Niche scripts only | ## Extra notes before you pick "CLI" alone is not enough. Ask whether the tool: 1. Talks to a **product workspace** you already open in a browser, not a throwaway script state. 2. Can **schedule** as well as fire-and-forget publish. 3. Returns **stable JSON** and exit codes for CI. 4. Has a **human path** (device login) and an **automation path** (scoped credential) that do not force the same secret into both places. 5. Keeps agent-written copy behind a **human confirm** before live publish when AI is in the loop. Unofficial X, Reddit, or LinkedIn wrappers can post once. They rarely share the drafts, media, memory, and calendar your team already uses. ## Workspace-real checklist Use this checklist when you evaluate any social CLI: - **JSON output.** DunSocial defaults to JSON when stdout is not a TTY, and every command accepts `--json`. Buffer offers `--output json|pretty|auto`. Prefer tools that document a success/error envelope. - **Device or browser login for humans.** DunSocial uses `dun auth login` (device code). Postiz uses `postiz auth:login`. Buffer stores a developer key via `buffer init`. Prefer not to paste long-lived personal passwords into shell history. - **Scoped automation credentials.** DunSocial personal access tokens bind to one workspace and a permission set (`DUN_TOKEN`). Buffer and Postiz document env-based automation credentials in their own CLI guides. - **Same calendar as the app.** CLI-created DunSocial posts are tagged with a CLI source and show on the same calendar as the web app and MCP. Buffer and Postiz document the same idea against their own products. - **CI fitness.** Distinct exit codes, env-var auth, and no interactive prompts when a credential is present. If a tool fails this checklist, treat it as a niche script, not a social ops CLI. ## DunSocial CLI The DunSocial CLI is a thin client over the same REST API as the product. Install with Node 20+: `dun` and `dunsocial` are the same program. Full install, auth, commands, CI examples, and agent skills live on [/cli](/cli). ### Sign-in - Humans: `dun auth login` opens a browser for device approval. Use `--no-browser` on a headless box and open the URL yourself. - CI and agents: create a scoped access token in Settings, CLI, set `DUN_TOKEN` (and usually `DUN_WORKSPACE_ID`). The CLI never prompts when the token is present. ### What you can drive Auth, workspaces, accounts, posts (schedule, publish, reschedule, cancel, delete), drafts, media uploads, and AI Memory (collections, save, semantic search). Address posts by account id, not by @handle, so two accounts with the same handle on different networks stay unambiguous. Schedule with `--in 2h` or `--at 2026-09-07T09:00:00Z`. ### Same workspace as MCP and web Every command hits the workspace you already use in the browser and through the hosted MCP (47 tools). Posts created from the CLI are tagged CLI in the app. Remote assistants should use [/mcp](/mcp); shell and CI should use [/cli](/cli). ### Plan CLI included. **USD 20/mo** or **USD 192/yr**. 14-day trial, no card. 1 seat included; extra seats **USD 8/mo**. Platforms: X, LinkedIn, Instagram, Threads, Bluesky, Reddit, Pinterest, YouTube Shorts; TikTok limited beta. See [/pricing](/pricing). Agent skills: `dun skill install all` (or a named agent) drops a skill into Claude Code, Cursor, Codex, Copilot, Windsurf, Gemini, and related paths. Use `dun skill list` and `dun skill path` to inspect. ## Other terminal options (verified 2026-09-07) ### Buffer API / GraphQL CLI Buffer ships a first-party CLI generated from its public GraphQL schema (package `@bufferapp/cli`). You can list channels, create posts into the queue, custom-schedule with `dueAt`, share now, manage ideas, dry-run mutations, and introspect the schema at runtime. JSON output and agent skill install paths are documented. **When Buffer wins:** you already run social through Buffer, want GraphQL schema discovery from the terminal, or like Free-plan MCP and CLI access on a mature queue product. Pricing on 2026-09-07: Free (3 channels, 10 scheduled posts per channel); Essentials from USD 6 per channel per month; Team from USD 12 per channel per month (volume discounts apply). Sources: [developers.buffer.com/guides/cli.html](https://developers.buffer.com/guides/cli.html), [buffer.com/pricing](https://buffer.com/pricing) (retrieved 2026-09-07). ### Postiz self-host CLI Postiz documents an official CLI (`postiz`) for schedule, list, delete, media upload, and integrations list. Auth is OAuth2 device flow or a settings key. Self-hosted instances set a custom API URL (and optionally a custom auth server). **When Postiz wins:** you want to self-host, run many channels on your own infra, or already standardize on Postiz API plus MCP plus CLI. Hosted Standard is commonly listed from about USD 29/mo for 5 channels; self-host is AGPL plus your infra. Sources: [docs.postiz.com/cli/introduction](https://docs.postiz.com/cli/introduction) (retrieved 2026-09-07). ### Typefully API and agent skills Typefully documents a public API v2 for drafts and `publish_at` scheduling, plus MCP and agent skills. A first-party `typefully` CLI binary is not what their docs center; community CLIs exist, but they are not the vendor's primary path. **When Typefully wins:** writing-first teams on X, LinkedIn, Threads, Bluesky, and related text networks who already script the API or load Typefully skills into coding agents. Confirm current plan prices on Typefully's site on the day you buy. Sources: [typefully.com/docs/api](https://typefully.com/docs/api) (retrieved 2026-09-07). ### Unofficial one-network CLIs Single-network wrappers (X-only bots, Reddit scripts, LinkedIn scrapers) can be fine for a one-off. Keep them niche when you need a shared calendar and multi-network scheduling. ## CLI vs MCP vs web app | Surface | Best for | DunSocial entry | | --- | --- | --- | | CLI | Terminal, shell scripts, local coding agents, CI/CD release announcements | [/cli](/cli) | | Hosted MCP | Remote Claude, ChatGPT, Cursor, and other MCP clients with no shell | [/mcp](/mcp) (47 tools) | | Web app | Visual calendar review, connecting networks, seat and token settings | [app.dunsocial.com](https://app.dunsocial.com/login) | All three drive the **same DunSocial workspace**. Pick the surface that matches where you already work. Do not maintain three calendars. ## Safe agent / CI pattern Whether you call the CLI from a release workflow or from a coding agent: 1. Authenticate with a **scoped token**, not a human password. 2. List accounts and confirm the **workspace** before writing. 3. Create a **draft** or a **scheduled** post, then print copy, account ids, time, and timezone. 4. Keep a **human confirm** in front of publish for AI-written work. DunSocial keeps human confirmation in front of publish for AI-written work across CLI, MCP, and the web app. For CI announce jobs, schedule with a short `--in` window after the release tag, and keep account ids in secrets. Example shape (details on [/cli](/cli)): Use `DUN_TOKEN` and workspace id env vars so the job never prompts. ## FAQ ### Can I schedule social posts from CI? Yes. DunSocial supports scoped `DUN_TOKEN` auth, workspace env vars, JSON output, and stable exit codes so a release workflow can schedule without an interactive login. See the CI section on [/cli](/cli). ### Does the CLI cost extra? No. The DunSocial CLI is included in the USD 20/mo or USD 192/yr plan. MCP and the REST API are on the same plan. ### Should I use the CLI or MCP? Use the CLI when you already have a shell (terminal, local agent, CI). Use hosted MCP when the assistant is remote (Claude.ai, ChatGPT) and has no terminal. Both hit the same calendar. ### Which networks can I reach from the DunSocial CLI? The same accounts as the app: X, LinkedIn, Instagram, Threads, Bluesky, Reddit, Pinterest, YouTube Shorts; TikTok limited beta. ### How do I install it? On Node 20+, install the `dunsocial` package globally, then run `dun auth login`. Full quickstart: [/cli](/cli). ## Sources - Buffer CLI guide: https://developers.buffer.com/guides/cli.html (retrieved 2026-09-07) - Buffer pricing: https://buffer.com/pricing (retrieved 2026-09-07) - Postiz CLI introduction: https://docs.postiz.com/cli/introduction (retrieved 2026-09-07) - Typefully API docs: https://typefully.com/docs/api (retrieved 2026-09-07) --- ## About this document This is the Markdown representation of https://www.dunsocial.com/blog/best-social-media-cli-tools. The HTML version of the same page is at the same URL. You can also request Markdown from any page by sending `Accept: text/markdown`. Machine-readable summary of the whole site: https://www.dunsocial.com/llms.txt ## Company - Product: DunSocial, https://www.dunsocial.com - Legal entity: THISUX PRIVATE LIMITED, Chennai, Tamil Nadu, India - Support: support@dunsocial.com - Open the app: https://app.dunsocial.com/login