Communitygithub.com

wuaishare/sharextract

基於協定優先的公開分享內容提取器與 AI Agent 技能,適用於 AI 聊天、社群貼文、媒體與網頁。

sharextract 是什麼?

ShareXtract 是一個以協定優先的公開內容提取工具與 AI Agent 技能,專門設計來從 AI 聊天、社群貼文、媒體和一般網頁中,以最高保真度與最低成本的方式提取公開內容,並保留內容的取得途徑。它支援多種平台,包括 Kuaishou、Xiaohongshu、Douyin、TikTok、Weibo 和 Zhihu,並且能夠透過 oEmbed、RSS/Atom 等公開標準或第一方 JSON 資料來取得結構化結果。開發者可以使用簡單的命令列介面,例如 `python -m sharextract "URL" --format json` 來獲取包含來源網址、平台、提取方法、信心指數、標題、作者、文字及中繼資料的 JSON 輸出。這個工具特別注重遵守平台的存取限制,絕不繞過登入牆、CAPTCHA 或付費牆,並且會透過 `--health` 指令檢查配接器的健康狀態,確保在自動化工作流程中的可靠性。

相容平台~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/水合資料;
    • JSON-LD/OpenGraph/結構化 HTML;
    • 專門的公開內容提取器,例如 yt-dlp;
    • 可讀取的靜態 HTML;
    • 僅在公開頁面確實需要 JavaScript 時才進行瀏覽器渲染。
  4. 在將結果用於後續處理之前,檢查 extraction_method、confidence、warnings、canonical_url 和 metadata。對於動態饋給,使用 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

選擇性的高品質網頁/媒體依賴項:

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 解決、憑證收集、簽章規避、大規模帳號輪換或存取控制繞過機制。

對於不穩定的第一方端點,將其標記為無文件記錄,並保留公開頁面作為回退方案。偏好可以使用靜態測試資料進行測試,並且在內容無法驗證時能安全關閉(fail closed)的配接器。

Kuaishou 公開影片中繼資料

對於 Kuaishou 公開影片,優先使用當前有效的官方 v.kuaishou.com 或 kuaishou.com/f/ 分享/複製連結 URL。原生配接器會從相同的公開重新導向回應中消費匿名的 PC 頁面 Apollo SSR,並僅匯出中繼資料。不完整的短影片 URL 可能省略 visionVideoDetail;當發生這種情況時,請要求一個新的官方分享連結,而不是建立 did cookie 或呼叫私有的 GraphQL 詳細資料 API。切勿從 Apollo 狀態中匯出 photoUrl、manifest、adaptive-representation 或暫時的 CDN MP4 URL。

Xiaohongshu 公開筆記

對於 Xiaohongshu 筆記,使用當前有效的官方分享/複製連結 URL 或官方的 xhslink 短連結。ShareXtract 會從該公開 URL 消費現有的 xsec_token,並讀取第一方 SSR 初始狀態;它不會產生/刷新令牌或實作 X-s/X-t 請求簽章。不包含當前有效令牌的純筆記 URL 應被拒絕,並引導使用者取得新的官方分享連結。請勿匯出嵌入在筆記狀態中的臨時影片/字幕串流 URL。

Douyin 公開影片中繼資料

對於直接公開的 Douyin 影片 URL 或 v.douyin.com 短連結,使用原生的僅中繼資料配接器透過 extract() 進行提取。它使用一般的行動瀏覽器呈現方式讀取匿名的第一方 Jingxuan SSR/VideoObject 介面。請勿從嵌入的 video_model 資料中匯出暫時的播放/下載 URL,也不要添加 a_bogus、裝置簽章、複製的 cookie 或已登入的工作階段狀態。

TikTok 公開影片

對於直接公開的 TikTok 影片 URL,使用原生的有文件說明的 oEmbed 路由,透過正常的 extract() 路由器進行處理。此 oEmbed 路徑不需要任何 TikTok 使用者授權或存取令牌。請勿以已驗證的 Display API 存取權限取代一般的公開嵌入中繼資料。

Weibo 公開動態

對於公開的 Weibo 動態 URL,使用原生配接器透過正常的 extract() 路由器進行處理。它使用 Weibo 的匿名行動版 PWA JSON 路由,並且僅對標記為 isLongText 的動態請求公開的 extended 路由。當公開的 PWA 路由不可用時,請勿添加登入 cookie 或已驗證的工作階段狀態。

Zhihu 公開內容

對於 Zhihu 公開回答和專欄文章,使用原生配接器透過正常的 extract() 路由器進行處理。回答配接器使用 Zhihu 的匿名公開 Tardis SSR 閱讀器;文章配接器偏好使用公開的嵌入式初始狀態,並以 Tardis 作為回退方案。請勿添加 x-zse、d_c0、複製的 cookie 或已登入的瀏覽器狀態來使被封鎖的 Zhihu API 路由生效。

配接器健康狀態

在自動化工作流程中依賴脆弱平台路由之前,請使用以下指令檢查確定性健康狀態:

python -m sharextract --health

對於明確的版本/協定驗證,僅能針對註冊表中固定的公開範例使用 --live。請勿將任意目標 URL 當作健康狀態探針。請參閱 references/adapter-health.md。

相關技能