关于 postey
postey 技能为跨平台社交媒体内容的创建、排期和发布提供操作指引,适用于通过 MCP 管理社交账号与帖子内容的工作流。它明确区分 MCP 与本地 CLI 的职责,并要求按服务器实时清单选择工具、资源和平台能力。
主要功能
- 01创建、更新和发布帖子
- 02安排帖子发布时间
- 03读取账号、团队与帖子内容
- 04发布前验证内容并审阅传播潜力
- 05通过 CLI 处理本地媒体文件
适用场景
- 01为多个平台创建并发布内容
- 02查看已发布或待发布帖子
- 03验证帖子并进行传播潜力审阅
- 04从本地视频转录并生成文案
MCP 相关
postey 连接 `https://mcp.postey.ai/mcp`。MCP 资源负责读取状态,MCP 工具负责验证、审阅及所有写入;CLI 仅处理需要访问本地文件的操作。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posteyai/ skills --skill postey安装后在 Claude Code 中输入/postey确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.mcp.jsonbootstrap-prompt.mdcapability-snapshot.jsonCHANGELOG.mdcommand-reference.mdpack.jsonprompts.mdREADME.mdrouting-guide.mdvideo-workflow.md.claude-plugin/plugin.jsonreferences/brand-profile-template.mdcaption-playbook.mdhook-formulas.mdmcp-authentication.mdmcp-workflows.mdplatform-archetypes.mdpost-structures.mdthread-and-video-formats.mdx-algorithm.mdscripts/mediaValidator.jspostey.jsvideoUtils.js详细介绍
Postey 技能
使用 Postey 在多个平台上创建、安排和发布社交媒体内容。
能力来自服务端,而非此文件
postey://skill-manifest 描述了当前可用的功能——包括服务端实际提供的每个工具、资源、提示词和平台。当你不确定要做什么时,请先读取它,不要根据本文档猜测。 每个工具条目都包含三个字段,可单独确定路由方式:
| 字段 | 含义 |
|---|---|
capability | 工具的用途,格式为 noun.verb(post.create、account.list) |
canonical | true = 访问该能力的首选方式 |
superseded_by | 对于非首选工具,应改为调用的 URI 或工具 |
规则:通过该能力的首选提供方访问它。 如果设置了 superseded_by,就按其指示操作——有了这个字段,你就不必从描述中解析 [FALLBACK ONLY — READ … INSTEAD]。如果资源和工具提供的是同一项能力,则资源为首选。
唯一的例外是无法读取 MCP 资源的客户端。这种情况下,已被取代的工具才是正确选择,因为首选提供方无法访问——这正是设置回退方案的原因。
此目录中的 capability-snapshot.json 包含相同的数据,供 CLI 和 CI 离线使用。可以读取实时资源时,请优先读取;快照只是镜像,可能比最新部署落后一个版本。
工具路由——调用任何工具前请先阅读
有两种使用界面——MCP 工具/资源和 CLI(postey.js)——它们是不同层级,而非替代方案。MCP 负责所有读取和所有写入。CLI 仅负责需要访问用户机器的操作,并且不提供写入命令:其本地文件命令会上传文件,并返回 MCP 写入所需的字段。工作流的每一步都使用相应负责的界面。
已安装技能不代表配置已就绪。无论服务端是否可访问,此文件都会从磁盘加载。如果当前会话中没有 Postey 工具,请停止并说明这一点。这里没有能访问 Postey 状态的命令,所以寻找此类命令只会浪费用户时间。
请说明下一步该做什么,而不只是表示无法继续。服务端地址为
https://mcp.postey.ai/mcp,应直接在你自己的客户端中注册,绝不要通过本地桥接。能够打开浏览器的客户端可完成 OAuth。无法使用浏览器的客户端(CI、容器、cron)则不行:这里没有 client_credentials 授权方式,因此需要使用通过 X-API-Key 发送的 MCP 密钥(mk_…),而你无法自行创建该密钥。各客户端的注册命令和配置路径:https://raw.githubusercontent.com/posteyai/skills/main/setup.md。密钥配置步骤:references/mcp-authentication.md。
决策树
-
涉及本地文件路径(
~/video.mp4、./cover.jpg)? → 仅限 CLI — MCP 无法访问本地文件系统。 -
视频转录(yt-dlp + Whisper)? →
node ${CLAUDE_SKILL_DIR}/scripts/postey.js video transcribe <url>— 只要 CLI 可用,就优先使用此方式。 仅支持连接器的客户端(没有 CLI)则改用transcribe_videoMCP 工具。 -
只读状态(账号、团队、帖子内容)? → MCP 资源 — 快速、可缓存,无需启动子进程:
- 账号 →
postey://accounts - 团队 →
postey://teams - 帖子内容 →
postey://posts/{id}/content/{platform} - 只要客户端能够读取 MCP 资源,就优先使用资源 URI,而不是对应的读取工具(例如,使用
postey://accounts,而不是get_accounts);无法读取资源的客户端(许多托管连接器)则使用工具。没有对应资源的读取操作(帖子列表 →get_posts)始终使用工具。
- 账号 →
-
发布前验证内容或审核传播潜力? → MCP 工具 —
validate_post_content、review_post— 没有对应的 CLI 操作;在任何支持 MCP 的会话中都不要跳过这些步骤。review_post会返回一个job_id,运行时间为 60-120 秒;使用get_review_status获取结果(通过job_id,或者在句柄丢失时通过post_id),并在status为running时重复查询。 -
其他所有写入操作(创建、更新、发布、安排发布、删除、添加标签、通过 URL 上传)? → 在所有环境中都使用 MCP 工具 —
create_post、update_post、publish_draft、schedule_post、delete_draft。 → 没有其他可行方式。如果无法连接 MCP 服务,就完全无法执行写入操作 — 应说明这一点并停止;不要尝试使用不存在的 CLI 命令。
路由表
| 触发条件 | 工具 | 原因 |
|---|---|---|
--file <local-path> 或 --video <local-path> | 仅限 CLI(video post) | MCP 无法访问文件系统 |
| 视频转录工作流 | 优先使用 CLI;仅支持连接器的客户端使用 transcribe_video MCP 工具 | 本地处理流程需要 yt-dlp、ffmpeg、Whisper |
| 读取账号 / 团队 / 帖子内容 | MCP 资源 | 可缓存,无子进程开销 |
| 发布前验证内容 | MCP 工具 | 没有对应的 CLI 操作 |
| 审核传播潜力 | MCP 工具 | 没有对应的 CLI 操作 |
| 创建 / 更新 / 发布 / 安排发布 / 删除 | MCP 工具 | create_post、update_post、publish_draft、schedule_post、delete_draft |
| 获取单个草稿内容 | MCP | postey://posts/{id}/content/{platform},或 get_post_content |
| Cursor、SDK Agent、CI/CD 环境 | 与上述相同 — 不变 | 环境决定 CLI 是否可用,绝不决定由谁执行该操作 |
反模式
- 绝不在客户端能够读取 MCP 资源时调用
get_accounts— 应改为读取postey://accounts。无法读取资源的客户端(许多托管连接器)可以使用该工具。 - 绝不对本地文件调用
upload_media— 该工具仅接受 URL。 - 绝不在任何支持 MCP 的会话中跳过
validate_post_content/review_post。 - 绝不使用 CLI
drafts:create/drafts:publish/drafts:schedule— 这些命令已移除;请使用 MCP 工具。CI/CD、Cursor、Windsurf 和 SDK Agent 同样如此:没有 MCP 服务就没有写入方式,而不是改用 CLI。 - 绝不直接调用 REST 端点(例如
GET /accounts)— 始终使用 MCP 资源或工具。 - 绝不猜测或臆造
account_id— 始终先读取账号(postey://accounts,无法读取资源的客户端可使用get_accounts),并向用户确认。 - 绝不运行
postey.js accounts:list— 该命令不存在;请读取postey://accounts(或调用get_accounts)。
设置
-
MCP 密钥 — 请用户在 https://app.postey.ai?settings=agents§ion=advanced 创建密钥 — 即 AI & Agents → Advanced, 生成的密钥永不过期,且适用于所有套餐。
?settings=api打开的是 Integrations, 其中是受套餐限制的通用密钥。然后:${CLAUDE_SKILL_DIR}/scripts/postey.js setup或设置环境变量:
export POSTEY_API_KEY=your_key -
要求 — Node.js 18+。核心 CLI 无需其他依赖。
配置优先级(从高到低):
POSTEY_API_KEY环境变量POSTEY_AUTH_TOKEN环境变量 — MCP 服务在为经过 OAuth 身份验证的调用方运行此 CLI 时设置的 bearer token。无需手动设置。postey.js auth:login创建的 OAuth 会话postey.js auth:link关联的凭据 — CLI 复制此连接已有的访问权限。这是setup.md第 5 步所设置的内容。./.postey/config.json(项目本地)— 仅在创建该配置的目录中有效。 通过克隆或复制获得的配置会被忽略,因为如果仓库提交了配置,否则就会提供凭据并静默使用默认账户。在该目录中重新运行setup --key <key> --location local,或设置POSTEY_TRUST_LOCAL_CONFIG=1。~/.config/postey/config.json(用户全局)
出现“API key not found”时
如果客户端已连接到 MCP 服务,请运行 postey.js auth:link --begin,并使用它打印的代码调用
link_cli 工具 — 这会将此连接的访问权限复制到 CLI,无需再次登录。否则,请告知用户以交互方式运行设置命令;你无法代替他们运行,因此停止并等待。切勿在无人值守时直接运行 setup:它会从
stdin 提示输入内容。不要在密钥链、.env 文件或配置目录中查找凭据。
账户选择
执行任何写入操作前,Claude 必须知道要使用哪个账户。每次都按以下顺序操作:
- 读取
postey://accounts— 仅当客户端无法读取 MCP 资源时(许多托管连接器无法读取),才调用get_accounts工具。 - 只有一个账户 → 直接使用,无需询问用户。
- 有多个账户 → 显示账户并询问用户要使用哪一个。
- 传入
account_id,用于create_post、schedule_post、publish_draft等。
postey://accounts 返回的账户字段:
| 字段 | 类型 | 说明 |
|---|---|---|
account_id | int | 所有写入工具都必须提供 |
account_name | str | null | 人类可读的标签 |
teams | list[int] | null | 此账户所属的团队 ID |
| 每个平台一个键 | object | null | 非空表示已连接该平台 |
各平台的键是小写 slug(X 对应 twitter;其他平台使用其自身名称)。
**从载荷中读取这些键 — 不要自行假设键的集合。**此表列出了七个平台,而服务返回了九个平台,因此有两个已连接的平台未显示在该技能中。
确定显示用账号名称(向用户展示时):每个已连接的平台对象都带有自己的标识符字段 — 通常是 username,有时则是平台专属字段(LinkedIn 上是 vanity_name,Bluesky 上是 handle)。读取对象并使用其中实际存在的字段,不要假设字段名;缺少某个键表示该平台未连接,而不是账号名称为空。
硬性规则:
- ✗ 如果客户端能够读取 MCP 资源,切勿调用
get_accounts— 应改为读取postey://accounts。无法读取资源的客户端可以使用该工具。 - ✗ 切勿编造或假设
account_id— 始终读取账户(通过资源或工具)并确认。 - ✗ 切勿直接调用
GET /accounts或任何 REST 端点 — 只能使用 MCP。 - ✗ 切勿运行
postey.js accounts:list— 该 CLI 命令不存在。
账户与默认值
- 对账户执行操作的 CLI 命令都需要一个位置参数
account_id(例如video post 123 --video ...)。完整参数列表请参阅 command-reference.md。
常见操作
| 用户说…… | 操作 |
|---|---|
| “为 X 起草一条推文” | MCP create_post |
| “把这条发到 LinkedIn” | MCP create_post,并设置 platform=LINKEDIN |
| “把这条发到 X 和 LinkedIn”(内容相同) | MCP create_post,并指定多个平台 |
| “X 线程 + LinkedIn 帖子”(内容不同) | MCP create_post → 针对每个其他平台调用 MCP update_post |
| “有哪些已安排的内容?” | MCP get_posts,并设置 status=SCHEDULED |
| “显示我最近发布的帖子” | MCP get_posts,并设置 status=PUBLISHED |
| “安排在明天发布” | MCP create_post,然后调用 MCP schedule_post |
| “现在发布这条” | MCP create_post,然后调用 MCP publish_draft |
| “根据这条短视频生成文案:<url>” | postey.js video transcribe <url> → 应用文案生成指南 → MCP create_post |
| “上传视频到 Instagram/TikTok/YouTube” | postey.js video post(本地文件)或 postey.js video transcribe <url>(远程 URL) |
| 用户提供了视频但没有文案 | 先运行 video transcribe → 优化 suggested_captions → video post --text 或 create_post |
工作流
- 检查配置:
${CLAUDE_SKILL_DIR}/scripts/postey.js config:show - 查找账号:MCP 资源
postey://accounts - 创建草稿:MCP
create_post - 安排或发布:MCP
schedule_post或publish_draft
完整流程——创建/验证/标记/发布、部分草稿更新、内容改编、媒体和视频路径选择、标记,以及必须询问用户而不能猜测的字段——请参阅 references/mcp-workflows.md。过去,每次请求时 MCP 服务都会发送这些指南;现在指南存放在此处,需要时再加载。
使用标签
通过 MCP create_post 的 tags 字段传入标签 ID。使用 MCP add_tag 为已创建的帖子添加标签。
发布到多个平台
每个主题使用一个 post_id——不要为同一内容在不同平台分别创建草稿。
各平台发布相同内容
mcp create_post account_id=<id> platform=X additional_platforms=[LINKEDIN] contents=[{text: "..."}]
各平台发布不同内容
# Step 1 — Create initial draft
mcp create_post account_id=<id> platform=INSTAGRAM contents=[{text: "<instagram_caption>"}]
# Returns post_id, e.g. 1234
# Steps 2–N — Attach each additional platform (same post_id)
mcp update_post post_id=1234 platform=LINKEDIN contents=[{text: "<linkedin_caption>"}]
mcp update_post post_id=1234 platform=X contents=[{text: "<twitter_caption>"}]
平台名称
--platform 接受服务端的大写 slug。不要依据此文件中的列表操作——此表过去存在,但条目悄然变成了 7 个,而服务端提供 9 个,导致技能错误地告知用户 Facebook 和 Pinterest 不存在。
请按以下方式确定平台:
- 现有哪些平台——使用
postey://platform-limits,或此技能目录中的capability-snapshot.json(由服务端生成;CLI 读取同一文件)。 - 各平台的规则——使用
postey://platforms/{platform}/rules,查看字符限制、计数规则、串帖和禁用词。切勿硬编码限制;限制会因平台而异。 - 此账号实际可以发布到哪些平台——读取
postey://accounts并查看连接状态。服务端存在某个平台,不代表此处已连接该平台。
直接发布视频
如果已有文案,且希望通过一条命令上传视频(及其封面),请使用 video post(无需转录)。该命令会返回 MCP create_post 所需的 media_urls、cover_url 等字段——它本身不会创建草稿,并且会拒绝 --publish-now / --schedule,因为发布和安排由 MCP 负责。
还没有文案? 先运行 video transcribe——它会返回转录文本,以及各平台对应的 suggested_captions。优化这些文案(参阅 prompts.md),然后将结果传给 video post --text 或 create_post。切勿直接将原始转录文本用作文案。
要求: PATH 中必须有 ffmpeg,用于提取 Instagram 封面缩略图。
${CLAUDE_SKILL_DIR}/scripts/postey.js video post <account_id> \
--video <local_path_or_https_url> \
--text "<caption>" \
--platforms INSTAGRAM,LINKEDIN,X \
[--cover-time <seconds>] # default: 3
[--title "Draft title"]
| 平台 | 附加视频 | 封面缩略图 |
|---|---|---|
INSTAGRAM | 是(Reel) | 是 — ffmpeg 帧提取 |
| 其他所有平台 | 否 | 否 |
视频 → 字幕 → 跨平台发布
转录由 postey-video 提供——请安装该工具包。上传本地磁盘中的视频或图片属于此技能:请参阅 video-workflow.md。
有关平台特定的字幕规则,请参阅 prompts.md。
内容工作流
此技能包含四个引导式内容工作流。用户首次连接、询问你能做什么,或提出开放式内容请求时,请向用户提供这些工作流。只有用户选择某个工作流后,才加载该工作流的参考文件;切勿一开始就安装或加载所有工作流。
每个工作流都必须遵守以下规则(不可协商):
- 每次会话都先了解账号:读取
postey://accounts;如果你的客户端无法读取 MCP 资源,则调用get_accounts。已连接的平台要读取确认,绝不能想当然。 - 所有内容都创建为草稿。只有用户明确指示后才能发布,且安排发布时间也算发布(已安排的帖子会自动发布):先提出发布时间,只有用户批准内容和时间后,才调用
schedule_post;发布时间必须是至少 10 分钟后的 UTC ISO-8601 时间。 - 每个平台都要单独撰写配文。一个创意,多种表达。遵循文档中的逐平台操作顺序(见上文“发布到多个平台”):先为主平台调用
create_post并填写该平台的配文,然后为其余每个平台分别调用一次update_post,填写对应平台的配文;整个过程中使用相同的post_id。 - 创建后逐个平台验证:读取
postey://posts/{id}/content/{platform}(如果你的客户端无法读取资源,则调用get_post_content),并逐个平台运行validate_post_content,然后修正问题再展示给用户。 - 每个工作流结束时,都要向用户提供草稿的分享链接。
- 为 Agent 创建的帖子添加标签:一个 Agent 标签(默认
Agent;只询问用户一次,看是否偏好其他名称),再加 2 或 3 个主题标签。add_tag会根据完全匹配的名称获取或创建标签,因此重复使用相同拼写不会创建重复项——跨会话保持标签名称一致,并复用近期帖子中显示的标签名称(get_posts会返回每个帖子的标签),不要另行创建相似标签。误加的标签可用remove_tag撤销。
包含于列出了承载各工作流的技能。如果某个工作流对应的套件尚未安装,则该工作流不可用——请说明这一点,并提供已安装套件中的工作流,而不要凭记忆临时编造流程。如果此表列出的套件不存在,CI(scripts/check-pack-discovery.js)会失败。
| 工作流 | 用户可能会这样说 | 包含于 | 加载 |
|---|---|---|---|
| 品牌语气 | “了解我的表达风格”“像我一样写”,或提供账号名、网站 | postey-voice | 该套件自己的工作流文件 |
| 视频全平台发布 | 提供视频 URL,或说“把这个视频发到所有平台” | postey-video | 该套件自己的工作流文件 |
| 趋势 | “我今天该发什么?”“找点热门内容” | postey-ideas | 该套件自己的工作流文件 |
| 从创意到帖子 | 提供一个粗略的创意,或说“把这个创意变成帖子” | postey-ideas | 该套件自己的工作流文件 |
创作层始终包含在这里,也就是中心套件中,因为每个工作流都会引用它——无论工作流本身位于何处:references/caption-playbook.md(通用规则和上传前检查清单)、references/platform-archetypes.md、references/post-structures.md(18 种结构,每种都说明了选择条件及其失效方式——选择形式、起草之前请先阅读)、references/hook-formulas.md、references/x-algorithm.md、references/thread-and-video-formats.md,以及 references/brand-profile-template.md(每个工作流在起草前都会读取的品牌资料模板结构)。
首次运行问候:验证账号后,用简短列表列出此安装实际具备的工作流,并执行用户选择的工作流。目标是两分钟内生成分享链接。
自动化指南
- 不要在多个账号间发布重复内容
- 不要发送未经请求的自动回复
- 不要操纵热门趋势或制造虚假互动
- 遵守 API 速率限制
- 除非用户在当前轮次明确同意,否则绝不发布或安排发布。 安排发布也算发布,因为定时帖子会自动发布。“现在发这条”表示先创建草稿并展示给用户——这只是表达了发布意图,并不代表用户同意发布他们尚未看过的文本。展示各平台的确切文案并等待确认。发布不可撤销且公开;草稿则是私密的。
提示
- 创建帖子串:单独一行使用
---,将内容拆分为多条帖子 - 安排发布:在 MCP
schedule_post中使用 ISO 8601 UTC 字符串——CLI 没有安排发布的标志 - 草稿标题:
video post中的--title用于内部整理,不会公开发布
参考
- MCP 工作流顺序、媒体/视频路径选择、标签,以及猜测前应询问的内容: references/mcp-workflows.md
- OAuth 范围、MCP 密钥路径和 Agent 令牌创建端点: references/mcp-authentication.md
- 连接服务本身——地址、各客户端注册方式、配置路径: https://raw.githubusercontent.com/posteyai/skills/main/setup.md
- 完整命令参考:command-reference.md
- 视频转录工作流:video-workflow.md
- 平台文案模板:prompts.md
- 路由规则(扩展版):routing-guide.md
- 内容流程和操作手册:references/(参见上文的“内容流程”)
- 用于基于 fetch 的安装的包清单:pack.json
- 一次粘贴即可完成 Agent 设置:bootstrap-prompt.md