内容
# PostProxy MCP 服务器
PostProxy MCP(模型上下文协议)服务器,用于将 PostProxy API 与 Claude Code 集成。该服务器提供工具,用于发布帖子、检查状态和管理社交媒体配置文件,适用于 Claude Code。
## 安装
### 全局安装
```bash
npm install -g postproxy-mcp
```
### 本地安装
```bash
npm install postproxy-mcp
```
Claude Code 在 `~/.claude/plugins/` 下存储 MCP 服务器配置。安装 postproxy-mcp 后,Claude 将在重启时自动检测服务器。
## 配置
### 注册 MCP 服务器
安装 postproxy-mcp 后,使用 `claude mcp add` 命令将其注册到 Claude Code:
```bash
claude mcp add --transport stdio postproxy-mcp --env POSTPROXY_API_KEY=你的-api-key --env POSTPROXY_BASE_URL=https://api.postproxy.dev/api -- postproxy-mcp
```
将 `你的-api-key` 替换为实际的 PostProxy API 密钥。
配置将自动保存到 `~/.claude/plugins/`。运行此命令后:
1. 重启 Claude Code 会话
2. 通过询问 Claude:“检查我的 PostProxy 身份验证状态”来测试连接
3. 如果工具可用,Claude 将能够自动使用它们
### 替代:交互式设置
对于非技术用户,可以使用交互式设置命令:
```bash
postproxy-mcp setup
```
或
```bash
postproxy-mcp-setup
```
这将引导您逐步完成设置过程,并使用 `claude mcp add` 自动注册服务器。
## 可用工具
### 身份验证工具
#### `auth_status`
检查身份验证状态、API 配置和工作区信息。
**参数**:无
**返回**:
```json
{
"authenticated": true,
"base_url": "https://api.postproxy.dev/api",
"profile_groups_count": 2
}
```
### 配置文件管理
#### `profile_groups_list`
列出使用您的 API 密钥可访问的所有配置文件组。配置文件组是组织容器(例如按品牌或客户),包含相关配置文件。使用组的 `id` 按 `profile_group_id` 筛选 `profiles_list`。
**参数**:无
**返回**:
```json
{
"profile_groups": [
{
"id": "grp123abc",
"name": "主要品牌",
"profiles_count": 4
}
]
}
```
#### `profiles_list`
列出所有可用于发布的社交媒体配置文件。
**参数**:
- `profile_group_id` (字符串,可选):如果提供,则仅返回此组中的配置文件(使用 `profile_groups_list` 查找组 ID)
**返回**:
```json
{
"profiles": [
{
"id": "profile-123",
"name": "我的 Twitter 账户",
"platform": "twitter",
"profile_group_id": "group-abc"
}
]
}
```
#### `profiles_placements`
列出指定配置文件的可用投放位置。对于 Facebook 配置文件,投放位置是商业页面。对于 LinkedIn 配置文件,投放位置包括个人资料和组织。对于 Pinterest 配置文件,投放位置是板块。对于 Telegram 配置文件,投放位置是机器人可以发布的频道。
**参数**:
- `profile_id` (字符串,必填):配置文件哈希 ID
**返回** (LinkedIn 示例):
```json
{
"placements": [
{
"id": null,
"name": "个人资料"
},
{
"id": "108520199",
"name": "Acme 市场营销"
}
]
}
```
**注意**:
- 如果创建帖子时未指定投放位置:
- **LinkedIn**:默认为个人资料
- **Facebook**:默认为随机连接的页面(如果仅连接了一个页面,则无需设置投放 ID)
- **Pinterest**:失败
- **Telegram**:失败 — `chat_id` 在每个帖子上必填
#### `profiles_stats`
获取指定配置文件的关注者/参与度时间序列。快照大约每 23 小时捕获一次,因此您可以绘制关注者增长和其他趋势随时间的变化。`stats` 字段是平台原生的(未标准化)- 请参阅 `post_stats` 部分中的 `Stats Fields by Platform` 以获取形状和附加配置文件级别键(`followers_count`、`followersCount` 等)的详细信息。
**参数**:
- `profile_id` (字符串,必填):配置文件哈希 ID
- `placement_id` (字符串,有条件):**必填**,适用于 `facebook`、`linkedin` 和 `telegram` 配置文件。从 `profiles_placements` 获取它。对于 `instagram`、`threads`、`youtube`、`twitter`、`tiktok`、`pinterest` 和 `bluesky`,省略。
- `from` (字符串,可选):ISO 8601 时间戳 - 仅包括在此时间之后记录的快照
- `to` (字符串,可选):ISO 8601 时间戳 - 仅包括在此时间之前记录的快照
**返回** (LinkedIn 示例):
```json
{
"data": {
"profile_id": "prof_li_001",
"platform": "linkedin",
"placement_id": "108520199",
"records": [
{ "stats": { "followerCount": 4500, "shareCount": 8, "likeCount": 80 }, "recorded_at": "2026-05-09T08:00:00Z" },
{ "stats": { "followerCount": 4520, "shareCount": 9, "likeCount": 90 }, "recorded_at": "2026-05-10T08:00:00Z" }
]
}
}
```
对于非投放网络(例如 Bluesky),省略 `placement_id`:
```json
{
"data": {
"profile_id": "prof_bsky_001",
"platform": "bluesky",
"placement_id": null,
"records": [
{ "stats": { "followersCount": 8800, "postsCount": 40 }, "recorded_at": "2026-05-09T08:00:00Z" }
]
}
}
```
### 帖子管理
#### `post_publish`
将帖子发布到指定的社交媒体配置文件。
**参数**:
- `content` (字符串,必填):帖子内容文本
- `profiles` (字符串[],必填):配置文件 ID(哈希 ID)或平台名称数组(例如 `"linkedin"`、`"instagram"`、`"twitter"`)。使用平台名称时,发布到该平台的第一个连接配置文件。
- `schedule` (字符串,可选):ISO 8601 调度时间
- `media` (字符串[],可选):媒体 URL 或本地文件路径数组
- `idempotency_key` (字符串,可选):用于重复数据消除的幂等键
- `require_confirmation` (布尔值,可选):如果为 true,则返回摘要而不发布
- `draft` (布尔值,可选):如果为 true,则创建草稿帖子,草稿帖子不会自动发布
- `queue_id` (字符串,可选):要添加帖子的队列 ID。队列将自动分配时间段。不要与 `schedule` 一起使用。
- `queue_priority` (字符串,可选):添加到队列时的优先级:`high`、`medium`(默认)或 `low`
- `platforms` (对象,可选):平台特定参数。键是平台名称(例如 `"instagram"`、`"youtube"`、`"tiktok"`),值是具有平台特定选项的对象。有关完整文档,请参阅 [平台参数参考](https://postproxy.dev/reference/platform-parameters/)。
示例:
```json
{
"instagram": {
"format": "reel",
"collaborators": ["username1", "username2"],
"first_comment": "Link in bio!"
},
"youtube": {
"title": "我的视频标题",
"privacy_status": "public"
},
"tiktok": {
"privacy_status": "PUBLIC_TO_EVERYONE",
"auto_add_music": true
}
}
```
**返回**:
```json
{
"post_id": "job-123",
"accepted_at": "2024-01-01T12:00:00Z",
"status": "pending",
"draft": true
}
```
**草稿帖子说明**:如果您请求草稿帖子(`draft: true`)但 API 返回 `draft: false`,则可能在响应中包含一个 `warning` 字段,指示 API 可能已忽略草稿参数。这可能发生在 API 不支持某些参数(例如媒体附件)或特定条件下的草稿时。请在响应中检查 `warning` 字段以获取详细信息。
#### `post_status`
通过作业 ID 获取已发布的帖子的状态。
**参数**:
- `post_id` (字符串,必填):来自 `post.publish` 响应的帖子 ID
**返回**:
```json
{
"post_id": "job-123",
"overall_status": "complete",
"draft": false,
"status": "processed",
"platforms": [
{
"platform": "twitter",
"status": "published",
"url": "https://twitter.com/status/123",
"post_id": "123",
"error": null,
"attempted_at": "2024-01-01T12:00:00Z"
}
]
}
```
**状态值**:
- `overall_status`:`"draft"`、`"pending"`、`"processing"`、`"complete"`、`"failed"`
- 平台 `status`:`"pending"`、`"processing"`、`"published"`、`"failed"`、`"deleted"`
- 平台 `error`:如果发布失败,则为错误消息(如果成功则为 null)
#### `post_publish_draft`
发布草稿帖子。只有状态为 `draft: true` 的帖子才能使用此端点发布。
**参数**:
- `post_id` (字符串,必填):要发布的草稿帖子的帖子 ID
**返回**:
```json
{
"post_id": "job-123",
"status": "processed",
"draft": false,
"scheduled_at": null,
"created_at": "2024-01-01T12:00:00Z",
"message": "草稿帖子发布成功"
}
```
#### `post_delete`
通过作业 ID 删除帖子。
**参数**:
- `post_id` (字符串,必填):要删除的帖子 ID
**返回**:
```json
{
"post_id": "job-123",
"deleted": true
}
```
#### `post_stats`
获取一个或多个帖子的统计数据快照。返回所有匹配的快照,以便您可以查看随时间变化的趋势。支持按配置文件/网络和时间范围过滤。
**参数**:
- `post_ids` (字符串[],必填):帖子哈希 ID 数组(最多 50 个)
- `profiles` (字符串,可选):以逗号分隔的配置文件哈希 ID 或网络名称列表(例如 `instagram,twitter` 或 `abc123,def456` 或混合)
- `from` (字符串,可选):ISO 8601 时间戳 - 仅包括在此时间之后记录的快照
- `to` (字符串,可选):ISO 8601 时间戳 - 仅包括在此时间之前记录的快照
**返回**:
```json
{
"data": {
"abc123": {
"platforms": [
{
"profile_id": "prof_abc",
"platform": "instagram",
"records": [
{
"stats": {
"impressions": 1200,
"likes": 85,
"comments": 12,
"saved": 8
},
"recorded_at": "2026-02-20T12:00:00Z"
}
]
}
]
}
}
```
**按平台划分的统计字段**:
| 平台 | 字段 |
|----------|--------|
| Instagram | `impressions`、`likes`、`comments`、`saved`、`profile_visits`、`follows` |
| Facebook | `impressions`、`clicks`、`likes` |
| Threads | `impressions`、`likes`、`replies`、`reposts`、`quotes`、`shares` |
| Twitter | `impressions`、`likes`、`retweets`、`comments`、`quotes`、`saved` |
| YouTube | `impressions`、`likes`、`comments`、`saved` |
| LinkedIn | `impressions` |
| TikTok | `impressions`、`likes`、`comments`、`shares` |
| Pinterest | `impressions`、`likes`、`comments`、`saved`、`outbound_clicks` |
**注意**:Instagram 故事不返回统计数据。TikTok 统计数据需要帖子具有公共 ID。
### 队列管理
#### `queues_list`
列出所有发布队列。队列自动将帖子安排到循环的每周时间段,并按优先级排序。
**参数**:
- `profile_group_id` (字符串,可选):按配置文件组筛选队列
**返回**:
```json
{
"queues": [
{
"id": "q1abc",
"name": "晨间帖子",
"description": "每日晨间内容",
"timezone": "America/New_York",
"enabled": true,
"jitter": 10,
"profile_group_id": "pg123",
"timeslots": ["Monday at 09:00 (id: 1)", "Wednesday at 09:00 (id: 2)"],
"posts_count": 5
}
]
}
```
#### `queues_get`
获取单个发布队列的详细信息,包括其时间段和帖子数量。
**参数**:
- `queue_id` (字符串,必填):队列 ID
#### `queues_create`
创建具有每周时间段的新发布队列。
**参数**:
- `profile_group_id` (字符串,必填):连接到队列的配置文件组 ID(使用 `profiles_list` 查找此)
- `name` (字符串,必填):队列名称
- `description` (字符串,可选):可选描述
- `timezone` (字符串,可选):IANA 时区名称(例如 `America/New_York`)。默认值:`UTC`
- `jitter` (数字,可选):分钟的随机偏移量(0–60)应用于计划时间段以实现自然发布模式。默认值:`0`
- `timeslots` (数组,可选):初始每周时间段。每个对象具有 `day`(0=星期日到 6=星期六)和 `time`(24小时 `HH:MM` 格式)
**示例**:
```json
{
"profile_group_id": "pg123",
"name": "工作日晨间",
"timezone": "America/New_York",
"jitter": 10,
"timeslots": [
{ "day": 1, "time": "09:00" },
{ "day": 2, "time": "09:00" },
{ "day": 3, "time": "09:00" },
{ "day": 4, "time": "09:00" },
{ "day": [ "09:00" }
]
}
```
#### `queues_update`
更新队列的设置、时间段或暂停/恢复。更改时区或时间段会触发重新排列所有排队的帖子。
**参数**:
- `queue_id` (字符串,必填):要更新的队列 ID
- `name` (字符串,可选):新的队列名称
- `description` (字符串,可选):新的描述
- `timezone` (字符串,可选):IANA 时区名称
- `enabled` (布尔值,可选):设置为 `false` 暂停队列,`true` 恢复
- `jitter` (数字,可选):分钟的随机偏移量(0–60)
- `timeslots` (数组,可选):要添加或删除的时间段。添加: `{ "day": 1, "time": "09:00" }`。删除: `{ "id": 42, "_destroy": true }`。
#### `queues_delete`
删除发布队列。队列中的帖子将删除其队列引用,但不会被删除。
**参数**:
- `queue_id` (字符串,必填):要删除的队列 ID
#### `queues_next_slot`
获取队列的下一个可用时间段。
**参数**:
- `queue_id` (字符串,必填):队列 ID
**返回**:
```json
{
"next_slot": "2026-03-11T14:00:00Z"
}
```
#### 添加帖子到队列
使用 `post_publish` 发布帖子时,您可以将帖子添加到队列中,而不是手动安排:
- `queue_id` (字符串,可选):要添加帖子的队列 ID。队列将自动分配时间段。不要与 `schedule` 一起使用。
- `queue_priority` (字符串,可选):优先级级别:`high`、`medium`(默认)或 `low`。优先级较高的帖子会获得较早的时间段。
**示例**:
```json
{
"content": "排队帖子内容",
"profiles": ["twitter", "linkedin"],
"queue_id": "q1abc",
"queue_priority": "high"
}
```
### 评论管理
#### `comments_list`
列出已发布的帖子的评论。返回分页的顶级评论,并带有嵌套的回复。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `profile_id` (字符串,必填):配置文件 ID,用于识别要检索哪个平台的评论
- `page` (数字,可选):页面编号,零索引(默认值:0)
- `per_page` (数字,可选):每页顶级评论数量(默认值:20)
**返回**:
```json
{
"total": 42,
"page": 0,
"per_page": 20,
"data": [
{
"id": "cmt_abc123",
"external_id": "17858893269123456",
"body": "很好的帖子!",
"status": "synced",
"author_username": "someuser",
"like_count": 3,
"is_hidden": false,
"posted_at": "2026-03-25T10:00:00.000Z",
"replies": [
{
"id": "cmt_def456",
"body": "谢谢!",
"author_username": "author",
"parent_external_id": "17858893269123456"
}
]
}
]
}
```
评论对象还可能包含一个 `attachments` 数组(评论中的媒体 - `image`、`video`、`audio`、`gif`、`external`、`file`),每个都有 `id`、`type`、`url`、`status` 和 `external_id`。对于 Facebook、Threads 和 Bluesky 来说是填充的;Instagram、YouTube 和 LinkedIn 评论仅限文本。数组为空时,表示没有媒体。
#### `comments_get`
获取单个评论及其回复。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `comment_id` (字符串,必填):评论 ID(Postproxy ID 或平台外部 ID)
- `profile_id` (字符串,必填):配置文件 ID
#### `comments_create`
在已发布的帖子上创建评论或回复。评论异步发布到平台。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `profile_id` (字符串,必填):配置文件 ID
- `text` (字符串,必填):评论文本内容
- `parent_id` (字符串,可选):要回复的评论 ID(Postproxy ID 或外部 ID)。省略以评论帖子本身。
**返回**:
```json
{
"id": "cmt_ghi789",
"body": "感谢大家的反馈!",
"status": "pending",
"external_id": null
}
```
评论创建状态为 `status: "pending"`。发布到平台后,它变为 `"published"`。如果发布失败,它变为 `"failed"`。
#### `comments_delete`
从平台异步删除评论。在 Instagram、Facebook、YouTube 和 LinkedIn 上支持。Threads 上不支持。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `comment_id` (字符串,必填):评论 ID(Postproxy ID 或外部 ID)
- `profile_id` (字符串,必填):配置文件 ID
#### `comments_hide`
在平台上异步隐藏评论。在 Instagram、Facebook 和 Threads 上支持。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `comment_id` (字符串,必填):评论 ID
- `profile_id` (字符串,必填):配置文件 ID
#### `comments_unhide`
取消隐藏以前隐藏的评论。在 Instagram、Facebook 和 Threads 上支持。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `comment_id` (字符串,必填):评论 ID
- `profile_id` (字符串,必填):配置文件 ID
#### `comments_like`
在平台上异步点赞评论。目前仅支持 Facebook。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `comment_id` (字符串,必填):评论 ID
- `profile_id` (字符串,必填):配置文件 ID
#### `comments_unlike`
取消对评论的点赞。目前仅支持 Facebook。
**参数**:
- `post_id` (字符串,必填):帖子 ID
- `comment_id` (字符串,必填):评论 ID
- `profile_id` (字符串,必填):配置文件 ID
#### 平台支持
| 操作 | Instagram | Facebook | Threads | YouTube | LinkedIn |
|--------|-----------|----------|---------|---------|----------|
| 列表 | 是 | 是 | 是 | 是 | 是 |
| 回复 | 是 | 是 | 是 | 是 | 是 |
| 删除 | 是 | 是 | 否 | 是 | 是 |
| 隐藏/取消隐藏 | 是 | 是 | 是 | 否 | 否 |
| 点赞/取消点赞 | 否 | 是 | 否 | 否 | 否 |
### 直接消息
1:1 消息(聊天和消息)在支持直接消息的个人资料上。支持 Facebook(Messenger)、Instagram(直接消息)、Telegram(机器人直接消息)和 Bluesky。 outbound 消息异步处理(返回 `status: "pending"`)。 Meta 的 24 小时消息窗口适用于 Facebook/Instagram — 传 `tag: "HUMAN_AGENT"` 以在窗口外发送;Telegram 和 Bluesky 没有窗口。
#### `dm_chats_list`
列出个人资料的聊天,按最近的活动排序。
**参数**:
- `profile_id`(字符串,必填):个人资料 ID(Facebook、Instagram、Telegram 或 Bluesky)
- `page`(数字,可选):页面编号,从 0 开始索引(默认:0)
- `per_page`(数字,可选):每页项目数(默认:20)
- `before` / `after`(字符串,可选):`last_message_at` 的 ISO 8601 时间戳筛选
#### `dm_chat_create`
为参与者查找或创建聊天(幂等 - 如果存在,返回现有聊天)。在个人资料尚未与参与者消息之前使用。
**参数**:
- `profile_id`(字符串,必填):个人资料 ID
- `participant_external_id`(字符串,必填):平台参与者 ID(IG 范围的用户 ID、Facebook PSID、Telegram 用户 ID 或 Bluesky DID)
- `participant_username`(字符串,可选)
- `participant_name`(字符串,可选)
#### `dm_chat_get`
通过 Postproxy ID 或平台 `external_conversation_id` 获取单个聊天。
**参数**:
- `chat_id`(字符串,必填):聊天 ID 或外部对话 ID
#### `dm_messages_list`
列出聊天中的消息,最近的消息优先。
**参数**:
- `chat_id`(字符串,必填):聊天 ID 或外部对话 ID
- `page`(数字,可选):页面编号,从 0 开始索引(默认:0)
- `per_page`(数字,可选):每页项目数(默认:20)
- `direction`(字符串,可选):`inbound` 或 `outbound`
- `status`(字符串,可选):按消息状态筛选
#### `dm_message_send`
发送 outbound 消息。提供 **either** `body`(文本) **or** `media`(单个附件),不能同时提供两者。
**参数**:
- `chat_id`(字符串,必填):聊天 ID 或外部对话 ID
- `body`(字符串,可选):消息文本(当 `media` 为空时必填)
- `media`(字符串[],可选):最多一个附件的 URL 或本地文件路径。Bluesky 不支持。(远程/Worker MCP 仅接受 URL。)
- `tag`(字符串,可选):`HUMAN_AGENT` 在 24 小时窗口外发送(仅限 Facebook/Instagram)
- `reply_to_external_id`(字符串,可选):**仅限 Telegram** — message_id 以线程回复
- `reply_markup`(对象,可选):**仅限 Telegram** — 内联/回复键盘有效载荷
#### `dm_message_get`
通过 Postproxy ID 或平台 `external_id` 获取单个消息。
**参数**:
- `message_id`(字符串,必填):消息 ID 或外部 ID
#### `dm_message_edit`
编辑以前发送的 outbound 消息。**仅限 Telegram**。提供 `body` 和/或 `reply_markup`(传递 `{}` 以清除键盘);至少需要一个。
**参数**:
- `message_id`(字符串,必填):消息 ID 或外部 ID
- `body`(字符串,可选):新文本/标题
- `reply_markup`(对象,可选):新键盘(或 `{}` 以删除)
#### `dm_message_react` / `dm_message_unreact`
在消息上添加或删除您的商业账户的反应。**仅限 Facebook Messenger 和 Instagram Direct**。
**参数**(`dm_message_react`):
- `message_id`(字符串,必填):消息 ID 或外部 ID
- `reaction`(字符串,可选):命名反应(默认 `love`)
- `emoji`(字符串,可选):Unicode 表情符号
**参数**(`dm_message_unreact`):
- `message_id`(字符串,必填)
#### `dm_chat_archive` / `dm_chat_unarchive`
归档(静音)或取消归档(取消静音)聊天。**仅限 Bluesky**。返回带有 `archived` 设置的聊天。
**参数**:
- `chat_id`(字符串,必填):聊天 ID 或外部对话 ID
#### `dm_comment_private_reply`
向评论的作者发送直接消息,以回复该评论(Meta “私人回复”)。绕过 24 小时窗口(评论最多 7 天旧)并自动创建/重用聊天。每个评论仅限一条私人回复。**仅限 Instagram 和 Facebook**。
**参数**:
- `post_id`(字符串,必填):帖子 ID
- `comment_id`(字符串,必填):评论 ID 或外部 ID
- `profile_id`(字符串,必填):个人资料 ID(Instagram 或 Facebook)
- `text`(字符串,必填):直接消息文本
#### 平台支持
| 操作 | Facebook | Instagram | Telegram | Bluesky |
|--------|----------|-----------|----------|---------|
| 列表/发送/获取 | 是 | 是 | 是 | 是 |
| 媒体附件 | 是 | 是 | 是 | 否 |
| 编辑消息 | 否 | 否 | 是 | 否 |
| 反应/取消反应 | 是 | 是 | 否 | 否 |
| 归档/取消归档 | 否 | 否 | 否 | 是 |
| 私人回复评论 | 是 | 是 | 否 | 否 |
| `tag`(24 小时窗口) | 是 | 是 | n/a | n/a |
| `reply_to_external_id` / `reply_markup` | 否 | 否 | 是 | 否 |
### 历史
#### `history_list`
列出最近的帖子作业。
**参数**:
- `limit`(数字,可选):要返回的最大作业数(默认:10)
**返回**:
```json
{
"jobs": [
{
"post_id": "job-123",
"content_preview": "帖子内容预览...",
"created_at": "2024-01-01T12:00:00Z",
"overall_status": "complete",
"draft": false,
"platforms_count": 2
}
]
}
```
## 示例提示
以下是您可以使用 Claude Code 的一些示例提示。
### 检查身份验证
```
检查我的 PostProxy 身份验证状态
```
### 列出个人资料
```
显示我所有可用的社交媒体个人资料
```
### 发布帖子
使用个人资料 ID:
```
发布此帖子:“检查我们的新产品!”到个人资料 ["profile-123"]
```
使用平台名称:
```
在 linkedin 和 twitter 上发布“激动人心的消息!”
```
### 发布带有平台参数的帖子
您可以使用平台特定参数为每个平台自定义帖子。`platforms` 参数接受一个对象,其中键是平台名称,值包含平台特定选项。
#### Instagram 示例
**带有协作者的常规帖子:**
```
在 Instagram 上发布:“惊人的内容!”到我的 Instagram 账户,与用户名1 和用户名2 协作者
```
或使用显式参数:
```json
{
"content": "惊人的内容!",
"profiles": ["instagram"],
"media": ["https://example.com/image.jpg"],
"platforms": {
"instagram": {
"format": "post",
"collaborators": ["username1", "username2"],
"first_comment": "你觉得怎么样? 🔥"
}
}
}
```
**Instagram 短片:**
```json
{
"content": "查看这个短片!#viral",
"profiles": ["instagram"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"instagram": {
"format": "reel",
"collaborators": ["collaborator_username"],
"cover_url": "https://example.com/thumbnail.jpg",
"audio_name": "流行音频",
"first_comment": "链接在简介中!"
}
}
}
```
**Instagram 故事:**
```json
{
"profiles": ["instagram"],
"media": ["https://example.com/story-image.jpg"],
"platforms": {
"instagram": {
"format": "story"
}
}
}
```
#### YouTube 示例
**带有标题和隐私的 YouTube 视频:**
```
将此视频上传到 YouTube,标题为“我的教程”,并设为公开
```
或使用显式参数:
```json
{
"content": "这是包含链接和详细信息的视频描述",
"profiles": ["youtube"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"youtube": {
"title": "我的教程:如何构建 API",
"privacy_status": "public",
"cover_url": "https://example.com/custom-thumbnail.jpg"
}
}
}
```
**未列出的 YouTube 视频:**
```json
{
"content": "视频描述",
"profiles": ["youtube"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"youtube": {
"title": "私人教程",
"privacy_status": "unlisted"
}
}
}
```
#### TikTok 示例
**公共 TikTok 带有自动音乐:**
```json
{
"content": "查看这个!#fyp",
"profiles": ["tiktok"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"tiktok": {
"privacy_status": "PUBLIC_TO_EVERYONE",
"auto_add_music": true,
"disable_comment": false,
"disable_duet": false,
"disable_stitch": false
}
}
}
```
**仅限 TikTok关注者 的 AI 标签:**
```json
{
"content": "关注者的专属内容",
"profiles": ["tiktok"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"tiktok": {
"privacy_status": "FOLLOWER_OF_CREATOR",
"made_with_ai": true,
"brand_content_toggle": false
}
}
}
```
#### Facebook 示例
**带有第一个评论的 Facebook 帖子:**
```json
{
"content": "查看我们的新产品!",
"profiles": ["facebook"],
"media": ["https://example.com/product.jpg"],
"platforms": {
"facebook": {
"format": "post",
"first_comment": "购买链接:https://example.com/shop"
}
}
}
```
**Facebook 故事:**
```json
{
"profiles": ["facebook"],
"media": ["https://example.com/story-video.mp4"],
"platforms": {
"facebook": {
"format": "story"
}
}
}
```
**Facebook 页面帖子:**
```json
{
"content": "公司公告",
"profiles": ["facebook"],
"platforms": {
"facebook": {
"page_id": "123456789",
"first_comment": "访问我们的网站以获取更多详细信息"
}
}
}
```
#### LinkedIn 示例
**个人 LinkedIn 帖子:**
```json
{
"content": "很高兴分享我的最新文章关于 AI",
"profiles": ["linkedin"],
"media": ["https://example.com/article-cover.jpg"]
}
```
**公司 LinkedIn 帖子:**
```json
{
"content": "我们正在招聘!加入我们的团队",
"profiles": ["linkedin"],
"media": ["https://example.com/careers.jpg"],
"platforms": {
"linkedin": {
"organization_id": "company-id-12345"
}
}
}
```
#### Bluesky 示例
**普通 Bluesky 帖子(自动分面提及/标签/链接):**
```json
{
"content": "嘿 @jay.bsky.team — 查看我们的最新 #ruby 帖子:https://example.com/blog/post",
"profiles": ["bluesky"]
}
```
您不需要任何标记 — Postproxy 自动将 `@handles`、 `#tags` 和 URL 转换为 AT 协议分面,并从 URL 的开放图形元数据生成链接卡预览(当没有附件时)。 300 个字形限制。
#### Telegram 示例
**Telegram 频道帖子(HTML 格式化):**
```json
{
"content": "<b>新版本</b> — 在我们的博客上阅读更多 https://example.com/post",
"profiles": ["telegram"],
"platforms": {
"telegram": {
"chat_id": "-1001234567890",
"parse_mode": "HTML",
"disable_link_preview": true,
"disable_notification": false
}
}
}
```
使用 `profiles_placements` 针对您的 Telegram 个人资料列出频道 `chat_id`。 机器人必须作为管理员(具有发布权限)添加到频道。
#### 跨平台示例
**相同内容,不同平台:**
```json
{
"content": "新产品发布! 🚀",
"profiles": ["instagram", "twitter", "linkedin"],
"media": ["https://example.com/product.jpg"]
}
```
**视频跨平台及特定参数:**
```json
{
"content": "产品发布视频",
"profiles": ["instagram", "youtube", "tiktok"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"instagram": {
"format": "reel",
"first_comment": "链接在简介中!"
},
"youtube": {
"title": "产品发布 2024",
"privacy_status": "public",
"cover_url": "https://example.com/yt-thumbnail.jpg"
},
"tiktok": {
"privacy_status": "PUBLIC_TO_EVERYONE",
"auto_add_music": true
}
}
}
```
#### 平台参数参考
**Instagram:**
- `format`: "post" | "reel" | "story"
- `collaborators`: 用户名数组(最多 10 个用于帖子,3 个用于短片)
- `first_comment`: 字符串 - 发布后添加的评论
- `cover_url`: 字符串 - 短片的缩略图 URL
- `audio_name`: 字符串 - 短片的音频轨道名称
- `trial_strategy`: "MANUAL" | "SS_PERFORMANCE" - 短片的试验策略
- `thumb_offset`: 字符串 - 短片的缩略图偏移量(毫秒)
**YouTube:**
- `title`: 字符串 - 视频标题
- `privacy_status`: "public" | "unlisted" | "private"
- `cover_url`: 字符串 - 自定义缩略图 URL
**TikTok:**
- `privacy_status`: "PUBLIC_TO_EVERYONE" | "MUTUAL_FOLLOW_FRIENDS" | "FOLLOWER_OF_CREATOR" | "SELF_ONLY"
- `photo_cover_index`: 整数 - 用作封面的照片索引(基于 0)
- `auto_add_music`: 布尔值 - 启用自动音乐
- `made_with_ai`: 布尔值 - 标记内容为 AI 生成
- `disable_comment`: 布尔值 - 禁用评论
- `disable_duet`: 布尔值 - 禁用二重唱
- `disable_stitch`: 布尔值 - 禁用拼接
- `brand_content_toggle`: 布尔值 - 标记为付费合作伙伴(第三方)
- `brand_organic_toggle`: 布尔值 - 标记为付费合作伙伴(自有品牌)
**Facebook:**
- `format`: "post" | "story"
- `first_comment`: 字符串 - 发布后添加的评论
- `page_id`: 字符串 - 用于发布到公司页面的页面 ID
**LinkedIn:**
- `organization_id`: 字符串 - 公司页面的组织 ID
**Telegram:**
- `chat_id`: 字符串,**必填** - 目标频道/聊天 ID(使用 `profiles_placements` 列出)
- `parse_mode`: "HTML" | "MarkdownV2" - 默认为纯文本
- `disable_link_preview`: 布尔值 - 抑制 URL 预览卡
- `disable_notification`: 布尔值 - 静默发送(无通知声音)
- 字符限制:文本最多 4,096 个字符;媒体附件最多 1,024 个字符(正文超出部分将被截断)
- 媒体:图像 ≤10 MB(×10),视频 ≤50 MB(×10),文档 ≤50 MB(×1)
- 机器人必须是目标频道的成员(最好是具有发布权限的管理员)
**Bluesky:**
- 无平台特定参数
- 字符限制:300 个字形(表情符号和组合序列计为 1)
- 自动检测 `@handle.bsky.social` 提及、 `#hashtags` 和 URL,并将它们转换为可点击的分面
- 当存在 URL 且无附件时,从开放图形元数据生成链接卡预览
- 媒体:图像 ≤1 MB(×4),视频 ≤100 MB(×1, 1–60 秒)
- 支持通过标准 `thread` 数组进行线程处理
**Twitter/X & Threads:**
- 无平台特定参数
如需完整文档,请参阅 [平台参数参考](https://postproxy.dev/reference/platform-parameters/)。
### 创建草稿帖
```
创建一个草稿帖子: “在发布前请审阅” 到 linkedin
```
### 发布草稿帖
```
发布草稿帖子 job-123
```
### 检查帖子状态
```
job-123 帖子的状态是什么?
```
这将显示包括草稿状态、平台特定错误和发布结果在内的详细状态。
### 删除帖子
```
删除帖子 job-123
```
### 获取帖子统计数据
```
显示帖子 abc123 的统计数据
```
```
获取帖子 abc123 和 def456 的统计数据,筛选到仅限 Instagram,从 2 月 1 日到今天
```
### 列出投放位置
```
显示我的 LinkedIn 个人资料 prof123 的投放位置
```
### 队列管理
```
显示我所有的发布队列
```
```
为个人资料组 pg123、时区 America/New_York 创建一个名为 “Weekday Mornings” 的队列,每周一至周五 9am 有时间段
```
```
将帖子添加到队列 q1abc,优先级为高: “查看我们的最新功能!”
```
```
暂停队列 q1abc
```
```
队列 q1abc 的下一个可用时间段是什么?
```
### 评论管理
```
显示我的 Instagram 个人资料 prof456 上的帖子 abc123 的评论
```
```
使用个人资料 prof456 回复评论 cmt_abc123 在帖子 abc123 上,内容为 “感谢您的反馈!”
```
```
在帖子 abc123 上隐藏评论 cmt_abc123,适用于个人资料 prof456
```
### 直接消息
```
列出我的 Instagram 个人资料 prof456 的直接消息聊天
```
```
在聊天 chat_xyz789 中回复 “是的,我们提供全球发货服务!”
```
```
从个人资料 prof456 向帖子 abc123 的评论作者 cmt_abc123 发送直接消息,内容为 “我将通过直接消息发送给您详细信息”
```
### 查看历史
```
显示我最近发布的 5 篇帖子
```
## 故障排除
### 服务器无法启动
- **检查 API 密钥**:确保在注册 `claude mcp add` 时设置了 `POSTPROXY_API_KEY`
- **检查 Node 版本**:需要 Node.js >= 18.0.0
- **检查安装**:验证 `postproxy-mcp` 是否已安装并在 PATH 中
- **检查注册**:确保服务器已通过 `claude mcp add` 注册并保存了配置在 `~/.claude/plugins/`
### 身份验证错误
- **AUTH_MISSING**:未配置 API 密钥。确保您在运行 `claude mcp add` 时包含了 `--env POSTPROXY_API_KEY=...`
- **AUTH_INVALID**:API 密钥无效。验证您的 API 密钥是否正确。
### 验证错误
- **TARGET_NOT_FOUND**:一个或多个个人资料 ID 不存在。使用 `profiles_list` 查看可用的个人资料。
- **VALIDATION_ERROR**:帖子内容或参数无效。API 现在返回详细的错误消息:
- **400 错误**:`{"status":400,"error":"Bad Request","message":"..."}`
- **422 错误**:`{"errors": ["Error 1", "Error 2"]}` - 验证错误消息数组
- 检查错误消息以获取特定的验证问题
### API 错误
- **API_ERROR**:PostProxy API 返回了错误。检查错误消息以获取详细信息。
- **Timeout**: 请求时间过长。检查您的网络连接和 API 状态。
### 平台错误
在通过 `post_status` 检查帖子状态时,平台特定错误现在可在每个平台对象的 `error` 字段中找到:
- `error: null` - 帖子发布成功
- `error: "Error message"` - 平台 API 的详细错误消息
- 常见错误包括身份验证问题、速率限制、内容违规等。
### 草稿帖问题
如果你创建了一个草稿帖子(`draft: true`),响应中收到 `draft: false`:
- 响应中将包含一个 字段,解释 API 可能已忽略了草稿参数
-发生在:
- API 不支持带有媒体附件的草稿
- API 在某些条件下对草稿帖子有特定的限制
- 检查响应中的 `warning` 字段以获取详细信息
- 启用调试模式(`POSTPROXY_MCP_DEBUG=1`)以查看关于草稿参数处理的详细日志记录
### 调试模式
在注册服务器时 `POSTPROXY_DEBUG=1` 来启用调试日志记录:
```bash
claude mcp add --transport stdio postproxy-mcp --env POSTPROXY_API_KEY-api-key --env POSTPROXY_BASE_URL=https://api.postproxy --env POSTPROXY_MCP_DEBUG=1 -- postproxy-mcp
```
### 从源码构建
```bash
git clone https://github.com/postproxy/postproxy-mcp
cd postproxy-mcp
npm install
npm run build
```
### 在开发模式下运行
```bash
npm run dev## 许可证
MIT
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器