OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  social-post:向 Twitter 和 Farcaster 发布包含文字及图像的动态

social-post:向 Twitter 和 Farcaster 发布包含文字及图像的动态

 
  twenty ·  2026-02-08 00:20:53 · 16 次点击  · 0 条评论  

名称: social-post
版本: 1.4.0
描述: 向 X/Twitter 和 Farcaster 发布包含文本和图片的帖子及回复。支持多账户管理、自动变体以避免重复内容检测、草稿预览、字符数验证、线程、回复和图片上传。X API 采用按量计费,Farcaster 按次付费。
作者: 0xdas
许可证: MIT
标签: [twitter, farcaster, social, posting, automation, threads, x-api, consumption-based, multi-account, anti-spam]
元数据:
openclaw:
requires:
bins: [bash, curl, jq, python3, shuf]
env: [X_CONSUMER_KEY, X_CONSUMER_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET]


Social Post

向 Twitter 和/或 Farcaster 发布帖子,自动进行字符限制验证并处理图片上传。

功能特性

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

平台限制

  • Twitter: 252 个字符(280 字符,预留 10% 安全缓冲)
  • Farcaster: 288 字节(320 字节,预留 10% 安全缓冲)

设置与凭证

X/Twitter 设置

所需凭证(存储在 /home/phan_harry/.openclaw/.env):

X_CONSUMER_KEY=你的消费者密钥
X_CONSUMER_SECRET=你的消费者密钥密文
X_ACCESS_TOKEN=你的访问令牌
X_ACCESS_TOKEN_SECRET=你的访问令牌密文
X_USERNAME=你的用户名
X_USER_ID=你的用户ID

如何获取凭证:

  1. 申请 X 开发者账户

    • 访问 https://developer.twitter.com/en/portal/dashboard
    • 申请开发者访问权限
    • 等待批准(通常 1-2 天)
  2. 启用按量计费

    • 在开发者门户中设置支付方式(信用卡)
    • 无订阅层级 - 仅为实际 API 使用付费
    • 按 API 请求(发布、读取等)收费
    • 无月度最低消费或费用
  3. 创建应用

    • 在开发者门户中,创建新应用
    • 名称:"Social Post Bot"(或任意名称)
    • 将权限设置为 "读取和写入"
  4. 生成密钥

    • 消费者密钥和密文:在 "Keys and tokens" 标签页
    • 访问令牌和密文:点击 "Authentication Tokens" 下的 "Generate"
    • 安全保存所有 4 个凭证
  5. 添加到 .env 文件
    bash 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": "你的 Farcaster ID",
  "custodyAddress": "0x...",
  "custodyPrivateKey": "0x...",
  "signerPublicKey": "0x...",
  "signerPrivateKey": "0x...",
  "createdAt": "2026-01-01T00:00:00.000Z"
}

如何获取凭证:

  1. 使用 farcaster-agent 技能创建账户
    ```bash
    # 这将引导你完成:
    # - 创建钱包
    # - 注册 FID
    # - 添加签名者密钥
    # - 自动保存凭证

    参见:/skills/farcaster-agent/SKILL.md

    ```

  2. 或使用现有凭证

    • 如果你已有 Farcaster 账户
    • 导出你的托管钱包私钥
    • 导出你的签名者私钥
    • 手动创建 JSON 文件
  3. 为托管钱包注资(必需)
    ```bash
    # 检查当前余额
    scripts/check-balance.sh

    在 Base 链上向托管地址发送 USDC

    最低:0.1 USDC(约 100 次 Cast)

    推荐:1-5 USDC(1000-5000 次 Cast)

    ```

  4. 验证设置
    ```bash
    # 检查凭证是否存在
    ls -la ~/.openclaw/farcaster-credentials.json

    检查钱包余额

    scripts/check-balance.sh

    测试发布(试运行)

    scripts/post.sh --farcaster --dry-run "测试消息"
    ```

安全注意事项:
- ⚠️ 切勿分享你的私钥
- ⚠️ 凭证以纯文本形式存储 - 请确保系统安全
- ⚠️ .env 文件应具有 600 权限(仅所有者可读写)
- ⚠️ 安全备份你的凭证

