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が宣言された公開フォローアップリソースを公開することがあります。 - 元の意味とメディア参照を保持します。不足しているテキスト、作者、タイムスタンプ、プラットフォームメタデータを黙って捏造してはなりません。
- 専用ルートが失敗した場合は、ルーターがフォールバックできるようにし、失敗したルートを警告として報告します。
- ログインウォール、CAPTCHA、ペイウォール、WAFチャレンジ、プライベートリンク、その他のアクセス制御をバイパスするのではなく、停止します。
コマンド
デフォルトの正規化JSON:
python -m sharextract "https://example.com/share/..." --format json
読み取り可能なMarkdown:
python -m sharextract "https://example.com/article" --format markdown
一般的なWeb抽出を強制:
python -m sharextract "https://example.com/article" --strategy web
メディアメタデータのみ:
python -m sharextract "https://www.youtube.com/watch?v=..." --strategy media
オプションの高品質Web/メディア依存関係:
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解決、認証情報収集、署名回避、大量アカウントローテーション、アクセス制御バイパスを追加しないでください。
不安定な第一者エンドポイントについては、未文書としてラベル付けし、公開ページのフォールバックを維持してください。静的フィクスチャでテストでき、コンテンツが検証できない場合にフェイルクローズするアダプターを優先してください。
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の場合、通常の extract() ルーターを通じてネイティブのドキュメント化されたoEmbedルートを使用します。このoEmbedパスにはTikTokユーザー承認やアクセストークンは必要ありません。通常の公開埋め込みメタデータのために、認証済みDisplay APIアクセスを代用しないでください。
Weibo 公開ステータス
公開WeiboステータスURLの場合、通常の extract() ルーターを通じてネイティブアダプターを使用します。Weiboの匿名モバイルPWA JSONルートを使用し、isLongText とマークされたステータスのみ公開 extend ルートを要求します。公開PWAルートが利用できない場合でも、ログインCookieや認証済みセッション状態を追加しないでください。
Zhihu 公開コンテンツ
Zhihuの公開回答やZhuanlan記事の場合、通常の extract() ルーターを通じてネイティブアダプターを使用します。回答アダプターはZhihuの匿名公開Tardis SSRリーダーを使用します。記事アダプターはTardisフォールバック付きの公開埋め込み初期状態を優先します。ブロックされたZhihu APIルートを機能させるために、x-zse、d_c0、コピーされたCookie、ログイン済みブラウザ状態を追加しないでください。
アダプター健全性
自動化ワークフローで脆弱なプラットフォームルートに依存する前に、以下を使用して決定論的な健全性を検査します:
python -m sharextract --health
明示的なリリース/プロトコル検証には、レジストリ内の固定された公開サンプルに対してのみ --live を使用します。任意のターゲットURLを健全性プローブに変えないでください。references/adapter-health.md を参照してください。