O que sharextract faz?
Extraia conteúdo público compartilhado com o método de maior fidelidade e menor custo disponível, preservando como o conteúdo foi obtido.
Fluxo de Trabalho
- Trate a URL fornecida apenas como entrada pública. Nunca reutilize cookies de navegador, tokens de sessão, credenciais ou dados de conectores privados, a menos que o usuário solicite explicitamente um fluxo autenticado e a plataforma o permita.
- Execute:
python -m sharextract "URL" --format json - Prefira o resultado com a proveniência mais forte:
- API pública documentada, padrões abertos de sindicalização (RSS/Atom) ou oEmbed;
- Dados públicos JSON/hydration de primeira parte;
- JSON-LD/OpenGraph/HTML estruturado;
- Extrator especializado de conteúdo público, como yt-dlp;
- HTML estático legível;
- Renderização via navegador apenas quando uma página pública realmente exigir JavaScript.
- Inspecione
extraction_method,confidence,warnings,canonical_urlemetadataantes de usar o resultado downstream. Para feeds, usemetadata.feed.entries; para transcrições, usemetadata.transcript.cues; para páginas comuns,metadata.syndication_feedsemetadata.subtitle_trackspodem expor recursos públicos de acompanhamento declarados. - Preserve o significado original e as referências de mídia. Não invente silenciosamente texto, autoria, timestamps ou metadados da plataforma que estejam ausentes.
- Se uma rota especializada falhar, permita que o roteador faça fallback e reporte a rota com falha em
warnings. - Pare em vez de contornar muros de login, CAPTCHAs, paywalls, desafios WAF, links privados ou outros controles de acesso.
Comandos
JSON normalizado padrão:
python -m sharextract "https://example.com/share/..." --format json
Markdown legível:
python -m sharextract "https://example.com/article" --format markdown
Forçar extração web genérica:
python -m sharextract "https://example.com/article" --strategy web
Apenas metadados de mídia:
python -m sharextract "https://www.youtube.com/watch?v=..." --strategy media
Dependências opcionais de maior qualidade (web/mídia):
python -m pip install -e ".[all]"
Superfícies de serviço opcionais:
python -m pip install -e ".[mcp,service]"
sharextract-mcp
sharextract-api --port 8787
Use as camadas de serviço apenas como transportes em torno do mesmo contrato de extração de conteúdo público; a lógica específica da plataforma pertence aos adaptadores, não aos manipuladores MCP/HTTP.
Contrato de Saída
O resultado JSON contém source_url, canonical_url, platform, kind, extraction_method, confidence, title, author, text, markdown, html opcional, mensagens normalizadas, referências de mídia, metadata, warnings e retrieved_at.
Leia references/platform-matrix.md ao decidir como uma plataforma deve ser tratada. Leia references/adding-adapters.md antes de adicionar ou modificar um adaptador de plataforma. Leia references/ecosystem.md ao decidir se deve reutilizar um extrator open-source existente em vez de escrever um novo.
Guardrails
ShareXtract é para conteúdo que já é público para o solicitante. Não é uma estrutura de bypass anti-bot. Não adicione stealth, resolução de CAPTCHA, coleta de credenciais, contorno de assinaturas, rotação em massa de contas ou bypass de controle de acesso.
Para endpoints de primeira parte instáveis, rotule-os como não documentados e mantenha um fallback para página pública. Prefira adaptadores que possam ser testados com fixtures estáticas e que falhem de forma segura quando o conteúdo não puder ser verificado.
Metadados de vídeos públicos do Kuaishou
Para vídeos públicos do Kuaishou, prefira uma URL atual oficial do v.kuaishou.com ou kuaishou.com/f/ (Compartilhar / Copiar Link). O adaptador nativo consome o Apollo SSR da página PC anônima da mesma resposta de redirecionamento público e exporta apenas metadados. URLs curtas de vídeo podem omitir visionVideoDetail; quando isso acontecer, solicite um novo link oficial de compartilhamento em vez de criar cookies did ou chamar a API GraphQL privada de detalhes. Nunca exporte photoUrl, manifest, adaptive-representation ou URLs temporárias de CDN MP4 do estado Apollo.
Notas públicas do Xiaohongshu
Para notas do Xiaohongshu, use uma URL atual oficial de Compartilhar / Copiar Link ou um link curto oficial do xhslink. O ShareXtract consome um xsec_token existente dessa URL pública e lê o estado inicial SSR de primeira parte; ele não gera/renova tokens ou implementa a assinatura de requisições X-s/X-t. URLs de notas sem um token atual devem ser rejeitadas com orientação para obter um novo link oficial de compartilhamento. Não exporte URLs temporárias de stream de vídeo/legendas incorporadas no estado da nota.
Metadados de vídeos públicos do Douyin
Para URLs diretas de vídeos públicos do Douyin ou links curtos v.douyin.com, use o adaptador nativo apenas de metadados através do extract(). Ele lê a superfície Jingxuan SSR/VideoObject anônima de primeira parte usando uma representação normal de navegador móvel. Não exporte URLs temporárias de reprodução/download dos dados embutidos em video_model, e não adicione a_bogus, assinaturas de dispositivo, cookies copiados ou estado de sessão logada.
Vídeos públicos do TikTok
Para URLs diretas de vídeos públicos do TikTok, use a rota nativa documentada do oEmbed através do roteador normal extract(). Nenhuma autorização de usuário do TikTok ou token de acesso é necessária para este caminho oEmbed. Não substitua o acesso autenticado à API Display por metadados públicos comuns de incorporação.
Status públicos do Weibo
Para URLs de status públicos do Weibo, use o adaptador nativo através do roteador normal extract(). Ele usa a rota JSON PWA anônima móvel do Weibo e solicita a rota pública extend apenas para status marcados como isLongText. Não adicione cookies de login ou estado de sessão autenticado quando a rota PWA pública não estiver disponível.
Conteúdo público do Zhihu
Para respostas públicas do Zhihu e artigos do Zhuanlan, use os adaptadores nativos através do roteador normal extract(). O adaptador de respostas usa o leitor Tardis SSR anônimo público do Zhihu; o adaptador de artigos prefere o estado inicial público incorporado com fallback do Tardis. Não adicione x-zse, d_c0, cookies copiados ou estado de navegador logado para fazer uma rota bloqueada da API do Zhihu funcionar.
Saúde do Adaptador
Antes de depender de uma rota frágil de plataforma em um fluxo de trabalho automatizado, inspecione a saúde determinística com:
python -m sharextract --health
Para verificação explícita de release/protocolo, use --live apenas contra as amostras públicas fixas do registro. Não transforme URLs alvo arbitrárias em probes de saúde. Consulte references/adapter-health.md.