¿Qué hace sharextract?
Extrae contenido público compartido utilizando el método de mayor fidelidad y menor coste disponible, preservando cómo se obtuvo el contenido.
Flujo de trabajo
- Trata la URL proporcionada como entrada exclusivamente pública. No reutilices cookies del navegador, tokens de sesión, credenciales ni datos privados de conectores a menos que el usuario solicite explícitamente un flujo autenticado y la plataforma lo permita.
- Ejecuta:
python -m sharextract "URL" --format json - Prefiere el resultado con la procedencia más sólida:
- API pública documentada, estándares de sindicación abierta (RSS/Atom) o oEmbed;
- Datos públicos JSON/hydration de primera parte;
- JSON-LD/OpenGraph/HTML estructurado;
- Extractor especializado de contenido público como yt-dlp;
- HTML estático legible;
- Renderizado en navegador solo cuando una página pública realmente requiera JavaScript.
- Inspecciona
extraction_method,confidence,warnings,canonical_urlymetadataantes de usar el resultado. Para fuentes, usametadata.feed.entries; para transcripciones,metadata.transcript.cues; para páginas normales,metadata.syndication_feedsymetadata.subtitle_trackspueden exponer recursos públicos declarados. - Preserva el significado original y las referencias multimedia. No inventes silenciosamente texto, autoría, marcas de tiempo o metadatos de la plataforma que falten.
- Si una ruta especializada falla, permite que el enrutador recurra al método de respaldo e informe la ruta fallida en
warnings. - Detente en lugar de eludir muros de inicio de sesión, CAPTCHAs, muros de pago, desafíos WAF, enlaces privados y otros controles de acceso.
Comandos
JSON normalizado por defecto:
python -m sharextract "https://example.com/share/..." --format json
Markdown legible:
python -m sharextract "https://example.com/article" --format markdown
Extracción web general forzada:
python -m sharextract "https://example.com/article" --strategy web
Solo metadatos multimedia:
python -m sharextract "https://www.youtube.com/watch?v=..." --strategy media
Dependencias opcionales de mayor calidad web/multimedia:
python -m pip install -e ".[all]"
Superficies de servicio opcionales:
python -m pip install -e ".[mcp,service]"
sharextract-mcp
sharextract-api --port 8787
Usa las capas de servicio solo como transportes alrededor del mismo contrato de extracción de contenido público; la lógica específica de la plataforma pertenece a los adaptadores, no a los manejadores MCP/HTTP.
Contrato de salida
El resultado JSON contiene source_url, canonical_url, platform, kind, extraction_method, confidence, title, author, text, markdown, html opcional, mensajes normalizados, referencias multimedia, metadata, warnings y retrieved_at.
Lee references/platform-matrix.md al decidir cómo manejar una plataforma. Lee references/adding-adapters.md antes de añadir o modificar un adaptador de plataforma. Lee references/ecosystem.md al decidir si reutilizar un extractor open-source existente en lugar de escribir uno nuevo.
Salvaguardas
ShareXtract está pensado para contenido que ya es público para el solicitante. No es un marco de evasión anti-bots. No añadas sigilo, resolución de CAPTCHAs, recolección de credenciales, elusión de firmas, rotación masiva de cuentas ni bypasses de control de acceso.
Para endpoints inestables de primera parte, etiquétalos como no documentados y mantén un respaldo de página pública. Prefiere adaptadores que puedan probarse con fixtures estáticos y que fallen de manera segura cuando el contenido no se pueda verificar.
Metadatos de videos públicos de Kuaishou
Para videos públicos de Kuaishou, prefiere una URL actual oficial de v.kuaishou.com o kuaishou.com/f/ Compartir / Copiar enlace. El adaptador nativo consume el Apollo SSR de página anónima de PC proveniente de la misma respuesta de redirección pública y exporta solo metadatos. Las URLs de video corto sin adornos pueden omitir visionVideoDetail; cuando esto suceda, solicita un nuevo enlace de compartir oficial en lugar de crear cookies did o llamar a la API privada GraphQL de detalle. Nunca exportes photoUrl, manifest, adaptive-representation ni URLs temporales de CDN MP4 del estado Apollo.
Notas públicas de Xiaohongshu
Para notas de Xiaohongshu, usa una URL actual oficial de Compartir / Copiar enlace o un enlace corto oficial de xhslink. ShareXtract consume un xsec_token existente de esa URL pública y lee el estado inicial SSR de primera parte; no genera/renueva tokens ni implementa el firmado de peticiones X-s/X-t. Las URLs de nota sin un token actual deben rechazarse con la indicación de obtener un nuevo enlace de compartir oficial. No exportes URLs de transmisión de video/subtítulos temporales incrustadas en el estado de la nota.
Metadatos de videos públicos de Douyin
Para URLs directas de videos públicos de Douyin o enlaces cortos de v.douyin.com, usa el adaptador nativo solo de metadatos a través de extract(). Lee la superficie anónima de Jingxuan SSR/VideoObject de primera parte usando una representación normal de navegador móvil. No exportes URLs de reproducción/descarga temporales de los datos incrustados de video_model, y no añadas a_bogus, firmas de dispositivo, cookies copiadas ni estado de sesión iniciada.
Videos públicos de TikTok
Para URLs directas de videos públicos de TikTok, usa la ruta oEmbed nativa documentada a través del enrutador normal extract(). No se requiere autorización de usuario de TikTok ni token de acceso para esta ruta oEmbed. No sustituyas el acceso autenticado a la API Display por metadatos de incrustación pública ordinarios.
Estados públicos de Weibo
Para URLs de estados públicos de Weibo, usa el adaptador nativo a través del enrutador normal extract(). Utiliza la ruta JSON anónima de PWA móvil de Weibo y solicita la ruta pública extendida solo para estados marcados como isLongText. No añadas cookies de inicio de sesión ni estado de sesión autenticada cuando la ruta PWA pública no esté disponible.
Contenido público de Zhihu
Para respuestas públicas de Zhihu y artículos de Zhuanlan, usa los adaptadores nativos a través del enrutador normal extract(). El adaptador de respuestas utiliza el lector público Tardis SSR de Zhihu; el adaptador de artículos prefiere el estado inicial público incrustado con respaldo de Tardis. No añadas x-zse, d_c0, cookies copiadas ni estado de navegador iniciado para hacer funcionar una ruta bloqueada de la API de Zhihu.
Salud del adaptador
Antes de depender de una ruta de plataforma frágil en un flujo de trabajo automatizado, verifica la salud determinista con:
python -m sharextract --health
Para verificación explícita de lanzamiento/protocolo, usa --live solo contra las muestras públicas fijas del registro. No conviertas URLs de destino arbitrarias en sondas de salud. Consulta references/adapter-health.md.