Was macht sharextract?
Extrahiere öffentlich geteilte Inhalte mit der höchsten Genauigkeit und den geringstmöglichen Kosten und bewahre dabei die Methode der Extraktion.
Arbeitsablauf
- Behandle die übergebene URL ausschließlich als öffentliche Eingabe. Verwende niemals Browser-Cookies, Sitzungstoken, Anmeldedaten oder private Connector-Daten, es sei denn, der Benutzer fordert explizit einen authentifizierten Workflow an und die Plattform erlaubt dies.
- Führe aus:
python -m sharextract "URL" --format json - Bevorzuge das Ergebnis mit der stärksten Provenienz:
- dokumentierte öffentliche API, offene Syndication-Standards (RSS/Atom) oder oEmbed;
- first-party öffentliche JSON-/Hydration-Daten;
- JSON-LD/OpenGraph/strukturiertes HTML;
- spezialisierter Public-Content-Extraktor wie yt-dlp;
- lesbares statisches HTML;
- Browser-Rendering nur, wenn eine öffentliche Seite tatsächlich JavaScript benötigt.
- Prüfe
extraction_method,confidence,warnings,canonical_urlundmetadata, bevor du das Ergebnis downstream verwendest. Für Feeds verwendemetadata.feed.entries; für Transkripte verwendemetadata.transcript.cues; für normale Seiten könnenmetadata.syndication_feedsundmetadata.subtitle_tracksauf deklarierte öffentliche Folge-Ressourcen hinweisen. - Bewahre die ursprüngliche Bedeutung und Medien-Referenzen. Erfinde keine fehlenden Texte, Autoren, Zeitstempel oder Plattform-Metadaten.
- Wenn ein spezialisierter Pfad fehlschlägt, erlaube dem Router einen Fallback und melde den fehlgeschlagenen Pfad in
warnings. - Stoppe, anstatt Login-Walls, CAPTCHAs, Paywalls, WAF-Herausforderungen, private Links oder andere Zugangskontrollen zu umgehen.
Befehle
Standard normiertes JSON:
python -m sharextract "https://example.com/share/..." --format json
Lesbares Markdown:
python -m sharextract "https://example.com/article" --format markdown
Web-Extraktion erzwingen:
python -m sharextract "https://example.com/article" --strategy web
Nur Medien-Metadaten:
python -m sharextract "https://www.youtube.com/watch?v=..." --strategy media
Optionale höherwertige Web-/Medien-Abhängigkeiten:
python -m pip install -e ".[all]"
Optionale Service-Oberflächen:
python -m pip install -e ".[mcp,service]"
sharextract-mcp
sharextract-api --port 8787
Verwende die Service-Schichten nur als Transporte um denselben Vertrag der Public-Content-Extraktion; plattformspezifische Logik gehört in Adapter, nicht in MCP/HTTP-Handler.
Ausgabe-Vertrag
Das JSON-Ergebnis enthält source_url, canonical_url, platform, kind, extraction_method, confidence, title, author, text, markdown, optional html, normalisierte Nachrichten, Medien-Referenzen, metadata, warnings und retrieved_at.
Lies references/platform-matrix.md bei der Entscheidung, wie eine Plattform behandelt werden soll. Lies references/adding-adapters.md vor dem Hinzufügen oder Ändern eines Plattform-Adapters. Lies references/ecosystem.md bei der Entscheidung, ob ein bestehender Open-Source-Extraktor wiederverwendet werden soll, anstatt einen neuen zu schreiben.
Guardrails
ShareXtract ist für Inhalte gedacht, die für den Anforderer bereits öffentlich sind. Es handelt sich nicht um ein Anti-Bot-Bypass-Framework. Füge keine Stealth-Mechanismen, CAPTCHA-Lösungen, Credential-Harvesting, Signatur-Umgehungen, Massen-Account-Rotation oder Zugangskontroll-Umgehungen hinzu.
Für instabile First-Party-Endpunkte kennzeichne sie als undokumentiert und halte einen öffentlichen Seiten-Fallback bereit. Bevorzuge Adapter, die mit statischen Testdaten getestet werden können und die fehlschlagen, wenn der Inhalt nicht verifiziert werden kann.
Öffentliche Video-Metadaten von Kuaishou
Für öffentliche Kuaishou-Videos bevorzuge eine aktuelle offizielle v.kuaishou.com- oder kuaishou.com/f/-Share-/Copy-Link-URL. Der native Adapter konsumiert anonymes PC-Seiten-Apollo-SSR aus derselben öffentlichen Redirect-Antwort und exportiert nur Metadaten. Bloße Kurz-Video-URLs können visionVideoDetail auslassen; wenn das passiert, fordere einen frischen offiziellen Share-Link an, anstatt did-Cookies zu erzeugen oder die private GraphQL-Detail-API aufzurufen. Exportiere niemals photoUrl, manifest, adaptive-representation oder temporäre CDN-MP4-URLs aus dem Apollo-State.
Öffentliche Notizen von Xiaohongshu
Für Xiaohongshu-Notizen verwende eine aktuelle offizielle Share-/Copy-Link-URL oder einen offiziellen xhslink-Short-Link. ShareXtract konsumiert einen vorhandenen xsec_token aus dieser öffentlichen URL und liest den First-Party-SSR-Initialzustand; es generiert/erneuert keine Token und implementiert kein X-s/X-t-Request-Signing. Bloße Notiz-URLs ohne aktuelles Token sollten mit dem Hinweis abgelehnt werden, einen frischen offiziellen Share-Link zu besorgen. Exportiere keine temporären Video-/Untertitel-Stream-URLs, die im Notiz-State eingebettet sind.
Öffentliche Video-Metadaten von Douyin
Für direkte öffentliche Douyin-Video-URLs oder v.douyin.com-Short-Links verwende den nativen Metadaten-Adapter über extract(). Er liest die anonyme First-Party-Jingxuan-SSR/VideoObject-Oberfläche mit einer normalen mobilen Browser-Repräsentation. Exportiere keine temporären Wiedergabe-/Download-URLs aus eingebetteten video_model-Daten und füge kein a_bogus, keine Gerätesignaturen, kopierte Cookies oder eingeloggte Sitzungszustände hinzu.
Öffentliche TikTok-Videos
Für direkte öffentliche TikTok-Video-URLs verwende die native dokumentierte oEmbed-Route über den normalen extract()-Router. Für diesen oEmbed-Pfad ist keine TikTok-Benutzerautorisierung oder Zugriffstoken erforderlich. Ersetze keinen authentifizierten Display-API-Zugang durch normale öffentliche Embed-Metadaten.
Öffentliche Weibo-Beiträge
Für öffentliche Weibo-Beitrags-URLs verwende den nativen Adapter über den normalen extract()-Router. Er verwendet die anonyme mobile Weibo-PWA-JSON-Route und fragt die öffentliche extend-Route nur für Beiträge an, die als isLongText markiert sind. Füge keine Login-Cookies oder authentifizierten Sitzungszustände hinzu, wenn die öffentliche PWA-Route nicht verfügbar ist.
Öffentliche Zhihu-Inhalte
Für öffentliche Zhihu-Antworten und Zhuanlan-Artikel verwende die nativen Adapter über den normalen extract()-Router. Der Antwort-Adapter verwendet den anonymen öffentlichen Zhihu-Tardis-SSR-Reader; der Artikel-Adapter bevorzugt öffentlichen eingebetteten Initialzustand mit Tardis-Fallback. Füge kein x-zse, d_c0, kopierte Cookies oder eingeloggten Browser-Zustand hinzu, um eine blockierte Zhihu-API-Route funktionsfähig zu machen.
Adapter-Gesundheit
Bevor du in einem automatisierten Workflow von einer fragilen Plattform-Route abhängig bist, überprüfe die deterministische Gesundheit mit:
python -m sharextract --health
Für explizite Release-/Protokollverifikation verwende --live nur gegen die festgelegten öffentlichen Beispiele im Registry. Verwandle keine beliebigen Ziel-URLs in Gesundheitsprobes. Siehe references/adapter-health.md.