Communitygithub.com

wuaishare/sharextract

Extrator de conteúdo público baseado em protocolo, projetado para agentes de IA: extrai posts de redes sociais, chats, mídia e páginas web.

O que é sharextract?

O **ShareXtract** é uma skill especializada para agentes de IA (como Claude Code, Cursor, Codex) que precisa extrair conteúdo de URLs públicas com a máxima fidelidade e o menor custo possível. Ela funciona como um roteador inteligente: para cada URL fornecida, a skill escolhe automaticamente o melhor método de extração disponível (API pública, RSS/Atom, dados JSON-LD, HTML estruturado, extratores especializados como yt-dlp, ou renderização via navegador apenas quando necessário). A skill documenta explicitamente o método de extração usado, o nível de confiança, a URL canônica e inclui avisos caso alguma rota tenha falhado, permitindo que o agente tome decisões informadas sobre como usar o resultado. Além disso, o ShareXtract possui guardrails rígidos: ele **não** contorna paywalls, CAPTCHAs, logins ou WAFs, e **não** utiliza cookies de sessão, tokens ou credenciais do usuário a menos que explicitamente solicitado e permitido pela plataforma. A ferramenta é ideal para cenários onde o conteúdo já é público para o solicitante, como monitoramento de mídias sociais, sumarização de artigos e feeds, e coleta de metadados de vídeos (YouTube, TikTok, Douyin, Kuaishou, entre outros). Plataformas suportadas incluem: YouTube, TikTok, Douyin, Kuaishou, Xiaohongshu, Weibo, Zhihu, páginas web genéricas, RSS/Atom, oEmbed e feeds de sindicalização. O contrato de saída é padronizado em JSON, com campos como `source_url`, `canonical_url`, `platform`, `kind`, `extraction_method`, `confidence`, `metadata` e `warnings`, o que facilita o consumo por pipelines de IA.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add wuaishare/sharextract

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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

  1. 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.
  2. Execute: python -m sharextract "URL" --format json
  3. 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.
  4. Inspecione extraction_method, confidence, warnings, canonical_url e metadata antes de usar o resultado downstream. Para feeds, use metadata.feed.entries; para transcrições, use metadata.transcript.cues; para páginas comuns, metadata.syndication_feeds e metadata.subtitle_tracks podem expor recursos públicos de acompanhamento declarados.
  5. 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.
  6. Se uma rota especializada falhar, permita que o roteador faça fallback e reporte a rota com falha em warnings.
  7. 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.

Habilidades Relacionadas