Que fait sharextract ?
Extrayez le contenu public partagé avec la meilleure fidélité possible, au coût le plus bas, et préservez la méthode d'obtention du contenu.
Flux de travail
- Traitez l'URL fournie comme une entrée publique uniquement. Ne réutilisez jamais les cookies du navigateur, les jetons de session, les identifiants ou les données issues de connecteurs privés, sauf si l'utilisateur demande explicitement un workflow authentifié et que la plateforme l'autorise.
- Exécutez :
python -m sharextract "URL" --format json - Préférez le résultat ayant la provenance la plus forte :
- API publique documentée, standards de syndication ouverts (RSS/Atom) ou oEmbed ;
- Données JSON publiques propriétaires / données d'hydratation ;
- JSON-LD / OpenGraph / HTML structuré ;
- Extracteur de contenu public spécialisé tel que yt-dlp ;
- HTML statique lisible ;
- Rendu navigateur uniquement lorsqu'une page publique nécessite réellement JavaScript.
- Inspectez
extraction_method,confidence,warnings,canonical_urletmetadataavant d'utiliser le résultat en aval. Pour les flux, utilisezmetadata.feed.entries; pour les transcriptions, utilisezmetadata.transcript.cues; pour les pages ordinaires,metadata.syndication_feedsetmetadata.subtitle_trackspeuvent exposer des ressources publiques de suivi déclarées. - Conservez le sens original et les références médias. N'inventez pas silencieusement du texte manquant, des auteurs, des horodatages ou des métadonnées de plateforme.
- Si une route spécialisée échoue, laissez le routeur utiliser un repli et signalez la route défaillante dans les avertissements.
- Arrêtez-vous plutôt que de contourner des murs de connexion, des CAPTCHAs, des paywalls, des challenges WAF, des liens privés ou d'autres contrôles d'accès.
Commandes
JSON normalisé par défaut :
python -m sharextract "https://exemple.com/partage/..." --format json
Markdown lisible :
python -m sharextract "https://exemple.com/article" --format markdown
Forcer l'extraction web générale :
python -m sharextract "https://exemple.com/article" --strategy web
Métadonnées média uniquement :
python -m sharextract "https://www.youtube.com/watch?v=..." --strategy media
Dépendances web/média optionnelles de meilleure qualité :
python -m pip install -e ".[all]"
Surfaces de service optionnelles :
python -m pip install -e ".[mcp,service]"
sharextract-mcp
sharextract-api --port 8787
Utilisez les couches de service uniquement comme des transports autour du même contrat d'extraction de contenu public ; la logique spécifique à une plateforme appartient aux adaptateurs, pas aux gestionnaires MCP/HTTP.
Contrat de sortie
Le résultat JSON contient source_url, canonical_url, platform, kind, extraction_method, confidence, title, author, text, markdown, html optionnel, normalized messages, media references, metadata, warnings et retrieved_at.
Lisez references/platform-matrix.md pour décider comment une plateforme doit être gérée. Lisez references/adding-adapters.md avant d'ajouter ou de modifier un adaptateur de plateforme. Lisez references/ecosystem.md pour décider s'il faut réutiliser un extracteur open source existant plutôt que d'en écrire un nouveau.
Garde-fous
ShareXtract est conçu pour le contenu déjà public pour le demandeur. Ce n'est pas un framework de contournement anti-bot. N'ajoutez pas de furtivité, de résolution de CAPTCHA, de collecte d'identifiants, de contournement de signature, de rotation de comptes de masse ou de contournement de contrôle d'accès.
Pour les points d'accès propriétaires instables, étiquetez-les comme non documentés et conservez un repli vers une page publique. Privilégiez les adaptateurs qui peuvent être testés avec des fixtures statiques et qui échouent en position de sécurité lorsque le contenu ne peut pas être vérifié.
Métadonnées vidéo publiques Kuaishou
Pour les vidéos publiques Kuaishou, privilégiez une URL actuelle officielle de partage / copie de lien v.kuaishou.com ou kuaishou.com/f. L'adaptateur natif consomme le SSR Apollo de page PC anonyme provenant de la même réponse de redirection publique et exporte uniquement les métadonnées. Les URL vidéo courtes nues peuvent omettre visionVideoDetail ; lorsque cela se produit, demandez un nouveau lien de partage officiel au lieu de créer des cookies did ou d'appeler l'API privée GraphQL de détail. N'exportez jamais photoUrl, manifest, adaptive-representation ou les URL CDN MP4 temporaires depuis l'état Apollo.
Notes publiques Xiaohongshu
Pour les notes Xiaohongshu, utilisez une URL actuelle officielle de partage / copie de lien ou un lien court officiel xhslink. ShareXtract consomme un xsec_token existant à partir de cette URL publique et lit l'état initial SSR propriétaire ; il ne génère ni n'actualise les jetons, et n'implémente pas de signature X-s/X-t de requête. Les URL de note nues sans jeton actuel doivent être rejetées avec l'instruction d'obtenir un nouveau lien de partage officiel. N'exportez pas les URL de flux vidéo/sous-titres temporaires intégrées dans l'état de la note.
Métadonnées vidéo publiques Douyin
Pour les URL vidéo publiques directes Douyin ou les liens courts v.douyin.com, utilisez l'adaptateur natif de métadonnées uniquement via extract(). Il lit la surface SSR Jingxuan/VideoObject anonyme propriétaire en utilisant une représentation de navigateur mobile normal. N'exportez pas les URL de lecture/téléchargement temporaires des données video_model intégrées, et n'ajoutez pas de a_bogus, de signatures d'appareil, de cookies copiés ou d'état de session connecté.
Vidéos publiques TikTok
Pour les URL vidéo publiques directes TikTok, utilisez la route oEmbed native documentée via le routeur normal extract(). Aucune autorisation utilisateur TikTok ou jeton d'accès n'est requis pour cette route oEmbed. Ne substituez pas l'accès à l'API d'affichage authentifié pour des métadonnées d'intégration publiques ordinaires.
Statuts publics Weibo
Pour les URL de statuts publics Weibo, utilisez l'adaptateur natif via le routeur normal extract(). Il utilise la route JSON PWA mobile anonyme de Weibo et n'appelle la route publique étendue que pour les statuts marqués isLongText. N'ajoutez pas de cookies de connexion ou d'état de session authentifié lorsque la route PWA publique est indisponible.
Contenu public Zhihu
Pour les réponses publiques Zhihu et les articles Zhuanlan, utilisez les adaptateurs natifs via le routeur normal extract(). L'adaptateur de réponse utilise le lecteur SSR Tardis public anonyme de Zhihu ; l'adaptateur d'article privilégie l'état initial public intégré avec repli Tardis. N'ajoutez pas x-zse, d_c0, de cookies copiés ou d'état de navigateur connecté pour faire fonctionner une route d'API Zhihu bloquée.
Santé des adaptateurs
Avant de dépendre d'une route de plateforme fragile dans un workflow automatisé, inspectez la santé déterministe avec :
python -m sharextract --health
Pour une vérification explicite de version/protocole, utilisez --live uniquement contre les échantillons publics fixes du registre. Ne transformez pas des URL cibles arbitraires en sondes de santé. Voir references/adapter-health.md.