Communitygithub.com

wuaishare/sharextract

Extracteur de contenu public orienté protocole et compétence Agent pour les discussions IA, publications sociales, médias et pages web.

Qu'est-ce que sharextract ?

ShareXtract est un outil et une compétence d'agent spécialisé dans l'extraction de contenu public partagé avec la plus haute fidélité et le coût le plus bas possible. Il supporte de nombreuses plateformes comme les réseaux sociaux (TikTok, Douyin, Kuaishou, Weibo, Xiaohongshu, Zhihu), les médias, les pages web standard et les flux RSS/Atom. L'outil fonctionne en respectant un protocole strict pour préserver la provenance du contenu (API documentées en priorité, puis syndication RSS, structures HTML, extraction spécialisée comme yt-dlp, et enfin rendu navigateur uniquement si nécessaire). Il est conçu pour les workflows d'agents IA, les chats, et toute automatisation nécessitant une extraction de contenu fiable et vérifiable. ShareXtract impose des garde-fous stricts contre le contournement d'accès (paywall, login, CAPTCHA), et garantit que seules les données publiques accessibles à l'utilisateur sont extraites.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add wuaishare/sharextract

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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

  1. 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.
  2. Exécutez : python -m sharextract "URL" --format json
  3. 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.
  4. Inspectez extraction_method, confidence, warnings, canonical_url et metadata avant d'utiliser le résultat en aval. Pour les flux, utilisez metadata.feed.entries ; pour les transcriptions, utilisez metadata.transcript.cues ; pour les pages ordinaires, metadata.syndication_feeds et metadata.subtitle_tracks peuvent exposer des ressources publiques de suivi déclarées.
  5. 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.
  6. Si une route spécialisée échoue, laissez le routeur utiliser un repli et signalez la route défaillante dans les avertissements.
  7. 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.

Skills associés