Social Post

支持推特与Farcaster的图文自动发布,含多账号、防重复、线程等功能。

已扫描
适合谁
社交媒体运营人员、Web3社区管理者
不适合谁
无网络环境用户、不熟悉命令行操作者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @callmedas69/social-post

Skill 说明

命令、参数、文件名以原文为准

Social Post

通过自动字符限制校验和图片上传处理,向 Twitter 和/或 Farcaster 发布内容。

功能特性

  • 多账号支持 - 一个技能管理多个 Twitter 账号
  • 自动变体生成 - 使用 --vary 标志避免 Twitter 的重复内容检测
  • ✅ 仅发布到 Twitter
  • ✅ 仅发布到 Farcaster
  • ✅ 同时发布到两个平台
  • 回复推文与动态 - 在两个平台上回复特定内容
  • 草稿预览 - 确认前显示将发布的完整内容
  • ✅ 字符/字节限制校验
  • ✅ 图片上传支持(用于发布和回复)
  • 线程支持 - 自动将长文本拆分为编号的多条发布
  • 链接缩短 - 使用 TinyURL 压缩 URL(节省字符数)
  • ✅ 可选溢出自动截断

平台限制

  • Twitter: 252 字符(280 字符 + 10% 安全缓冲)
  • Farcaster: 288 字节(320 字节 + 10% 安全缓冲)

设置与凭证配置

X/Twitter 设置

必需凭证(存储在 /home/phan_harry/.openclaw/.env 文件中):

X_CONSUMER_KEY=your_consumer_key
X_CONSUMER_SECRET=your_consumer_secret
X_ACCESS_TOKEN=your_access_token
X_ACCESS_TOKEN_SECRET=your_access_token_secret
X_USERNAME=your_username
X_USER_ID=your_user_id

获取凭证步骤:

  1. 申请 X 开发者账户

- 访问 https://developer.twitter.com/en/portal/dashboard

- 提交开发者访问申请

- 等待审核通过(通常需 1-2 天)

  1. 启用按用量计费

- 在开发者门户中设置支付方式(信用卡)

- 无订阅层级 - 仅按实际 API 使用量付费

- 按每次 API 请求收费(发布、读取等)

- 无月度最低消费或固定费用

  1. 创建应用

- 进入开发者门户,创建新应用

- 名称:"Social Post Bot"(或任意名称)

- 权限设置为“读取与写入”

  1. 生成密钥

- 消费者密钥与密钥:在“密钥与令牌”标签页中获取

- 访问令牌与密钥:点击“认证令牌”下的“生成”

- 安全保存全部四项凭证

  1. 添加至 .env 文件
echo "X_CONSUMER_KEY=xxx" >> ~/.openclaw/.env
echo "X_CONSUMER_SECRET=xxx" >> ~/.openclaw/.env
echo "X_ACCESS_TOKEN=xxx" >> ~/.openclaw/.env
echo "X_ACCESS_TOKEN_SECRET=xxx" >> ~/.openclaw/.env

测试凭证是否有效:

# 干运行(不会实际发布)
scripts/post.sh --twitter --dry-run "测试消息"

多账号设置(可选)

可通过自定义前缀添加多个 Twitter 账号的凭证。

示例:添加第二个账号

# 添加带有自定义前缀的凭证(例如 MYACCOUNT_)
echo "MYACCOUNT_API_KEY=xxx" >> ~/.openclaw/.env
echo "MYACCOUNT_API_KEY_SECRET=xxx" >> ~/.openclaw/.env
echo "MYACCOUNT_ACCESS_TOKEN=xxx" >> ~/.openclaw/.env
echo "MYACCOUNT_ACCESS_TOKEN_SECRET=xxx" >> ~/.openclaw/.env

使用方式:

# 从默认账号发布(X_*)
scripts/post.sh --twitter "来自默认账号的消息"

# 从自定义账号发布
scripts/post.sh --account myaccount --twitter "来自第二个账号的消息"

# 从自定义账号回复
scripts/reply.sh --account myaccount --twitter TWEET_ID "来自第二个账号的回复"

命名规范:

  • 默认账号:X_CONSUMER_KEYX_CONSUMER_SECRET
  • 自定义账号:{PREFIX}_API_KEY{PREFIX}_API_KEY_SECRET{PREFIX}_ACCESS_TOKEN{PREFIX}_ACCESS_TOKEN_SECRET
  • --account 参数中使用小写前缀名

