@sfeed/cli
v0.3.4
Published
Social media posting and scheduling CLI + MCP server
Downloads
849
Maintainers
Readme
@sfeed/cli
Post to Facebook Pages and Instagram from the terminal or through MCP.
sfeed is a CLI and MCP server for AI agents. It handles auth, immediate posting, hosted scheduling, and billing for hosted scheduling.
Install
curl -fsSL https://sfeed.dev/install.sh | shRequires Node.js 20+ installed on your machine.
The install script is the default path. It installs a managed local sfeed command and uses a direct release when one is available for your platform. npm remains supported as an alternative:
npm install -g @sfeed/cliQuick start
sfeed auth facebook connect
sfeed auth instagram connect
sfeed destinations
sfeed mcpRun the command for each platform you want, then start the MCP server for an agent.
Agent plugins
Codex and Claude can install the sfeed plugin from the public nem035/sfeed repository. The plugin bundles the sfeed skill and local MCP server entry. You still need the CLI installed locally and connected with sfeed auth facebook connect or sfeed auth instagram connect.
For Codex:
codex plugin marketplace add nem035/sfeed --sparse .agents/plugins --sparse pluginsFor Claude:
claude plugin marketplace add nem035/sfeed
claude plugin install sfeed@sfeedCore commands
sfeed auth facebook connect
sfeed auth instagram connect
sfeed auth status
sfeed auth facebook revoke
sfeed auth instagram revoke
sfeed post "content"
sfeed post "content" --to facebook
sfeed post "content" --to instagram
sfeed post "content" --page "Acme Robotics"
sfeed post "content" --to facebook --media ./assets/launch-card.jpg
sfeed post "content" --to instagram --kind reel --media ./assets/demo.mp4
sfeed post "content" --to facebook --kind story --media ./assets/story.jpg
sfeed post "content" --at "2026-04-01T09:00:00Z"
sfeed post "content" --dry-run
sfeed posts list --page "Acme Robotics"
sfeed posts show <post-id> --page "Acme Robotics"
sfeed posts edit <post-id> --page "Acme Robotics" --content "Updated content"
sfeed posts delete <post-id> --page "Acme Robotics" --yes
sfeed pages
sfeed destinations
sfeed dashboard
sfeed dashboard --view calendar
sfeed calendar
sfeed schedule open
sfeed schedule calendar
sfeed schedule status
sfeed schedule list
sfeed schedule list --status failed
sfeed schedule list --status posted
sfeed schedule preview <id>
sfeed schedule reschedule <id> --at "2026-04-02T09:00:00Z"
sfeed schedule duplicate <id> --at "2026-04-03T09:00:00Z"
sfeed schedule cancel <id>
sfeed agents create --name codex --scopes publish,schedule --all-destinations
sfeed agents create --name campaign --scopes publish --destinations <id>,<id>
sfeed agents list
sfeed agents revoke <key-id>
sfeed audit
sfeed audit --json
sfeed doctor
sfeed status
sfeed telemetry status
sfeed telemetry on
sfeed telemetry off
sfeed report "Facebook auth got stuck"
sfeed billing
sfeed billing subscribe
sfeed billing portal
sfeed mcpFacebook published-post listing, reading, editing, and deletion require Meta to
enable Page read access for sfeed. Run sfeed doctor to verify that capability
separately from publishing access.
Scoped agent access
Create agent keys from an owner session after inspecting canonical destination IDs:
sfeed destinations
sfeed agents create --name codex --scopes publish,schedule --destinations <id>,<id>
# Or deliberately include every current and future destination:
sfeed agents create --name codex --scopes publish,schedule --all-destinationsCreation prints SFEED_USER_ID and SFEED_AGENT_TOKEN exactly once. Pass both
to the isolated process or MCP configuration. Do not save the agent token in
the owner's ~/.sfeed/.env.
SFEED_USER_ID=<owner-user-id> SFEED_AGENT_TOKEN=<one-time-token> sfeed mcpThe publish alias grants destination reads, immediate publishing, and media
staging. schedule grants destination and schedule reads, schedule mutations,
and media staging. read grants destination and schedule reads. all grants
every agent data-plane scope. Explicit destination lists stay fixed;
--all-destinations includes destinations connected later.
Connection management, billing, agent-key management, audit access, and signed
dashboard or preview URLs remain owner only. Immediate publishes automatically
use an idempotency key. Rotate a key by revoking it and creating a replacement.
Owners can inspect content-free hosted activity with sfeed audit --json;
events are retained for 365 days.
An environment variable is not a security boundary. A process that can read
the owner's ~/.sfeed/tokens.json can recover the owner credential and bypass
agent-key limits. Run untrusted agents under a separate OS user, container, or
sandbox that cannot read the owner's sfeed home directory.
Posting
sfeed destinationslists every connected Facebook or Instagram publishing destination- If one destination matches a selected platform,
sfeed postuses it automatically - If multiple destinations match, pass
--pagewith the account name or ID --mediaaccepts local files or public URLs- sfeed stages local files automatically when Instagram or hosted scheduling needs a public URL
- Facebook supports text-only, single-image, multi-image, and single-video posts
- Facebook also supports Page Reels and Page Stories with
--kind reelor--kind story - Instagram supports feed media, Reels, Stories, and image-only carousel posts
- Use
--kind feed,--kind reel,--kind story, or--kind carouselwhen the media shape alone is not clear - Instagram does not support text-only posts
Scheduling
--atschedules the post for latersfeed schedule preview <id>opens a hosted browser preview for a scheduled postsfeed dashboardopens the hosted browser UI for your whole queuesfeed dashboard --view calendarandsfeed calendaropen the same queue as a month calendarsfeed schedule openis the same browser queue, kept as a compatibility aliassfeed schedule statusshows queue state, last publish attempt, and recent failuressfeed schedule reschedule <id> --at ...moves a pending post to a new timesfeed schedule duplicate <id> [--at ...]copies an existing post into a fresh pending job- hosted scheduling requires a subscription
- scheduled local-file media must be within 90 days
- local staged files must be 100 MB or smaller
- hosted scheduling checks for due posts every minute
- schedule times must be ISO 8601 with a timezone, for example
2026-04-01T09:00:00Z - staged local media is served through short-lived signed URLs for previews and publish jobs
Telemetry
Anonymous CLI telemetry is enabled by default.
sfeed telemetry status
sfeed telemetry on
sfeed telemetry offTelemetry sends command usage, command failures, CLI version, OS, and Node version. It never sends post content, media, tokens, account IDs, page IDs, account names, billing details, or file paths. Set SFEED_TELEMETRY=0 to disable it from the environment.
Problem reports
Send a problem report from the CLI:
sfeed report "Facebook auth got stuck after browser approval" --email [email protected]The report stores your message, optional contact email, command context, CLI version, OS, and Node version in the hosted service. Automatic crash reports use the same path when telemetry is enabled. Crash reports include the crash message and stack. The reporter redacts bearer tokens, obvious token fields, and your home directory path before sending.
Updates
sfeed checks npm for newer CLI version metadata at most once per day when you run an interactive terminal command. It skips MCP, help, version output, CI, and non-interactive shells.
When a newer version is available, sfeed asks whether to update. Release installs update through the installer at https://sfeed.dev/install.sh. npm-installed CLIs update through npm.
Disable the update check with:
SFEED_UPDATE_CHECK=0Preview flow:
sfeed post "content" --to facebook --page "Acme Robotics" --at "2026-04-01T09:00:00Z"
sfeed schedule status
sfeed dashboard
sfeed schedule preview <id>MCP
sfeed works as an MCP server. Start it with:
sfeed mcpExample Claude Desktop config:
{
"mcpServers": {
"sfeed": {
"command": "sfeed",
"args": ["mcp"]
}
}
}MCP tools
sfeed_statussfeed_auth_statussfeed_destinationssfeed_pagessfeed_postsfeed_facebook_posts_listsfeed_facebook_post_getsfeed_facebook_post_updatesfeed_facebook_post_deletesfeed_schedule_statussfeed_schedule_dashboard_urlsfeed_schedule_preview_urlsfeed_schedule_listsfeed_schedule_reschedulesfeed_schedule_duplicatesfeed_schedule_cancelsfeed_report_problem
Full docs: https://sfeed.dev/docs
Useful guides:
- Cookbook: https://sfeed.dev/docs/cookbook
- Codex: https://sfeed.dev/docs/codex
- Claude Code: https://sfeed.dev/docs/claude-code
- OpenCode: https://sfeed.dev/docs/opencode
