Postiz Agent CLI:把 28 个社交平台的发布权交给你的 AI
你写了一个能读 RSS、能总结论文、能生成配图的 AI Agent,结果发现最后一英里卡住了:它没法把内容发出去。
不是技术问题,是生态断层。大多数社交媒体平台只给人类设计 UI,API 文档散落在各自开发者中心,认证流程从 OAuth2 到自定义 token 各不相同。你想让 Agent 自动发一条 Twitter 线程、同时同步到 LinkedIn 和 Reddit,结果是你在 debug 三个不同的 SDK、四种 token 过期策略、五种 rate limit 规则。
Postiz Agent CLI 是一个让 Agent 自己完成发布闭环的工具。它把 28 个社交平台封装成统一的命令行接口,输出全是 JSON,认证走 OAuth2 device flow,Agent 不需要预置任何平台知识就能动态发现能力。
这不是另一个 Buffer
Buffer、Hootsuite 是给人类运营者用的。它们的 API 是附属品,核心交互在网页上完成。
Postiz CLI 是反向设计的:命令行是第一公民,每一个操作都返回结构化 JSON,每一个平台的能力都可以被动态查询。Agent 不需要硬编码 “Reddit 需要 subreddit 和 flair” 这种知识,它在运行时自己问:
- integrations:list —— 我接入了哪些账号?
- integrations:settings —— 这个平台需要什么参数?最大字数是多少?
- integrations:trigger —— 有哪些动态数据可以拉取?
这意味着你换了一个 Reddit 账号、subreddit 改了规则、YouTube 新增了必填字段,Agent 不需要重新训练或改代码。它会在下一次发布前自己拿到最新的 schema。
核心能力
动态发现,零硬编码
Postiz CLI 的 discovery workflow 是它跟其它社交媒体 API 封装最大的区别:
- integrations:list 返回所有已连接账号的 ID 和平台类型
- integrations:settings 返回每个平台的字符限制、必填字段、可用工具
- integrations:trigger 调用平台特定工具,比如获取 Reddit flairs、YouTube playlists、LinkedIn companies
- Agent 用这些动态数据构造发布请求
这不是 convenience,这是架构差异。当平台规则变化时,硬编码的 Agent 会失败,而 discovery-based 的 Agent 会自适应。
全 JSON 输出
每个命令的输出都是机器可解析的 JSON。没有人类友好的表格、没有进度条动画、没有需要正则提取的字符串:
INTEGRATIONS=$(postiz integrations:list | jq -r '.')
REDDIT_ID=$(echo "$INTEGRATIONS" | jq -r '.[] | select(.identifier=="reddit") | .id')
Agent 可以直接把输出喂给下一步逻辑,不需要文本解析层。
28+ 平台,统一接口
Twitter/X、LinkedIn、Reddit、YouTube、TikTok、Instagram、Facebook、Pinterest、Discord、Slack、Bluesky、Mastodon、Telegram、Medium、Dev.to 等,全部用同一套命令结构:
- posts:create —— 发布或排期
- posts:list / posts:delete / posts:status —— 管理
- analytics:platform / analytics:post —— 数据
- upload —— 媒体上传(必须步骤)
平台特有的配置通过 settings 参数传入,而不是拆分成完全不同的 API。
线程与评论
一条命令可以发布带评论的帖子,不同平台自动映射为正确格式:
- Twitter/X:thread
- Reddit:comment replies
- LinkedIn:comment on post
- Instagram:first comment
postiz posts:create \
-c "Main post" \
-c "Follow-up 1" \
-c "Follow-up 2" \
-s "2026-05-10T09:00:00Z" \
-i "twitter-id"
适用场景
自主内容 Agent
一个监控 GitHub releases、自动写发布说明、生成封面图、排期发布的全自动 Agent。Postiz CLI 让它不需要知道 Twitter API 和 LinkedIn API 的区别,只需要知道 “postiz posts:create”。
多平台同步工作流
同一篇内容,不同平台需要不同版本:Twitter 要短和带标签,LinkedIn 要长文加专业语气,Reddit 需要 subreddit 和 flair。用 JSON 模式一次性定义多平台变体,一条命令发布到所有渠道。
数据驱动的发布策略
Agent 先拉取 analytics:platform 获取过去 30 天的 engagement 数据,再决定发布时间和内容角度。发布后继续用 analytics:post 追踪表现,形成闭环。
踩过的坑
媒体必须先上传
TikTok、Instagram、YouTube 只接受 Postiz 托管的 URL。任何外部链接或本地路径都会被拒绝:
# 错误:直接传本地文件
postiz posts:create -c "Hello" -m "video.mp4" -i "tiktok-id"
# 正确:先上传,再用返回的 URL
VIDEO=$(postiz upload video.mp4 | jq -r '.path')
postiz posts:create -c "Hello" -m "$VIDEO" -i "tiktok-id"
这个约束不是 Postiz 故意设置的,是平台自身的安全策略。但新手几乎一定会在这里摔一跤。
analytics:post 返回 missing
某些平台(TikTok 是典型)发布后不立即返回 post ID。analytics:post 会返回 {“missing”: true},你必须手动用 posts:missing 列出平台内容,再用 posts:connect 关联:
postiz posts:missing <post-id>
postiz posts:connect <post-id> --release-id "<content-id>"
这意味着全自动 analytics 闭环对这些平台是有延迟的。
settings 里的 __type 字段
JSON 模式下,每个平台的 settings 对象必须有 __type 字段标识平台类型。忘记这个字段会得到一个模糊的验证错误,而不是 “缺少 __type” 的明确提示。
安装与认证
npm install -g postiz
# 或
pnpm install -g postiz
两种认证方式,OAuth2 推荐:
# 方式一:OAuth2 device flow,无需 client ID/secret
postiz auth:login
# 方式二:API Key
export POSTIZ_API_KEY=your_key
OAuth2 凭证存储在 ~/.postiz/credentials.json,优先级高于 API Key。
快速上手:Agent 发布闭环
一个完整的 Agent 工作流示例:
#!/bin/bash
# 1. 认证检查
postiz auth:status || postiz auth:login
# 2. 发现可用账号
REDDIT_ID=$(postiz integrations:list | jq -r '.[] | select(.identifier=="reddit") | .id')
# 3. 获取动态数据(flairs)
FLAIRS=$(postiz integrations:trigger "$REDDIT_ID" getFlairs -d '{"subreddit":"programming"}')
FLAIR_ID=$(echo "$FLAIRS" | jq -r '.output[0].id')
# 4. 上传媒体
IMG=$(postiz upload cover.jpg | jq -r '.path')
# 5. 发布
postiz posts:create \
-c "Launching a new open-source CLI for social media automation" \
-s "2026-05-10T14:00:00Z" \
-m "$IMG" \
--settings "{\"subreddit\":[{\"value\":{\"subreddit\":\"programming\",\"title\":\"Postiz CLI: Social Media Automation for Agents\",\"type\":\"text\",\"flair\":{\"id\":\"$FLAIR_ID\",\"name\":\"Showcase\"}}}]" \
-i "$REDDIT_ID"
实践:多平台活动发布
用 JSON 文件定义跨平台内容变体:
{
"type": "schedule",
"date": "2026-05-10T09:00:00Z",
"posts": [
{
"integration": { "id": "twitter-123" },
"value": [{
"content": "New CLI drops today 🧵 Auto-post to 28+ platforms from your agent. No API wrangling.",
"image": [{ "id": "t1", "path": "twitter-cover.jpg" }]
}]
},
{
"integration": { "id": "linkedin-456" },
"value": [{
"content": "We built a CLI that lets AI agents publish to social media at scale. Here is why the architecture matters...",
"image": [{ "id": "l1", "path": "linkedin-cover.jpg" }]
}]
}
]
}
postiz posts:create --json campaign.json
什么时候别用
- 你只需要管理 1-2 个平台,且发布频率很低 —— 直接用各平台原生 API 或官方工具更轻量
- 你的 Agent 需要实时互动(回复评论、私信)—— Postiz CLI 是发布工具,不是社交 CRM
- 你对发布延迟极度敏感 —— 排期系统有最小粒度限制,不适合秒级响应场景
总结
社交媒体发布是大多数内容 Agent 的最后一英里,也是最 messy 的一英里。Postiz CLI 把这最后一英里标准化成了一组命令,让 Agent 可以像调用函数一样调用社交平台。
它真正的价值不是 “28 个平台” 这个数字,而是 discovery workflow:Agent 不需要事先知道任何平台的规则,它在运行时自己查、自己适配。这意味着你的 Agent 不会因为 Twitter 改了 API 或 Reddit 加了新字段而崩溃。
GitHub: https://github.com/gitroomhq/postiz-agent npm: postiz