Farcaster 设置

必需凭证(存储在 /home/phan_harry/.openclaw/farcaster-credentials.json 文件中):

{
  "fid": "your_farcaster_id",
  "custodyAddress": "0x...",
  "custodyPrivateKey": "0x...",
  "signerPublicKey": "0x...",
  "signerPrivateKey": "0x...",
  "createdAt": "2026-01-01T00:00:00.000Z"
}

获取凭证方法:

  1. 使用 farcaster-agent 技能创建账号
# 该命令将引导你完成以下操作:
# - 创建钱包
# - 注册 FID
# - 添加签名密钥
# - 自动保存凭证

# 参见:/skills/farcaster-agent/SKILL.md
  1. 或使用已有凭证

- 若已有 Farcaster 账号

- 导出你的托管钱包私钥

- 导出你的签名私钥

- 手动创建 JSON 文件

  1. 为托管钱包充值(必须操作)
# 检查当前余额
scripts/check-balance.sh

# 向 Base 链上的托管地址发送 USDC
# 最低要求:0.1 USDC(约 100 次发布)
# 推荐金额:1-5 USDC(1000-5000 次发布)
  1. 验证设置
# 检查凭证是否存在
ls -la ~/.openclaw/farcaster-credentials.json

# 检查钱包余额
scripts/check-balance.sh

# 测试发布(干运行)
scripts/post.sh --farcaster --dry-run "测试消息"

安全提示:

  • ⚠️ 切勿分享私钥
  • ⚠️ 凭证以明文形式存储,请确保系统安全
  • ⚠️ .env 文件权限应设为 600(仅所有者可读写)
  • ⚠️ 请妥善备份凭证

回复一条动态

# 回复 Farcaster 动态
scripts/reply.sh --farcaster CAST_HASH "你的回复"

# 带图片的回复
scripts/reply.sh --farcaster 0xabcd1234... --image /path/to/image.jpg "带图片的回复"

# 从 URL 获取动态哈希:farcaster.xyz/~/conversations/[HASH]
scripts/reply.sh --farcaster 0xa1b2c3d4e5f6... "有趣的观点!"

同时回复两个平台

# 同时回复(如果你在两个平台上都有对应账号)
scripts/reply.sh --twitter 123456 --farcaster 0xabcd... "精彩的讨论!"

选项

post.sh(发布)可用选项

  • --twitter - 仅发布到 Twitter
  • --farcaster - 仅发布到 Farcaster
  • --account <name> - 使用指定的 Twitter 账号(.env 文件中小写前缀)
  • --vary - 自动变化文本内容,避免被识别为重复内容
  • --image <path> - 附加图片
  • --thread - 将长文本自动拆分为编号的系列动态
  • --shorten-links - 缩短链接以节省字符数
  • --truncate - 超出限制时自动截断
  • --dry-run - 预览但不发布
  • -y, --yes - 跳过确认提示(自动确认)

reply.sh(回复)可用选项

  • --twitter <tweet_id> - 回复指定 ID 的 Twitter 动态
  • --farcaster <cast_hash> - 回复指定哈希的 Farcaster 动态
  • --account <name> - 使用指定的 Twitter 账号(.env 文件中小写前缀)
  • --image <path> - 在回复中附加图片
  • --shorten-links - 缩短链接以节省字符数
  • --truncate - 超出限制时自动截断
  • --dry-run - 预览但不回复
  • -y, --yes - 跳过确认提示(自动确认)

示例

发布示例

# 快速同时发布(默认账号)
scripts/post.sh "gm! Building onchain 🦞"

# 从特定 Twitter 账号发布
scripts/post.sh --account myaccount --twitter "来自我的第二个账号的消息"

# 自动变化文本以避免重复内容检测
scripts/post.sh --vary --twitter "相同文本,自动添加细微变化"

# 带图片的 Twitter 公告
scripts/post.sh --twitter --image ~/screenshot.png "新功能已上线!🚀"

# 仅发布到 Farcaster
scripts/post.sh --farcaster "刚刚将 credential-manager 发布到 ClawHub!"

# 长文本自动拆分为系列动态(自动编号)
scripts/post.sh --thread "这是一个非常长的公告,超过了字符限制。它将被自动拆分为多个编号的帖子。每部分将依次发布,形成一个系列动态。(1/3), (2/3), (3/3)"

