CommunityPesquisa e Análise de Dadosgithub.com

9398-haha/douyin-benchmark

Análise de concorrentes no Douyin · Insira uma conta do Douyin, colete todos os dados públicos dos posts e gere um relatório de benchmarking (dados brutos + Markdown + HTML em estilo revista claro). Skill compatível com agentes.

O que é douyin-benchmark?

Esta skill automatiza a coleta e análise de dados públicos de contas do Douyin (TikTok chinês) para produzir relatórios de benchmarking detalhados. Ela opera exclusivamente com dados visíveis publicamente na web, sem quebrar assinaturas, contornar CAPTCHAs ou acessar áreas restritas. A skill utiliza um perfil de navegador dedicado e segue regras rígidas de tratamento de erros, interrompendo a execução em caso de desafios de segurança, erros de serviço ou respostas vazias, sem tentativas de repetição automáticas. O fluxo completo inclui login assistido, raspagem de perfil e posts, e geração de artefatos: um JSON com dados brutos (`report_data.json`), um arquivo Markdown com análise estruturada em nove seções, e um HTML estilo revista claro e responsivo. É ideal para agentes que precisam realizar pesquisas de concorrência no Douyin de forma ética e dentro dos limites legais, fornecendo evidências para cada observação e inferência.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add 9398-haha/douyin-benchmark

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Análise de Concorrentes no Douyin

Deixe que o script cuide da coleta de contas públicas, agregação de dados e renderização HTML; o agente escreve um relatório Markdown com evidências bem fundamentadas com base no report_data.json.

Limites a Serem Respeitados

  • Colete apenas dados visíveis publicamente na web; não quebre assinaturas, não burle CAPTCHAs ou controles de acesso.
  • Use apenas o login dedicado em ~/.douyin-benchmark/chrome-profile. Não leia, copie ou aponte diretamente para o diretório de perfil do Chrome do usuário; não exiba valores de Cookies.
  • Mantenha valores ausentes como ausentes; não os reescreva como 0. Curtidas só podem ser usadas como proxy de engajamento público, não como métricas de desempenho de visualização, taxa de interação ou efeito de conversão de seguidores.
  • Diferencie entre tela de login comum, desafio de segurança real e erro de serviço da página. Pare ao encontrar desafios de segurança, erros de serviço ou respostas vazias com bloqueio suave; não faça repetições em loop, troque IP automaticamente, crie tarefas com atraso automático ou prometa conclusão posterior.

Preparação Inicial

Execute no diretório desta Skill:

npm ci
node scripts/login.js

login.js abre um navegador dedicado, salva automaticamente o estado de login após verificar uma conta real e fecha. Para verificar se já existe um login salvo, execute node scripts/login.js --check.

Execução com Um Comando

De preferência, peça ao usuário o link curto "Compartilhar Perfil" do aplicativo Douyin. O número do Douyin não é o sec_uid; acessar diretamente /user/<número> pode redirecionar silenciosamente para o feed.

OUT="$HOME/douyin-benchmark-output/<identificador da conta>"
node scripts/run_benchmark.js "<link de compart. do perfil/sec_uid/número do Douyin/apelido>" "$OUT" \
  --expected-id "<número do Douyin, opcional>"

Por padrão, usa o Chrome com cabeçalho (modo gráfico) para melhor observabilidade e correspondência com o User-Agent real do navegador. Somente em ambientes sem interface gráfica adicione --headless. O script executa sequencialmente:

  1. Resolve o link curto ou sec_uid; apenas quando fornecido apelido/número do Douyin, usa a busca interna do site.
  2. Coleta perfil, posts e coleções e escreve account_full_raw.json.
  3. Se houver posts, gera report_data.json e 调研报告.html.
  4. Atualiza run_status.json durante todo o processo; não continua a análise após falha.

Leia o Status Antes de Escrever Conclusões

