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 封装最大的区别:

  1. integrations:list 返回所有已连接账号的 ID 和平台类型
  2. integrations:settings 返回每个平台的字符限制、必填字段、可用工具
  3. integrations:trigger 调用平台特定工具,比如获取 Reddit flairs、YouTube playlists、LinkedIn companies
  4. 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

相关文章

Claude Code 2.1.136:当 AI Agent 的安全阈门从‘相信’变成‘验证’

Claude Code 2.1.136:当 AI Agent 的安全阈门从‘相信’变成‘验证’

你让 Claude Code 在 auto mode 下跑一个长任务,回来发现它把你的 AWS credentials 写进了日志文件。或者更糟:它在你没看到的一个弹窗里点了 "允许",然后把一个安全 ...

Agent 失败时:不会无限循环的恢复模式

Agent 的失败不抛异常。它们产出看起来合理但错误的输出,或者用稍微不同的方式悄悄重试同一个坏方法。把 Agent 包在 try/catch 里是错误的心智模型——Agent 没崩,它只是继续往一个 ...

没有标准答案的 Agent 怎么评测

评测一个 Prompt 已经很难。评测一个在给出答案前要跑十次工具调用的 Agent,是另一个量级的难。能产生正确答案的轨迹很少完全相同。能产生错误答案的轨迹常常一直看起来合理,直到第七步。标准的精确 ...

Agent 护栏:在不阉割 Agent 的前提下

给 Agent 加护栏属于那种简单版本太严苛、谨慎版本太宽松的任务。挡得太狠 Agent 拒绝完全合理的任务;挡得太松,新闻头条自己就写出来了。第一版要么是什么都不肯做的聊天机器人,要么是不该做那件事 ...

Agent Harness:为什么你的模型不是问题所在

LangChain 在 TerminalBench 2.0 上从 30 名开外飙到了第 5 名。他们没有换模型。同一个 LLM。同样的参数。唯一改变的是包裹在模型外面的那层软件——Harness。 ...

Planner-Executor 拆分:什么时候该拆,什么时候该合

第一天,让单个模型同时做规划和执行,看起来很优雅。三个月后,trace 日志会讲一个不同的故事:Prompt 里负责规划的那部分在工具调用上下文中开始漂移,负责执行的那部分开始幻觉出从未被规划过的步骤 ...

用经典编程规则喂饱你的 AI 编码 Agent

用经典编程规则喂饱你的 AI 编码 Agent

AI Coding Agent 写代码的速度远超人类,但它们不天然知道什么代码算是好代码。没有明确约束,Agent 产出的代码在 demo 里看起来功能完整,三个月后在维护追索里看起来一团乱——函数过 ...

工具选择:什么时候该模型挑,什么时候该你挑

会用工具的 Agent 在 demo 里看起来很有力,因为模型在选下一步做什么。它在生产里看起来很脆弱,因为模型在选下一步做什么。可用工具的空间随特性线性增长,随边界情况二次增长——超过大约十二个工具 ...

Claude Code 102 教给学术研究者的五件事

Claude Code 102 教给学术研究者的五件事

2026 年 5 月 11 日,Mushtaq Bilal, PhD 发布了《Claude Code 102 for Academic Researchers》,这是他教程系列的第二篇。第一篇 Cla ...

Dexter:为金融研究而生的自主 Agent

Dexter:为金融研究而生的自主 Agent

金融研究是一个天然适合 AI Agent 的领域——数据公开、步骤可结构化、输出是分析而非行动。但多数通用 Agent 在这个场景里会暴露两个问题:碰到的数据格式太多太杂,每步都要重新理解上下文;缺少 ...

文件驱动的 Agent,不需要构建步骤

周五晚上还在排 pitch deck 格式的投行分析师,并没有在创造 alpha。他们在给数字画框——那些数字早就从 CapIQ 拉出来了,早就在模型里交叉验证过了,早就被 VP 批过了。横在数据和格 ...

OpenClaw 终于长出手和眼:Peekaboo v3

OpenClaw 终于长出手和眼:Peekaboo v3

OpenClaw 之前能接消息、能调 Agent、能把结果送到各个聊天渠道,但缺一双手和眼睛。Agent 在聊天框里给建议容易,要它实际操作桌面上的按钮、菜单、弹窗、输入框,之前没有可靠的本地执行层。 ...