Last used: 2026-03-25
Status: Active — PRIMARY for LinkedIn
Buffer Publisher
When to Use This / When NOT to Use This
Use Buffer when:
- - Publishing a post to LinkedIn (
nissandookeran) or Twitter/X (redditech) — immediately or scheduled - Queuing a post for Buffer's automatic optimal-time slot
- Any social publishing task from Liv or the content pipeline
Do NOT use Buffer for:
- - Bluesky — not connected, no tool available yet
- Drafting content — Buffer publishes, it doesn't draft. Write content first, then call this skill.
- Reading/analytics — Buffer GraphQL can query posts but that's out of scope here; check Buffer dashboard directly
- Any platform other than LinkedIn and Twitter/X
Only tool available: Typefully was cancelled 2026-03-25. Buffer is the single social publishing surface. There is no fallback.
Credentials
- - API key: INLINECODE2
- API base: INLINECODE3
- Auth header: INLINECODE4
Connected Channels
| Channel | ID | Service |
|---|
| nissandookeran | INLINECODE5 | LinkedIn |
| redditech |
69c29939af47dacb694d3d1f | Twitter/X |
Publish Immediately (shareNow)
CODEBLOCK0
Schedule a Post for a Specific Time
Use mode: "customScheduled" + a dueAt ISO8601 UTC timestamp. Do NOT use scheduledAt — that field does not exist on the Post type.
CODEBLOCK1
What Success Looks Like
A successful createPost response body looks like this:
CODEBLOCK2
- -
status: "sent" → published immediately (shareNow) - INLINECODE12 → queued or scheduled (will publish at
dueAt) - If
data.createPost is null or missing post, the mutation failed silently — check for a top-level errors array
Failure response example:
{
"errors": [
{
"message": "Value \"shareNOW\" does not exist in \"SchedulingType\" enum.",
"locations": [{"line": 1, "column": 42}]
}
],
"data": null
}
Key Schema Notes
- -
schedulingType enum: automatic | notification (NOT "now", NOT "shareNow") - INLINECODE21 enum:
addToQueue | shareNow | shareNext | customScheduled | INLINECODE26 - Use
automatic + shareNow for immediate publish - Use
automatic + customScheduled + dueAt for scheduled posts - INLINECODE32 field takes ISO8601 UTC datetime string (NOT
scheduledAt — that field doesn't exist on Post type) - Response type is a union — always use
... on PostActionSuccess fragment - INLINECODE35 does NOT exist in schema — omit error fragment or use other error types
- No
draft field in CreatePostInput — omit it
Get Connected Channels
CODEBLOCK4
Twitter/X Threads via Buffer
Buffer does not support native thread composition. Post as a single update with tweets separated by
\n\n---\n\n. If true threading is ever needed, evaluate alternative tools at that point.
Routing Rules
| Platform | Tool |
|---|
| LinkedIn | Buffer ✅ |
| Twitter/X |
Buffer ✅ |
| Bluesky | Not connected — skip unless new tool added |
Typefully cancelled 2026-03-25. No backup — Buffer is the only social publishing tool.
Common Mistakes
- 1. Wrong enum value for
schedulingType
- ❌
"schedulingType": "now" → enum error
- ❌
"schedulingType": "shareNow" → enum error (
shareNow is a
mode value, not a
schedulingType)
- ✅
"schedulingType": "automatic" (almost always what you want)
- 2. Using
scheduledAt instead of dueAt
- ❌
"scheduledAt": "2026-03-27T22:00:00Z" → field does not exist, silently ignored or errors
- ✅ INLINECODE49
- 3. Forgetting
Content-Type: application/json
- Returns
"Unsupported Content-Type" error
- Always include
-H "Content-Type: application/json" in curl calls
- 4. Using the legacy v1 API base URL
- ❌
https://api.bufferapp.com/1/ → returns 500, dead endpoint
- ✅ INLINECODE54
- 5. Including
CoreApiError in the error fragment
- This type does not exist in the schema. Omit it or you'll get a schema validation error.
- 6. Including
"draft": true in CreatePostInput
- This field doesn't exist. Buffer has no draft state via API — posts are either queued or live.
- 7. Timezone confusion with
dueAt
- Buffer expects UTC. Nissan is AEDT (UTC+11). Always convert: 9am Sydney = 10pm UTC prior day.
Troubleshooting
- -
"Unsupported Content-Type" → must use INLINECODE59 - INLINECODE60 → legacy v1 API is dead, use INLINECODE61
- INLINECODE62 → check enum values via introspection: INLINECODE63
最后使用时间: 2026-03-25
状态: 活跃 — LinkedIn 主要工具
Buffer 发布工具
何时使用 / 何时不使用
使用 Buffer 的场景:
- - 在 LinkedIn(nissandookeran)或 Twitter/X(redditech)上发布帖子 — 立即发布或定时发布
- 将帖子加入 Buffer 自动优化时段队列
- 来自 Liv 或内容管道的任何社交发布任务
请勿使用 Buffer 的场景:
- - Bluesky — 未连接,暂无可用工具
- 内容草稿 — Buffer 负责发布,不负责起草。请先撰写内容,再调用此技能。
- 阅读/分析 — Buffer GraphQL 可查询帖子,但超出本技能范围;请直接查看 Buffer 仪表盘
- 除 LinkedIn 和 Twitter/X 之外的任何平台
唯一可用工具: Typefully 已于 2026-03-25 取消。Buffer 是唯一的社交发布平台,无备用方案。
凭证信息
- - API 密钥:op://OpenClaw/Buffer API Credentials/credential
- API 基础地址:https://api.buffer.com/graphql
- 认证头:Authorization: Bearer
已连接频道
| 频道 | ID | 服务 |
|---|
| nissandookeran | 69c29382af47dacb694d24b4 | LinkedIn |
| redditech |
69c29939af47dacb694d3d1f | Twitter/X |
立即发布(shareNow)
python
import json, subprocess
BUFFER_KEY =
CHANNEL_ID = 69c29382af47dacb694d24b4 # LinkedIn
或 69c29939af47dacb694d3d1f # Twitter/X
payload = {
query: mutation CreatePost($input: CreatePostInput!) {
createPost(input: $input) {
... on PostActionSuccess { post { id status } }
}
},
variables: {
input: {
channelId: CHANNEL_ID,
text: 您的帖子内容在此,
schedulingType: automatic,
mode: shareNow
}
}
}
result = subprocess.run(
[curl, -s, -X, POST,
-H, fAuthorization: Bearer {BUFFER_KEY},
-H, Content-Type: application/json,
-d, json.dumps(payload),
https://api.buffer.com/graphql],
capture_output=True, text=True
)
d = json.loads(result.stdout)
post_id = d[data][createPost][post][id]
status = d[data][createPost][post][status]
print(f帖子 ID: {post_id}, 状态: {status})
status sent = 已立即发布
定时发布帖子
使用 mode: customScheduled + ISO8601 UTC 时间戳 dueAt。请勿使用 scheduledAt — Post 类型中不存在该字段。
python
import json, subprocess
from datetime import datetime, timezone
BUFFER_KEY =
CHANNEL_ID = 69c29382af47dacb694d24b4 # LinkedIn
设定为悉尼时间上午9点(AEDT UTC+11)= 前一天的 UTC 22:00
传递给 Buffer 前务必转换为 UTC
scheduled_utc = 2026-03-27T22:00:00Z # ISO8601 UTC — 必须包含 Z 后缀
payload = {
query: mutation CreatePost($input: CreatePostInput!) {
createPost(input: $input) {
... on PostActionSuccess { post { id status dueAt } }
}
},
variables: {
input: {
channelId: CHANNEL_ID,
text: 您的定时帖子内容在此,
schedulingType: automatic,
mode: customScheduled,
dueAt: scheduled_utc
}
}
}
result = subprocess.run(
[curl, -s, -X, POST,
-H, fAuthorization: Bearer {BUFFER_KEY},
-H, Content-Type: application/json,
-d, json.dumps(payload),
https://api.buffer.com/graphql],
capture_output=True, text=True
)
d = json.loads(result.stdout)
post = d[data][createPost][post]
print(f帖子 ID: {post[id]}, 状态: {post[status]}, 发布时间: {post[dueAt]})
status buffer = 已加入队列/已定时(尚未发送)
成功响应示例
成功的 createPost 响应体如下所示:
json
{
data: {
createPost: {
post: {
id: 67e3a1b2c4d5e6f7a8b9c0d1,
status: sent
}
}
}
}
- - status: sent → 已立即发布(shareNow)
- status: buffer → 已加入队列或已定时(将在 dueAt 时间发布)
- 如果 data.createPost 为 null 或缺少 post,则变更操作静默失败 — 请检查顶层的 errors 数组
失败响应示例:
json
{
errors: [
{
message: Value \shareNOW\ does not exist in \SchedulingType\ enum.,
locations: [{line: 1, column: 42}]
}
],
data: null
}
关键 Schema 说明
- - schedulingType 枚举值:automatic | notification(不是 now,也不是 shareNow)
- mode 枚举值:addToQueue | shareNow | shareNext | customScheduled | recommendedTime
- 立即发布使用 automatic + shareNow
- 定时发布使用 automatic + customScheduled + dueAt
- dueAt 字段接受 ISO8601 UTC 日期时间字符串(不是 scheduledAt — Post 类型中不存在该字段)
- 响应类型为联合类型 — 务必使用 ... on PostActionSuccess 片段
- Schema 中不存在 CoreApiError — 请省略错误片段或使用其他错误类型
- CreatePostInput 中没有 draft 字段 — 请省略
获取已连接频道
bash
curl -s -X POST \
-H Authorization: Bearer $BUFFER_KEY \
-H Content-Type: application/json \
-d {query: { account { id name email channels { id name service } } }} \
https://api.buffer.com/graphql
通过 Buffer 发布 Twitter/X 帖子串
Buffer 不支持原生帖子串编辑。请以单条更新形式发布,推文之间用 \n\n---\n\n 分隔。如果未来需要真正的帖子串功能,届时再评估替代工具。
路由规则
| 平台 | 工具 |
|---|
| LinkedIn | Buffer ✅ |
| Twitter/X |
Buffer ✅ |
| Bluesky | 未连接 — 除非添加新工具,否则跳过 |
Typefully 已于 2026-03-25 取消。无备用方案 — Buffer 是唯一的社交发布工具。
常见错误
- 1. schedulingType 枚举值错误
- ❌ schedulingType: now → 枚举错误
- ❌ schedulingType: shareNow → 枚举错误(shareNow 是 mode 值,不是 schedulingType)
- ✅ schedulingType: automatic(几乎总是您想要的)
- 2. 使用 scheduledAt 而非 dueAt
- ❌ scheduledAt: 2026-03-27T22:00:00Z → 字段不存在,静默忽略或报错
- ✅ dueAt: 2026-03-27T22:00:00Z
- 3. 忘记添加 Content-Type: application/json
- 返回 Unsupported Content-Type 错误
- 在 curl 调用中始终包含 -H Content-Type: application/json
- 4. 使用旧版 v1 API 基础地址