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.

Claude Code Claude Cursor Zed n8n Your own
Terminal
# 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.

Terminal
# 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.

Claude Code
> 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 & CI
# 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.

https://zilfu.app/mcp/social-media

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.

POST /api/spaces/{space}/posts

Webhooks

Eight events pushed as they happen: publishes, failures, incoming comments, and accounts connecting or dropping. React in real time instead of polling.

post.published · post.failed · +6

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.

Awaiting review
$ 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

zilfu login Authenticate in the browser or with a token, and store it
zilfu logout Remove the stored credentials
zilfu whoami The user the current token belongs to
zilfu health Check the API is up — the one command needing no auth

Workspaces

zilfu spaces list Every space this token can reach
zilfu accounts list Connected social accounts in a space, with their ids

Posts

zilfu posts create Create a post — scheduled, drafted, or published now
zilfu posts list The queue, filterable by status, account and date
zilfu posts delete Remove a post before it publishes
zilfu media upload Upload a local file and print a reusable URL

Schedule

zilfu slots list The recurring weekly posting times in a space
zilfu slots create Add a time on one or more days — safe to re-run
zilfu slots delete Remove a posting slot

Analytics

zilfu analytics overview One summary row per account, never pooled together
zilfu analytics account The full report for one connected account
zilfu analytics posts One row per published post, with that platform's metrics

Published on npm as @zilfu/cli. Every flag is documented in the CLI reference.

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.

Start now for $0