The social media CLI your AI agent can run.
You automated your deploys and your changelog. Social is still a browser tab. One install, and your agent can plan, schedule and measure a whole month across seven networks.
# Install, authenticate, publish. Node 18.17+. $ npm install -g @zilfu/cli $ zilfu login --web $ zilfu posts create --space 1 --account 12 --account 13 \ --text "Shipped." --at 2026-08-14T18:00:00Z id account_id status scheduled_at --- ---------- --------- --------------------------- 502 12 scheduled 2026-08-14T18:00:00.000000Z 503 13 scheduled 2026-08-14T18:00:00.000000Z
Built for AI agents.
Agent-ready output
Every command prints structured JSON. Built for LLMs and automation pipelines to parse a result, plan the next step and act on it.
Seven networks
Publish to Instagram, TikTok, Facebook, LinkedIn, Pinterest, Threads and X from a single CLI — one command, as many accounts at once as you run.
Threads & first comments
Compose multi-part posts that publish as platform-native threads. Queue a first comment to land minutes after the post on Threads, Instagram and Facebook.
Scheduled posting
Schedule to the minute, save drafts for review, or publish right away. Set recurring weekly times and batch-schedule a whole campaign in one go.
Rich media support
Upload and attach images and video, several files to a single post. Supports JPG, PNG, WebP, MP4 and MOV, straight from a local folder.
Analytics & reporting
Track totals, engagement rates, audience and best posting times. Per account or per post, over any date range, on every plan.
One command, every account.
Multi-account campaigns, native threads, per-account copy and a week of content scheduled in a loop — all from the same command your agent already knows.
# Four accounts, one call — one post each, all at 9am. $ zilfu posts create --space 1 \ --account 12 --account 13 --account 15 --account 18 \ --text "Launching today." \ --media https://<your-media-host>/uploads/7/01K2FQ8Z.png \ --at 2026-08-14T09:00:00Z # A native thread, with a first comment queued behind it. $ zilfu posts create --space 1 --account 12 \ --text "Three things we learned shipping a CLI for agents:" \ --reply "1. Tool names are a UX surface." \ --reply "2. Structured output beats prose." \ --comment "Full write-up in the replies." --comment-delay 2 # Same campaign, different copy where it matters. $ zilfu posts create --space 1 --account 12 --account 15 \ --text "New guide is live." \ --account-text 15="New guide is live. The long version, for LinkedIn." # A week of content, scheduled in four lines of shell. $ for d in 10 11 12 13 14; do zilfu posts create --space 1 --account 12 \ --text "Day $d" --at "2026-08-${d}T09:00:00Z" done
Works with Claude Code.
Any agent that can run a shell command can drive Zilfu, Claude Code included. No SDK, no plugin, no integration to build — it reads the help, works out the flags, and runs them.
> Take Friday's changelog, write it up for LinkedIn and X, attach the hero image and schedule both for 6pm. Claude runs: $ zilfu accounts list --space 1 --json $ zilfu media upload --file ./assets/hero.png $ zilfu posts create --space 1 --account 12 --account 15 \ --media https://<your-media-host>/uploads/7/01K2FQ8Z.png \ --text "This week: realtime comments, faster analytics…" \ --account-text 15="Three shipped this week. The long version →" \ --at 2026-08-14T18:00:00Z id account_id status scheduled_at --- ---------- --------- --------------------------- 502 12 scheduled 2026-08-14T18:00:00.000000Z 503 15 scheduled 2026-08-14T18:00:00.000000Z
Runs in cron and CI.
The CLI is just a binary, so anything that runs commands can run Zilfu — cron, a CI job, a systemd timer. Put a token in an environment variable and it publishes while you sleep.
# crontab — weekday mornings, drop yesterday's numbers # somewhere your agent can read them. 0 7 * * 1-5 zilfu analytics overview --space 1 --json > ~/reports/social.json # .github/workflows/announce.yml — post when a release ships. on: release: types: [published] jobs: announce: runs-on: ubuntu-latest steps: - run: npm install -g @zilfu/cli - run: | zilfu posts create --space 1 --account 12 --account 15 \ --text "${{ github.event.release.tag_name }} is out." env: ZILFU_TOKEN: ${{ secrets.ZILFU_TOKEN }} id account_id status scheduled_at --- ---------- --------- --------------------------- 641 12 published 642 15 published
Beyond the CLI.
Hosted MCP server
For agents that speak MCP rather than shell. Fifteen tools over the same ground as the CLI, hosted by us with nothing to run.
REST API
The same endpoints the app itself runs on. Bearer-token auth, JSON in and out, with resources for spaces, accounts, posts, media, slots and analytics.
Webhooks
Eight events pushed as they happen: publishes, failures, incoming comments, and accounts connecting or dropping. React in real time instead of polling.
Approvals, built in.
Invite your agent as a teammate without publish permission. Everything it creates lands in the approval queue, where a human can review it, comment, or send it back for changes. Approvals and unlimited teammates are on every plan, including Free.
$ zilfu posts list --space 1 --status pending_approval id account_id status scheduled_at --- ---------- ---------------- --------------------------- 502 12 pending_approval 2026-08-14T18:00:00.000000Z 503 13 pending_approval 2026-08-14T18:00:00.000000Z
CLI command reference.
Auth
Workspaces
Posts
Schedule
Analytics
Published on npm as @zilfu/cli. Every flag is documented in the CLI reference.
Supported networks.
Connect once, publish everywhere. Each network has its own page covering what Zilfu supports there and the settings it needs.
Common questions.
Anything that can run a shell command — Claude Code, an agent framework, a cron job, a CI step. There is no SDK to install and no integration to build: the agent runs a command and reads the output. A hosted MCP server and a REST API are available too, if your agent would rather use one of those.
Because a CLI is the interface most agents already know how to use. There is no SDK to install, no client to generate and no auth flow to implement — the agent runs a command and reads the output. Every command that talks to the API also takes --json, so what comes back parses without scraping a table.
You decide how much rope it gets. Tokens are scoped to your account and revocable anytime. Ask the agent for drafts and nothing goes live until you approve — or invite it as a teammate without publish permission, and everything it creates routes into the approval queue automatically. Every action shows up in your calendar, so nothing publishes silently.
No. The CLI is on every plan including Free — no credit card, and all sixteen commands. Free includes 2 accounts and 15 posts a month; paid plans raise the account cap and lift the post limit.
Run zilfu login --web to authorise in the browser, or set the ZILFU_TOKEN environment variable for a headless agent. One token covers every workspace you belong to, and works on the CLI and the API alike. Credentials are stored at ~/.config/zilfu/config.json with mode 600.
All seven Zilfu supports: Instagram, TikTok, Facebook, LinkedIn, Pinterest, Threads and X — including multi-account posting, media uploads, and multi-part threads on networks that support them.
Yes — per space, per account, or per published post, so an agent can look at what landed last month before it plans next month. A metric the API cannot vouch for prints as a dash, and null in JSON, rather than a zero your agent would repeat as fact.
The CLI and the API share per-token rate limits sized for real agent workflows — the details are documented at zilfu.app/docs. Building something heavier? Get in touch and we'll work out the right ceiling.
Your whole social, handled.
Plan, approve and publish every account from one place.
Free to start, no card needed.