从零开始:为飞书 Agent 接入 Moltbook 社交平台完整踩坑实录
作者:海风 | 环境:阿里云 ECS + OpenClaw + 飞书 | 日期:2026年3月23日
前言
我的飞书 Agent(多多助理)已经具备了金融数据查询(TuShare)、联网搜索(SearXNG + Jina Reader)、Notion 读写等能力。但这些都是「被动技能」——用户问一句,Agent 答一句。
我一直想让 Agent 拥有自主社交能力:能在 AI 社区里发帖、回帖、交友,像一个有独立人格的数字角色一样运作。当我发现 Moltbook——一个专为 AI Agent 设计的社交平台(类似 Agent 版 Reddit)——我决定动手接入。
但过程远比想象中曲折:ECS 访问不了境外服务、Windows PowerShell 语法不兼容、claim_url 被截断找不回来、Cloudflare Workers 域名也被墙……一个「注册 → 认领 → 反代 → 配置」的流程,硬是折腾了大半天。
本文完整记录了这段从诊断网络问题到 Agent 成功在 Moltbook 上社交的全过程,希望能帮后来者少走弯路。
一、环境背景
| 项目 | 配置 |
|---|---|
| 服务器 | 阿里云 ECS(国内节点) |
| 操作系统 | AliOS(CentOS 系) |
| OpenClaw 版本 | 2026.3.x(npm 全局安装) |
| AI 模型 | dashscope/qwen3.5-plus |
| 前端渠道 | 飞书自建 Agent |
| 目标平台 | Moltbook(AI Agent 社交网络) |
| 本地操作系统 | Windows(PowerShell) |
二、整体流程概览
整个部署分为 五个阶段,每个阶段都遇到了不同的坑:
graph TD
A["1. 网络诊断"] --> B["2. 本地注册"]
B --> C["3. Claim 认领"]
C --> D["4. Cloudflare 反代"]
D --> E["5. Agent 配置"]
A1["ECS 无法访问 moltbook.com"] -.-> A
B1["PowerShell 语法踩坑"] -.-> B
C1["claim_url 被截断"] -.-> C
D1["workers.dev 也被墙"] -.-> D
E1["SOUL.md 重复写入"] -.-> E
style A fill:#ffcccc
style B fill:#ffe0cc
style C fill:#ffffcc
style D fill:#ccffcc
style E fill:#cce0ff
三、网络诊断:ECS 为什么连不上 Moltbook?
3.1 问题发现
Agent 尝试访问 moltbook.com 时,所有请求方式(curl、Python urllib、web_fetch)全部超时。初步判断问题出在网络连通性,而非代码逻辑。
3.2 诊断过程
在 ECS 上依次执行排查命令:
# 测试 TCP 连通性
telnet www.moltbook.com 443
# 结果:Trying xxx.xxx.xxx.xxx... Connection timed out
# 详细连接信息
curl -v --connect-timeout 5 <https://www.moltbook.com>
# 结果:Connection timed out after 5000 milliseconds
# IPv6: 2a03:2880:... Network is unreachable
# 查看 IP 归属
dig www.moltbook.com +short
# 结果:-bash: dig: command not found(服务器没装 dig)
3.3 诊断结论
| 维度 | 结果 | 说明 |
|---|---|---|
| IPv4 | 解析到境外 IP | TCP 443 端口连接超时 |
| IPv6 | 2a03:2880:... 欧洲 RIPE 地址段 | ECS 无 IPv6 出口,Network is unreachable |
| 根因 | 跨境网络不通 | 阿里云国内 ECS → 境外 443 端口超时 |
结论:Moltbook 服务器在境外,阿里云国内 ECS 直连不通。注册是一次性操作,可以在本地电脑完成;但 Agent 日后要持续调用 API,必须搭反向代理。
四、本地注册:PowerShell 的坑
4.1 第一个坑:PowerShell 不是 Linux 终端
既然 ECS 连不上 Moltbook,那就在本地 Windows 电脑上手动注册。但直接复制 Linux 风格的 curl 命令会报错——因为 PowerShell 的 curl 是 Invoke-WebRequest 的别名,语法完全不同。
正确的 PowerShell 写法:
Invoke-WebRequest -Uri "<https://www.moltbook.com/api/v1/agents/register>" `
-Method POST `
-ContentType "application/json" `
-Body '{"name": "<你的Agent名>", "description": "<你的Agent描述>"}'
如果弹出安全证书提示,输入 Y 回车即可。
4.2 注册成功
注册返回的关键信息:
| 字段 | 值 |
|---|---|
| Agent ID | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| Agent Name | 你注册时填的名字 |
| API Key | moltbook_sk_xxxx...xxxx(务必妥善保存!) |
| claim_url | 被 PowerShell 截断了!(只显示 "htt...") |
4.3 第二个坑:PowerShell 输出截断
PowerShell 默认会将过长的内容省略显示。想看完整 JSON,需要用 $response.Content:
$response = Invoke-WebRequest -Uri "<https://www.moltbook.com/api/v1/agents/register>" ...
$response.Content
但如果已经注册过了,再跑会报 409 Conflict(Agent name already taken)。
4.4 找回 claim_url
通过 /agents/status 接口,用 API Key 查询 Agent 状态,成功拿回了完整的 claim_url:
Invoke-WebRequest -Uri "<https://www.moltbook.com/api/v1/agents/status>" `
-Headers @{"Authorization"="Bearer <你的API Key>"} `
| Select-Object -ExpandProperty Content
返回:
{
"success": true,
"status": "pending_claim",
"claim_url": "<https://www.moltbook.com/claim/moltbook_claim_><你的claim令牌>",
"next_step": "Send the claim_url to your human owner to verify ownership"
}
经验教训:在 PowerShell 中执行 API 调用后,务必用 $response.Content 或 Select-Object -ExpandProperty Content 查看完整输出,不要依赖默认的截断显示。
五、Claim 认领:三步验证
5.1 认领流程
在浏览器中打开 claim_url,按照 Moltbook 的三步认领流程操作:
| 步骤 | 操作 | 说明 |
|---|---|---|
| Step 1 | 输入邮箱,收验证邮件 | 这会成为你在 Moltbook 的 Owner 账户 |
| Step 2 | 连接 X(Twitter)账户 | 设置人类 Owner 的 Username |
| Step 3 | 发一条包含验证码的推文 | 证明你是 Agent 的主人 |
5.2 推特验证
Step 3 要求在 X 上发一条包含系统生成的验证码的推文,格式类似:
Claiming my AI agent on Moltbook! <验证码> 🦞
发完推文后,回到 Moltbook 页面点 "Verify My Tweet",系统会自动搜索你最近的推文进行验证。
5.3 认领完成
认领成功后,/agents/me 接口会返回 "is_claimed": true,你的 Agent 就正式激活了。
六、Cloudflare 反代:解决 ECS 网络问题
注册和认领都在本地电脑完成了,但 Agent 日常要在 Moltbook 上发帖、评论,请求必须从 ECS 发出。所以必须搭反向代理。
6.1 方案选择
| 方案 | 成本 | 优缺点 |
|---|---|---|
| HTTP 代理(VPS) | ¥24+/月 | 稳定,但有月费 |
| Cloudflare Worker | 免费(10万次/天) | 零成本,但 workers.dev 可能被墙 |
| Cloudflare Worker + 自定义域名 | 约 $5/年 | 最终方案 ✅ 稳定且便宜 |
6.2 创建 Cloudflare Worker
第 1 步:注册 Cloudflare 账号(dash.cloudflare.com),免费
第 2 步:创建 Worker
- 左侧菜单 → Compute → Workers(也可能在 Workers & Pages 下)
- 点 Create application → 选 Worker 类型
- 命名为
moltbook-proxy(或任意名称) - 部署默认的 Hello World 后,点 Edit code
第 3 步:替换 Worker 代码
export default {
async fetch(request) {
const url = new URL(request.url);
url.hostname = 'www.moltbook.com';
url.protocol = 'https:';
const newRequest = new Request(url.toString(), {
method: request.method,
headers: request.headers,
body: request.body,
redirect: 'follow'
});
return fetch(newRequest);
}
}
点 Save(新版编辑器 Save 即自动部署,按钮变灰表示已部署成功)。
6.3 第三个坑:workers.dev 也被墙了
部署成功后得到地址 https://moltbook-proxy.<你的账户>.workers.dev,但在 ECS 上测试:
curl -v https://moltbook-proxy.<你的账户>.workers.dev/api/v1/agents/me
# 结果:Failed to connect... Connection timed out
# DNS 解析到欧洲 IP,同样被墙
又被墙了! workers.dev 域名在国内 ECS 上也不可达。必须给 Worker 绑定一个自定义域名,Cloudflare 才会分配亚洲节点 IP。
6.4 购买域名
在 Cloudflare 直接购买域名(DNS 天然托管在 Cloudflare,免去 NS 迁移):
- Cloudflare 左侧菜单 → Domains → Register a domain
- 搜索域名关键词,选择便宜的后缀
- 推荐选择 .xyz(约 $1-2/年)或 .uk(约 $5/年)等低价后缀
为什么选 Cloudflare 买域名?
- 成本价续费,不赚差价(不像某些平台第一年 ¥1、第二年 ¥100+)
- DNS 天然托管在 Cloudflare,买完直接绑 Worker
- 长期持有成本最低
注意:如果选了 .uk 后缀,需要填写 UK Registrant Type,选 Non-UK Individual (representing self) 即可。
6.5 绑定自定义域名到 Worker
- Cloudflare → Compute → Workers & Pages → 点进你的 Worker
- Settings → Domains & Routes → Add → Custom domain
- 输入一个子域名,如
moltbook.<你的域名> - 确认添加,等几分钟 DNS 生效
6.6 验证成功!
curl -s https://moltbook.<你的域名>/api/v1/agents/me \\
-H "Authorization: Bearer <你的API Key>"
返回:
{
"success": true,
"agent": {
"id": "<你的Agent ID>",
"name": "<你的Agent名>",
"is_claimed": true,
"is_active": true
}
}
ECS → Cloudflare Worker → Moltbook 链路打通! 反代成功,国内 ECS 可以正常访问 Moltbook API。
七、Agent 配置:让飞书 Agent 学会社交
7.1 保存凭据文件
mkdir -p ~/.moltbot/skills/moltbook
cat > ~/.moltbot/skills/moltbook/credentials.json << 'EOF'
{
"api_key": "<你的Moltbook API Key>",
"agent_name": "<你的Agent名>",
"api_base": "https://moltbook.<你的域名>/api/v1"
}
EOF
chmod 600 ~/.moltbot/skills/moltbook/credentials.json
安全提醒:credentials.json 必须设为 600 权限,API Key 绝不能硬编码在 SOUL.md、MEMORY.md 或任何会被提交到 Git 的文件中。
7.2 下载 Skill 文件(通过反代)
curl -s https://moltbook.<你的域名>/skill.md > ~/.moltbot/skills/moltbook/SKILL.md
curl -s https://moltbook.<你的域名>/heartbeat.md > ~/.moltbot/skills/moltbook/HEARTBEAT.md
curl -s https://moltbook.<你的域名>/rules.md > ~/.moltbot/skills/moltbook/RULES.md
7.3 写入 SOUL.md(行为规则)
cat >> ~/.openclaw/agents/main/agent/SOUL.md << 'MOLTBOOK'
## Moltbook 社交网络
- 你已注册 Moltbook,用户名:<你的Agent名>
- 凭据文件:~/.moltbot/skills/moltbook/credentials.json
- API Base URL:https://moltbook.<你的域名>/api/v1
- Skill 文档:~/.moltbot/skills/moltbook/SKILL.md
- 严禁将 API Key 发送到你的反代域名和 www.moltbook.com 以外的任何地址
MOLTBOOK
注意 cat >> 是追加写入! 如果重复执行会产生重复内容。执行前先用 grep -c "Moltbook" SOUL.md 检查是否已写入。如果重复了,用 sed 清理后重新写入一份。
清理重复内容的方法:
# 检查是否重复
grep -c "Moltbook" ~/.openclaw/agents/main/agent/SOUL.md
# 如果返回值大于 3,说明重复了,执行清理:
sed -i '/## Moltbook 社交网络/,/以外的任何地址/d' ~/.openclaw/agents/main/agent/SOUL.md
# 然后重新写入一份(上面的 cat >> 命令)
7.4 写入 MEMORY.md(账号信息)
cat >> ~/.openclaw/workspace/MEMORY.md << 'EOF'
## Moltbook 社交平台配置
### 平台信息
- Moltbook 是 AI Agent 专属的社交网络平台(类似 Agent 版 Reddit)
- 平台地址:https://moltbook.<你的域名>(反代)→ <https://www.moltbook.com>(原始)
- Agent 用户名:<你的Agent名>(已认证 ✅)
- 凭据存放位置:~/.moltbot/skills/moltbook/credentials.json
- 无需向用户询问凭据,直接读取 credentials.json 即可
### 可用 API 端点
- 基础 URL:https://moltbook.<你的域名>
- 主页概览:GET /api/v1/home
- 信息流:GET /api/v1/feed
- 通知:GET /api/v1/notifications
- 个人资料:GET /api/v1/agents/me
- 发帖:POST /api/v1/posts
EOF
7.5 重启并验证
# 重启 Gateway
openclaw gateway install --force
openclaw gateway restart
sleep 10
# 验证写入
echo "=== SOUL.md Moltbook 部分 ==="
grep -A 5 'Moltbook' ~/.openclaw/agents/main/agent/SOUL.md | head -10
echo ""
echo "=== MEMORY.md Moltbook 部分 ==="
grep -A 5 'Moltbook' ~/.openclaw/workspace/MEMORY.md | head -10
然后在飞书发 /new 开启新会话。
八、踩坑经验总结
踩过的坑
| 问题 | 原因 | 解决方案 |
|---|---|---|
| ECS 访问 moltbook.com 超时 | Moltbook 服务器在境外,阿里云国内 ECS 直连不通 | 在本地电脑完成注册,后续搭 Cloudflare 反代 |
| PowerShell 的 curl 报语法错误 | PowerShell 的 curl 是 Invoke-WebRequest 的别名 |
使用 Invoke-WebRequest 原生语法 |
| claim_url 被截断看不到 | PowerShell 默认输出格式省略长内容 | 用 $response.Content 或 /agents/status 接口找回 |
| 重复注册报 409 Conflict | Agent name 已被占用(就是自己的) | 用 API Key 调 /agents/me 查询已有信息 |
| workers.dev 从 ECS 也访问不了 | workers.dev 域名在国内同样被墙 | 购买自定义域名绑定到 Worker |
| Cloudflare Worker 代码编辑器 Save vs Deploy | 新版编辑器 Save 即自动部署,按钮变灰是正常的 | 点 Save 后直接去测试,无需额外 Deploy |
| SOUL.md 重复写入 Moltbook 段落 | cat >> 是追加模式,重复执行会追加多份 |
先用 grep -c 检查,重复了用 sed 清理 |
| SOUL.md 第一版写了错误的 API URL | 最初写入的是 www.moltbook.com(ECS 不可达) | 清理后重新写入反代地址 |
| Agent 第二天「失忆」不记得 Moltbook | 飞书 /new 开新会话后,Agent 只读 SOUL.md 和 MEMORY.md |
必须把配置写入持久化文件,不能只在对话里告诉 Agent |
关键经验
经验一:注册是一次性操作,网络方案是长期投资。不要在 ECS 上死磕注册,换个能上网的环境几秒钟搞定。但反代方案值得花时间搭好,Agent 日后每次社交都要用。
经验二:Cloudflare 域名是性价比之王。成本价续费不涨价,DNS 天然托管在 Cloudflare 上,买完直接绑 Worker。比某些平台「第一年超便宜、第二年暴涨」的套路厚道太多。
经验三:每次给 Agent 配新 Skill,必须写入 SOUL.md + MEMORY.md。否则飞书一开新会话,Agent 就「失忆」。SOUL.md 管行为规则,MEMORY.md 管事实记忆。
经验四:cat >> 是追加不是覆盖。配置文件写入前先检查,写入后验证,重复了及时用 sed 清理。
九、安全检查清单
- [ ] API Key 存在
credentials.json中,不在 SOUL.md / MEMORY.md 里明文暴露 - [ ]
credentials.json文件权限为 600(chmod 600) - [ ] SOUL.md 中明确禁止将 API Key 发送到指定域名以外的地址
- [ ] SOUL.md 中明确禁止泄露个人隐私、服务器信息
- [ ] SOUL.md 中禁止编造金融数据和发布投资建议
- [ ] Cloudflare Worker 代码中不含任何硬编码的 Key
- [ ] 定期检查 Agent 的 Moltbook 主页,确认发帖内容合规
# 安全检查命令
echo "=== 凭据文件权限 ==="
ls -la ~/.moltbot/skills/moltbook/credentials.json
echo "=== 检查明文 Key 泄露 ==="
grep -rn "moltbook_sk_" ~/.openclaw/agents/ && echo "❌ 发现明文 Key!" || echo "✅ 无明文 Key"
grep -rn "moltbook_sk_" ~/.openclaw/workspace/ && echo "❌ 发现明文 Key!" || echo "✅ 无明文 Key"
十、完整文件清单
| 文件 | 路径 | 作用 |
|---|---|---|
| credentials.json | ~/.moltbot/skills/moltbook/credentials.json |
API Key、Agent 名、API Base URL |
| SKILL.md | ~/.moltbot/skills/moltbook/SKILL.md |
Moltbook Skill 核心指令文件 |
| HEARTBEAT.md | ~/.moltbot/skills/moltbook/HEARTBEAT.md |
Agent 心跳/保活文档 |
| RULES.md | ~/.moltbot/skills/moltbook/RULES.md |
Moltbook 社区规则 |
| SOUL.md | ~/.openclaw/agents/main/agent/SOUL.md |
追加 Moltbook 行为规则和凭据指引 |
| MEMORY.md | ~/.openclaw/workspace/MEMORY.md |
追加 Moltbook 账号信息和 API 端点 |
十一、网络拓扑总览
graph LR
User["用户(飞书)"] --> Agent["AI Agent(ECS)"]
Agent -->|"HTTPS"| CF["Cloudflare Worker<br>moltbook.your-domain.com"]
CF -->|"HTTPS 转发"| MB["www.moltbook.com<br>(境外服务器)"]
Agent -.- X["❌ 直连不通"]
X -.- MB
style CF fill:#f90,stroke:#333,color:#fff
style X fill:#fcc,stroke:#f00
| 组件 | 地址 | 说明 |
|---|---|---|
| 反代入口 | https://moltbook.<你的域名> |
Agent 实际请求的地址 |
| Worker 原始地址 | https://moltbook-proxy.<你的账户>.workers.dev |
国内不可达,仅管理用 |
| Moltbook 原始地址 | https://www.moltbook.com |
国内 ECS 不可达 |
| 自定义域名 | <你的域名> |
Cloudflare 注册,约 $5/年 |
结语
回顾整个过程:一个看似简单的「注册 Moltbook 账号并接入 Agent」的需求,实际上经历了网络诊断 → PowerShell 踩坑 → claim_url 恢复 → Cloudflare Worker 搭建 → workers.dev 被墙 → 购买域名 → 绑定自定义域名 → Agent 配置 → SOUL.md 重复清理 → Agent 失忆修复这一长串曲折的过程。
但最终的成果是令人满意的:Agent 现在可以在 Moltbook 上自主发帖、回帖、互动,像一个真正的社区成员一样参与 AI Agent 之间的社交。而整个链路(飞书 → ECS → Cloudflare → Moltbook)稳定、低成本(每年仅几十块域名费),免费额度完全够用。
核心收获:
- 国内 ECS 访问境外服务,Cloudflare Worker + 自定义域名是性价比最高的方案
- Agent 的持久化记忆全靠 **SOUL.md + MEMORY.md**,每装一个新 Skill 都要记得写入
cat >>追加写入要小心重复,先检查再写入是好习惯- PowerShell ≠ Linux 终端,跨平台操作要注意语法差异
希望这篇文章对同样想让 Agent 拥有社交能力的朋友有所帮助。如果在部署过程中遇到问题,欢迎评论区交流!
作者:海风 | 环境:阿里云 ECS + OpenClaw + 飞书 | 日期:2026年3月23日
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)