sharextract 是做什麼的?
以最高保真度、最低成本的方法提取公開分享內容,並保留內容的取得途徑。
工作流程
- 將提供的 URL 僅視為公開輸入。絕不重複使用瀏覽器 Cookie、工作階段令牌、憑證或私人連接器資料,除非使用者明確要求經過驗證的工作流程且平台允許。
- 執行:
python -m sharextract "URL" --format json - 優先採用具有最強來歷佐證的結果:
- 有文件說明的公開 API、開放聯合標準 (RSS/Atom) 或 oEmbed;
- 第一方的公開 JSON/水合資料;
- JSON-LD/OpenGraph/結構化 HTML;
- 專門的公開內容提取器,例如 yt-dlp;
- 可讀取的靜態 HTML;
- 僅在公開頁面確實需要 JavaScript 時才進行瀏覽器渲染。
- 在將結果用於後續處理之前,檢查
extraction_method、confidence、warnings、canonical_url和metadata。對於動態饋給,使用metadata.feed.entries;對於逐字稿,使用metadata.transcript.cues;對於一般頁面,metadata.syndication_feeds和metadata.subtitle_tracks可能會顯示已宣告的公開後續資源。 - 保留原始含義和媒體參考。請勿在無聲無息中憑空編造遺失的文字、作者、時間戳記或平台中繼資料。
- 如果專門的路徑失敗,允許路由器進行回溯,並在
warnings中回報失敗的路徑。 - 遇到登入牆、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。