Leia run_status.json e account_full_raw.json.capture:

  • complete: A API retornou has_more=0. Pode-se escrever um relatório completo da conta; ainda assim, verifique a diferença entre o número de posts no perfil e o número coletado.
  • partial: Escreva apenas um "Relatório de Amostra Coletada", indicando o tamanho da amostra, o total de posts no perfil e a taxa de cobertura próximo ao título; não use termos como "completo" ou "máximo da conta".
  • blocked_empty_body: A API de posts retornou HTTP 200, mas corpo vazio. Pare as requisições, entregue apenas um snapshot do perfil e diagnóstico; qualquer nova tentativa deve ser decidida pelo usuário, no máximo uma vez.
  • challenge: Peça ao usuário para completar a verificação no navegador dedicado antes de tentar novamente; não tente burlar.
  • login_required: A página exibe uma tela de login comum, não um desafio de segurança. Execute o script de login e tente novamente apenas uma vez após o sucesso.
  • page_service_error: A área de posts mostra claramente "Erro de serviço, recarregue para obter dados". Pare de recarregar; após verificar o estado de login, tente novamente no máximo uma vez.
  • no_post_response: Pode ser erro de entrada ou mudança na página/API. Primeiro verifique o sec_uid e a página com cabeçalho; não aumente o número de rolagens cegamente.
  • endpoint_error: A API de posts retornou erro HTTP/API ou conteúdo não-JSON. Mantenha o diagnóstico e pare a análise; verifique primeiro se houve mudança na página/API.

Escrevendo o Markdown

Somente quando report_data.json existir e contiver posts analisáveis, leia completamente o references/report-template.md e escreva $OUT/调研报告.md seguindo a estrutura de nove seções.

Divida o conteúdo em três categorias com redação clara:

  • Fatos: Campos públicos do JSON e resultados calculados.
  • Observações: Título, biografia, nome da coleção, capa ou conteúdo de vídeos efetivamente abertos.
  • Inferências: Persona, caminho de monetização, fórmula de conteúdo; apresente evidências e nível de confiança, não trate como fato.

Se não houver texto de comentários, não escreva "sentimentos dos comentários populares"; se não tiver assistido aos vídeos, não afirme detalhes de enquadramento, narração, roteiro ou performance. Quando o usuário especificar seu próprio nicho, migre a lista de itens replicáveis de forma direcionada.

Validação

  • account_full_raw.json, run_status.json, report_data.json, 调研报告.html e 调研报告.md devem ter estados consistentes.
  • Tanto o HTML quanto o Markdown devem exibir o tamanho real da amostra coletada, o número de posts no perfil, a taxa de cobertura e o capture_status.
  • Em caso de bloqueio, verifique capture.diagnostics.page: registre apenas título, caminho, sinais booleanos de login/desafio/erro de serviço e número de links de vídeo; não salve corpo da página ou Cookies.
  • Os números devem corresponder item por item ao report_data.json; valores ausentes devem ser exibidos como —/desconhecido.
  • O HTML deve poder ser aberto offline; o texto externo deve ser escapado; falhas na capa não devem afetar o corpo.
  • O HTML não deve ter transbordamento horizontal em toda a página; o título do post mais recente deve ser legível. A frequência de postagem deve mostrar os últimos 12 meses com base no número de posts (barras); apenas na coleta completa os meses sem posts devem ser preenchidos com 0.
  • O Markdown deve conter todas as nove seções, incluindo a métrica dos dados, os limites das evidências, a lista de itens replicáveis e os itens que não podem ser copiados.

Configuração

  • DOUYIN_PROFILE_DIR: Diretório de login dedicado; padrão: ~/.douyin-benchmark/chrome-profile.
  • DOUYIN_BROWSER_CHANNEL: Padrão: chrome; defina como chromium para instalar primeiro o Playwright Chromium.
  • DOUYIN_HEADLESS=true: Ativa explicitamente o modo sem cabeçalho; padrão: com cabeçalho.
  • DOUYIN_SCROLL_WAIT_MS: Limite inferior do intervalo de rolagem, padrão: 1600ms; não use para coleta de alta frequência.

Habilidades Relacionadas