Community写作与编辑github.com

evgyur/hermes-bird-xurl-skill

基于 SocialData 的 X/Twitter 路由技能,为 Hermes 提供高效读取和精确写入能力。

hermes-bird-xurl-skill 是什么?

Bird 是一个专注于 X/Twitter 平台操作的 AI 代理技能,采用 SocialData 作为默认的廉价读取层,仅在需要账户上下文或执行写操作时才使用官方的 xurl CLI。它通过确定性路由表,将推文读取、线程解析、用户搜索、资料查看、媒体下载等读取任务优先导向 SocialData,而发布、回复、删除、点赞等写操作则必须通过 xurl 并经过显式用户批准。该技能支持多种平台(如 Claude Code、Cursor、Codex),强调成本控制,避免重复调用付费 API,并严格执行安全策略,禁止泄露密钥、Cookie 或凭据。其工作流程包括分类请求、标准化 URL、按表路由、防御性解析和精确失败报告,最终返回包含来源、提供者和行动回执的结构化输出。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add evgyur/hermes-bird-xurl-skill

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Bird

Bird 是单一的 X/Twitter 路由器。默认使用 SocialData 作为廉价的读取层。仅当任务需要经过认证的账户上下文、X 原生对象或明确批准的账户变更时,才使用官方的 xurl CLI。不得让两个提供者回答同一个常规读取请求。

触发条件与兼容性

用于处理 X/Twitter URL、推文/线程/文章提取、搜索、用户资料、回复/引用/上下文、媒体检索和 X 账户操作。

保留以下入口点:

  • /bird <请求> — 标准路由器。
  • 遗留 bird.py <URL 或 ID> — 仍然通过 SocialData 读取。
  • /xurl ... — 兼容入口点,供明确请求 xurl 的用户使用;它必须遵循 Bird 的路由和写入门控。

确定性路由

意图主要提供者备用提供者边界条件
通过 URL/ID 读取推文SocialData仅用于公共可见证据的 web/浏览器绝不因为 xurl 存在就升级到它
读取线程/对话/回复SocialData仅当 X 原生上下文唯一必要且受支持时的 xurl 读取从获取的数据中确定线程,而非 URL 形状
搜索帖子SocialData 有界搜索现有的 SocialData/web 研究路由当前不假定 xurl 最近搜索可用
读取公开资料SocialData需要账户特定或当前 X 视图时的 xurl 用户查询不进行批量图谱收集
X 文章优先使用 SocialData 推文负载;解析嵌套文章带有 article 字段的 xurl 原始推文端点当文章文本缺失时,跟随链接的第一方页面
下载附加媒体SocialData 元数据 + 有界 HTTPS 下载仅用于可见公共媒体的浏览器URL/日志中不含 cookie;验证主机/大小/类型
我是谁 / 认证身份xurl无只读账户上下文
后续互动所需的精确 X 原生对象xurl用于发现/上下文的 SocialData仅对精确的对象/端点使用 xurl
发布、回复、引用、删除、喜欢、转推、书签、关注、屏蔽、静音、私信、上传xurl无需要显式批准精确目标、内容和效果

加载提供者路由以获取端点配方、错误和回退规则。仅针对 xurl 特定任务加载 xurl 操作。

提供者与成本契约

  • SocialData 是所有常规读取的默认选项。优先在当前运行时中使用配置的直接 SOCIALDATA_API_KEY。当直接密钥缺失且 H20 客户密钥具有 socialdata 能力时,使用经批准的 Human20 Keys SocialData 代理。可能存在通用的 H20 模型密钥,但返回 provider not allowed: socialdata;这不构成切换到 xurl 的理由。
  • 当前 Human20 Keys 对 social-request 的默认价格等级已验证为 0 credits/request;将其视为可变运行时状态,并在声明成本前重新检查。
  • 一个用户请求通常应消耗一次查找/搜索以及线程或请求上下文所需的有界依赖读取。不得进行扇出、抓取关注者/关注、导出、流式处理、轮询或批量获取。
  • 切勿静默地从 SocialData 回退到付费的 X API 调用。xurl 是根据能力需求而非提供者故障选择的。

机密与执行安全

  • 绝不要读取、打印、解析、总结或暴露密钥存储、~/.xurl、cookie、授权标头、API 密钥、承载令牌、请求签名或环境值。
  • 仅通过安全的状态/探测命令验证凭据。不要使用 xurl 的 --verbose/-v 或内联凭据标志。
  • SocialData 调用是只读且有界的。将 401/403 视为凭据/策略问题,402 视为额度/计费问题,404 视为不存在/私有/已删除,429 视为速率限制,5xx 视为提供者故障。不要将一类错误误标为另一类。
  • 浏览器/中继是最后手段,绝不是 cookie 提取机制。
  • 写操作是受保护的效果。在任何 xurl 变更之前,重新读取精确的目标和负载,要求用户对该精确效果进行显式批准,执行一次,并从原始 xurl/X 响应中验证。批准研究不等于批准互动或发布。
  • 私信、删除、屏蔽、账户变更、媒体上传和公开发布绝不应隐式发生。

工作流程

  1. 对请求进行分类:read(读取)、search(搜索)、profile(资料)、thread(线程)、article(文章)、media(媒体)、account-read(账户读取)或 write(写入)。
  2. 标准化 X URL/ID 而不改变标识符。在决定推文与线程之前先获取数据。
  3. 根据表格路由。对于常规读取,首先恰好调用一次 SocialData。
  4. 防御性解析。文章负载可能位于 article.title、article.preview_text 和 article.content_state.blocks[] 中;媒体可能嵌套在引用或转推的对象中。
  5. 如果用户询问某项内容是否重要,打开链接的第一方仓库/文档/文章并检查附加媒体。将 X 帖子视为声明/来源,而非自动证据。
  6. 如果所选提供者失败,报告确切的失败原因。仅当备用提供者仍能在不扩大成本、隐私或效果的情况下回答相同请求时,才使用已声明的备用提供者。
  7. 返回忠实于来源的输出和简洁的提供者收据。

输出契约

返回:

结果:<完整的请求内容或简洁忠实的答案>
类型:tweet | thread | article | profile | search | account-action
作者/来源:<安全的公共身份 + 规范 URL>
提供者:SocialData | xurl | web/browser fallback
证据:<ID、时间戳、指标/上下文(如果可用)>
操作回执:<仅限已批准的 xurl 变更;确切状态/对象 ID>
限制:<缺失/私有/已删除/速率/计划/提供者缺口,或无>

不要在面向用户的回执中暴露内部密钥、认证模式、密钥位置或私有运行时细节。

快速测试清单

  • /bird <推文 URL> 选择 SocialData,而非 xurl。
  • /bird search from:handle 选择有界的 SocialData 搜索。
  • /bird whoami 选择只读的 xurl 身份。
  • /bird reply <URL> <文本> 在 xurl 之前停止以获取精确批准。
  • SocialData 的 402 不应报告为缺少凭据;xurl 最近搜索失败不应禁用身份/资料读取。
  • 线程和文章解析使用获取的结构,而非 URL 猜测。
  • 移除 SocialData 默认或写入批准契约会导致验证失败。

完成标准

  • 请求的 X 内容/操作已完成,或报告了一个确切的阻塞项。
  • 常规读取首先使用了 SocialData,避免了重复的提供者支出。
  • xurl 仅用于特定能力的原因。
  • 任何写操作都已获得精确批准并进行了原始 API 回读。
  • 没有机密/cookie/私有凭据材料进入输出、工件或日志。

相关技能