Communitygithub.com

wuaishare/sharextract

协议优先的公共分享内容提取器和智能体技能,适用于AI聊天、社交帖子、媒体和网页。

sharextract 是什么?

ShareXtract 是一个协议优先的公共内容提取工具,专为 AI 对话、社交帖子、媒体和网页设计。它通过多种方法以最高保真度和最低成本提取内容,并保留内容的获取方式。该工具支持多种平台,包括抖音、TikTok、快手、小红书、微博、知乎等,每个平台都有专用的适配器以确保最佳提取效果。ShareXtract 的输出包含详细的 JSON 和 Markdown 格式,带有提取方法、置信度、警告和元数据等信息。它严格遵守公共内容提取的边界,不绕过登录、验证码、付费墙或访问控制。开发者和 AI 智能体可以通过简单的命令行调用集成该工具,并根据平台矩阵和适配器文档进行扩展。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add wuaishare/sharextract

在你喜欢的 AI 中提问

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

文档

sharextract 是做什么的?

以可用最高保真度、最低成本的方法提取公共分享内容,并保留内容的获取方式。

工作流程

  1. 将提供的 URL 仅视为公共输入。除非用户明确请求认证工作流且平台允许,否则绝不重用浏览器 Cookie、会话令牌、凭据或私有连接器数据。
  2. 运行: python -m sharextract "URL" --format json
  3. 优先选择具有最强溯源依据的结果:
    • 有文档的公共 API、开放联合标准(RSS/Atom)或 oEmbed;
    • 第一方公共 JSON/hydration 数据;
    • JSON-LD/OpenGraph/结构化 HTML;
    • 专用公共内容提取器,例如 yt-dlp;
    • 可读的静态 HTML;
    • 仅在公共页面确实需要 JavaScript 时进行浏览器渲染。
  4. 在下游使用结果之前,检查 extraction_method、confidence、warnings、canonical_url 和 metadata。对于 feed,使用 metadata.feed.entries;对于转写文本,使用 metadata.transcript.cues;对于普通页面,metadata.syndication_feeds 和 metadata.subtitle_tracks 可能会暴露声明的公共后续资源。
  5. 保留原始含义和媒体引用。不要静默地捏造缺失的文本、作者、时间戳或平台元数据。
  6. 如果专用路由失败,允许路由器回退,并在 warnings 中报告失败的路由。
  7. 遇到登录墙、CAPTCHA、付费墙、WAF 挑战、私人链接或其他访问控制时停止,而不是绕过。

命令

默认标准化 JSON:

python -m sharextract "https://example.com/share/..." --format json

可读的 Markdown:

python -m sharextract "https://example.com/article" --format markdown

强制通用网页提取:

python -m sharextract "https://example.com/article" --strategy web

仅媒体元数据:

python -m sharextract "https://www.youtube.com/watch?v=..." --strategy media

可选的高质量 web/media 依赖:

python -m pip install -e ".[all]"

可选服务接口:

python -m pip install -e ".[mcp,service]"
sharextract-mcp
sharextract-api --port 8787

仅将服务层用作围绕同一公共内容提取契约的传输层;平台特定逻辑属于适配器,而不是 MCP/HTTP 处理程序。

输出契约

JSON 结果包含 source_url、canonical_url、platform、kind、extraction_method、confidence、title、author、text、markdown、可选的 html、标准化消息、媒体引用、metadata、warnings 和 retrieved_at。

在决定如何处理平台时,请阅读 references/platform-matrix.md。在添加或修改平台适配器之前,请阅读 references/adding-adapters.md。在决定是使用现有开源提取器还是编写新的时,请阅读 references/ecosystem.md。

护栏

ShareXtract 用于内容对请求者来说已经是公开的情况。它不是一个反机器人绕过框架。不要添加隐身、CAPTCHA 解决、凭据收集、签名规避、大规模账号轮换或访问控制绕过。

对于不稳定的第一方端点,将其标记为未记录,并保留公共页面回退。优先选择可以使用静态固定装置进行测试并且在内容无法验证时安全失败的适配器。

快手公共视频元数据

对于快手公共视频,优先使用当前的官方 v.kuaishou.com 或 kuaishou.com/f/ 分享/复制链接 URL。原生适配器从相同的公共重定向响应中消费匿名的 PC 页面 Apollo SSR,并仅导出元数据。裸短视频 URL 可能会省略 visionVideoDetail;发生这种情况时,请求一个新的官方分享链接,而不是创建 did cookie 或调用私有 GraphQL detail API。绝不要从 Apollo 状态导出 photoUrl、manifest、adaptive-representation 或临时 CDN MP4 URL。

小红书公共笔记

对于小红书笔记,使用当前的官方分享/复制链接 URL 或官方的 xhslink 短链接。ShareXtract 从那个公共 URL 消费现有的 xsec_token,并读取第一方 SSR 初始状态;它不会生成/刷新令牌或实现 X-s/X-t 请求签名。没有当前令牌的裸笔记 URL 应被拒绝,并指导获取一个新的官方分享链接。不要导出嵌入在笔记状态中的临时视频/字幕流 URL。

抖音公共视频元数据

对于直接的公共抖音视频 URL 或 v.douyin.com 短链接,通过 extract() 使用原生仅元数据适配器。它使用标准的移动浏览器表示读取匿名的第一方 Jingxuan SSR/VideoObject 接口。不要导出嵌入在 video_model 数据中的临时播放/下载 URL,也不要添加 a_bogus、设备签名、复制的 cookie 或登录会话状态。

TikTok 公共视频

对于直接的公共 TikTok 视频 URL,通过正常的 extract() 路由器使用原生有文档的 oEmbed 路由。此 oEmbed 路径不需要任何 TikTok 用户授权或访问令牌。不要用经过认证的 Display API 访问来替代普通的公共嵌入元数据。

微博公共状态

对于公共微博状态 URL,通过正常的 extract() 路由器使用原生适配器。它使用微博的匿名移动 PWA JSON 路由,并且仅对标记为 isLongText 的状态请求公共 extend 路由。当公共 PWA 路由不可用时,不要添加登录 cookie 或经过认证的会话状态。

知乎公共内容

对于知乎公共回答和专栏文章,通过正常的 extract() 路由器使用原生适配器。回答适配器使用知乎匿名的公共 Tardis SSR 阅读器;文章适配器优先使用公共嵌入的初始状态,并以 Tardis 作为回退。不要添加 x-zse、d_c0、复制的 cookie 或登录的浏览器状态来使一个被屏蔽的知乎 API 路由工作。

适配器健康

在自动化工作流中依赖脆弱的平台路由之前,使用以下命令检查确定性健康状态:

python -m sharextract --health

对于显式的发布/协议验证,仅对注册表中固定的公共样本使用 --live。不要将任意的目标 URL 变成健康探测。请参阅 references/adapter-health.md。

相关技能