# 缩短链接以节省字符
scripts/post.sh --shorten-links "查看这个精彩项目:https://github.com/very-long-organization-name/very-long-repository-name"

# 结合系列动态与链接缩短
scripts/post.sh --thread --shorten-links "包含多个链接的长文本,将被缩短并自动拆分为系列动态(如需)"

# 两个平台发布,长文本自动截断
scripts/post.sh --truncate "非常长的消息,可能超出限制..."

# 预览但不确认(适用于自动化流程)
scripts/post.sh --yes "CI/CD 自动化发布"

回复示例

# 回复 Twitter 系列动态
scripts/reply.sh --twitter 1234567890123456789 "完全同意这个观点!💯"

# 从特定 Twitter 账号回复
scripts/reply.sh --account myaccount --twitter 1234567890 "从我的第二个账号回复"

# 回复 Farcaster 动态
scripts/reply.sh --farcaster 0xa1b2c3d4e5f6... "精彩见解!你有没有考虑过……?"

# 带缩短链接的回复
scripts/reply.sh --twitter 123456 --shorten-links "更多信息在这里:https://example.com/very-long-article-url"

# 带图片的回复
scripts/reply.sh --twitter 123456 --image ~/chart.png "这是支持该观点的数据"

# 同时回复两个平台(相同消息)
scripts/reply.sh --twitter 123456 --farcaster 0xabc123 "这正是事实 🎯"

# 无需确认的快速回复
scripts/reply.sh --twitter 123456 --yes "快速回应"

# 干运行预览回复内容
scripts/reply.sh --twitter 123456 --dry-run "测试回复预览"

草稿预览

脚本现在会在发布前显示草稿预览:

=== 草稿预览 ===

待发布的文本:
─────────────────────────────────────────────
你的消息内容
─────────────────────────────────────────────

目标平台:
  • Twitter
  • Farcaster

是否继续发布?(y/n):
  • 交互模式:会提示确认
  • 非交互/自动化场景:使用 --yes 标志跳过提示
  • 干运行:使用 --dry-run 进行预览,不执行任何发布操作

依赖要求

  • Twitter 凭证需配置在 .env 文件中(X_CONSUMER_KEY、X_CONSUMER_SECRET、X_ACCESS_TOKEN、X_ACCESS_TOKEN_SECRET)
  • Farcaster 凭证需存放在 /home/phan_harry/.openclaw/farcaster-credentials.json
  • Base 链上的 USDC(托管钱包):每次 Farcaster 动态消耗 0.001 USDC
  • 图片支持需要:curljq

成本说明

X/Twitter

  • 100% 按用量计费 - 已取消订阅层级(Basic、Pro 等)
  • 按 API 请求计费 - 每次调用(发布、读取等)均收费
  • 无月费、无最低消费、无需升级套餐
  • 自动根据实际使用量计费
  • 支付方式:通过 X 开发者门户使用信用卡支付
  • 使用 OAuth 1.0a 协议(无需区块链或 USDC)
  • 需要已批准的 X 开发者账号,并启用账单功能

官方定价信息: https://developer.twitter.com/#pricing

重要提示: X API 已完全取消订阅层级。当前模型为纯按使用量计费——仅对实际发起的 API 请求进行收费。

Farcaster

每次 Farcaster 动态成本为 0.001 USDC(通过 x402 协议支付):

  • 从 Base 链上的托管钱包扣除
  • 发送到 Neynar Hub 地址:0xA6a8736f18f383f1cc2d938576933E5eA7Df01A1
  • 约 $1 USDC = 1000 次动态

余额检查:

# 快速检查
scripts/check-balance.sh

# 手动检查
jq -r '.custodyAddress' ~/.openclaw/farcaster-credentials.json
# 在 basescan.org 上查看

充值钱包:

向 Base 链上的托管地址发送 USDC。如需跨链,可使用桥接工具。

图片托管

  • Twitter: 通过 Twitter API 直接上传
  • Farcaster: 上传至 imgur 获取公开 URL(自动嵌入)

错误处理

  • 发布前显示字符/字节数量
  • 超出限制时发出警告
  • 提供截断或中止选项
  • 在尝试发布前验证凭证
C
@callmedas69

已收录 2 个 Skill

相关推荐