使用方法

发布

仅文本

# 发布到两个平台
scripts/post.sh "你的消息"

# 仅 Twitter
scripts/post.sh --twitter "你的消息"

# 仅 Farcaster
scripts/post.sh --farcaster "你的消息"

带图片

# 带图片发布到两个平台
scripts/post.sh --image /path/to/image.jpg "你的图片说明"

# 仅 Twitter 带图片
scripts/post.sh --twitter --image /path/to/image.jpg "图片说明"

# 仅 Farcaster 带图片
scripts/post.sh --farcaster --image /path/to/image.jpg "图片说明"

回复

回复 Twitter

# 回复一条推文
scripts/reply.sh --twitter TWEET_ID "你的回复"

# 带图片回复
scripts/reply.sh --twitter TWEET_ID --image /path/to/image.jpg "带图片的回复"

# 从 URL 获取推文 ID:twitter.com/user/status/[TWEET_ID]
scripts/reply.sh --twitter 1234567890123456789 "说得好!"

回复 Farcaster

# 回复一个 Cast
scripts/reply.sh --farcaster CAST_HASH "你的回复"

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

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

回复两个平台

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

选项

对于 post.sh(发布)

  • --twitter - 仅发布到 Twitter
  • --farcaster - 仅发布到 Farcaster
  • --account <name> - 使用的 Twitter 账户(来自 .env 的小写前缀)
  • --vary - 自动变体文本以避免重复内容检测
  • --image <path> - 附加图片
  • --thread - 将长文本拆分为带编号的线程
  • --shorten-links - 缩短 URL 以节省字符
  • --truncate - 如果超出限制则自动截断
  • --dry-run - 预览而不发布
  • -y, --yes - 跳过确认提示(自动确认)

对于 reply.sh(回复)

  • --twitter <tweet_id> - 回复具有此 ID 的 Twitter 推文
  • --farcaster <cast_hash> - 回复具有此哈希的 Farcaster Cast
  • --account <name> - 使用的 Twitter 账户(来自 .env 的小写前缀)
  • --image <path> - 附加图片到回复
  • --shorten-links - 缩短 URL 以节省字符
  • --truncate - 如果超出限制则自动截断
  • --dry-run - 预览而不回复
  • -y, --yes - 跳过确认提示(自动确认)

示例

发布示例

# 快速发布到两个平台(默认账户)
scripts/post.sh "gm! 正在链上构建 🦞"

# 从特定 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)"

# 缩短 URL 以节省字符
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 Cast
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 预览而不发布

要求

  • .env 中的 Twitter 凭证(X_CONSUMER_KEY, X_CONSUMER_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET)
  • /home/phan_harry/.openclaw/farcaster-credentials.json 中的 Farcaster 凭证
  • Base 链上的 USDC(托管钱包):每个 Farcaster Cast 消耗 0.001 USDC
  • 对于图片:需要 curljq

费用

X/Twitter

  • 100% 按量计费 - 订阅层级(层级已被取消)
  • 按 API 请求付费 - 每次调用(发布、读取等)收费
  • 无月度费用、无最低消费、无需担心层级升级
  • 根据实际使用情况自动计费
  • 通过 X 开发者门户使用信用卡支付
  • 使用 OAuth 1.0a(无需区块链/USDC)
  • 需要已批准的 X 开发者账户 + 已启用的计费

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

关键信息: X API 已完全取消订阅层级(Basic、Pro 等)。现在的模式纯粹是按使用付费 - 你只需为你实际发出的 API 请求付费。

Farcaster

每个 Farcaster Cast 花费 0.001 USDC(通过 x402 协议支付):
- 从 Base 链上的托管钱包中扣除
- 发送至 Neynar Hub:0xA6a8736f18f383f1cc2d938576933E5eA7Df01A1
- ~$1 USDC = 1000 次 Cast

检查余额:

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

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

为钱包注资:
在 Base 链上向托管地址发送 USDC。如有需要,可从其他链桥接。

图片托管

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

错误处理

  • 发布前显示字符/字节数
  • 超出限制时发出警告
  • 可选择截断或中止
  • 在尝试发布前验证凭证
16 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 22 ms
Developed with Cursor