Análise de Competidores do TikTok: Crie um Relatório Semanal de Conteúdo
Web Data Collection Specialist
TL;DR:
- A análise de concorrentes do TikTok começa com um conjunto de contas fixo. Registre quais contas de marcas públicas pertencem ao relatório antes de coletar quaisquer postagens.
- Amostras comparáveis importam mais do que totais não rotulados. Use a mesma contagem solicitada e janela de coleta para cada conta, em seguida, divulgue as contagens de itens retornados.
- As categorias de conteúdo precisam de regras revisáveis. Armazene frases e hashtags correspondentes ao lado de cada rótulo de tema para que um revisor possa corrigir a classificação.
- As medianas reduzem a influência de uma postagem viral. Relate distribuições e a cadência da amostra observada ao lado dos totais.
- Um relatório semanal descreve amostras observadas. Sem cobertura completa verificada por todo o período, não pode reivindicar a frequência exata de postagens de uma conta.
- Gratuito para começar. Novas contas Scrapeless incluem crédito gratuito; crie uma conta no Painel Scrapeless.
Introdução: relatórios de concorrentes falham na etapa de amostragem
Os feeds de marcas públicas são fáceis de comparar mal. Uma conta pode contribuir com 30 postagens observadas, outra 8, e um único outlier pode dominar o engajamento médio. Um gráfico polido não repara essa discrepância.
Este fluxo de trabalho constrói um relatório semanal de conteúdo de concorrentes do TikTok a partir de contas públicas selecionadas. Coleta amostras de postagens delimitadas, rotula o conteúdo com regras simples revisáveis, resume o engajamento com medianas e intervalos e torna o escopo da coleta visível no relatório final.
Use o guia de análise de influenciadores do TikTok quando o conjunto de contas for composto por criadores em vez de concorrentes de marcas.
Pipeline em Um Olhar
Um pipeline prático de análise de concorrentes do TikTok tem cinco etapas:
- Defina a lista de concorrentes e o período de relatório.
- Resolva cada nome de usuário público para
sec_uid. - Colete a mesma amostra de postagens delimitada para cada conta.
- Classifique descrições e hashtags com regras transparentes.
- Agregue a amostra observada em um relatório semanal.
O pipeline armazena respostas brutas e linhas normalizadas antes de calcular qualquer resumo. Essa separação mantêm uma mudança de relatório de forçar outra execução de coleta.
Pré-requisitos
- Uma conta Scrapeless e token da API do Painel Scrapeless
- Python 3 com sua biblioteca padrão
- Uma lista revisada de nomes de usuário de marcas públicas
- Uma contagem de postagens solicitadas fixa e um timestamp de coleta
- Um pequeno dicionário de categorias que um humano pode inspecionar
- Um token ativo exportado como
SCRAPELESS_API_KEYpara o código abaixo
O exemplo montado é marcado como uma lacuna de pré-requisito porque precisa da credencial da API do leitor e das contas selecionadas. A lógica de transformação está incluída, mas o artigo não contém credenciais privadas ou saída de ator fabricada.
Etapa 1: Defina um Conjunto de Concorrentes Comparáveis
Uma lista de concorrentes faz parte da especificação do relatório. Dê a cada conta um rótulo interno estável, um nome de usuário público, o motivo pelo qual foi incluída, e a data em que a lista foi aprovada. Evite adicionar silenciosamente um grande editor ou um criador pessoal a um conjunto de contas de marcas de tamanho semelhante porque seu volume de conteúdo distorcerá a comparação.
Uma lista compacta pode parecer assim:
| account_label | username | inclusion_reason |
|---|---|---|
| Marca A | brand_a |
Concorrente direto da categoria |
| Marca B | brand_b |
Mesmo público e faixa de preço |
| Marca C | brand_c |
Benchmark de categoria adjacente |
Mantenha a lista fornecida pelo usuário. Os atores usados aqui não descobrem um mercado competitivo completo ou provam que duas contas competem comercialmente.
Etapa 2: Colete a Mesma Amostra de Postagens Delimitada
A etapa de coleta resolve cada nome de usuário por scraper.tiktok.user.detail, em seguida, fornece o sec_uid retornado para scraper.tiktok.user.work. A solicitação de postagem aceita cursor e count; este fluxo de trabalho começa no cursor documentado "0" com a mesma contagem solicitada para cada conta.
Armazene a contagem solicitada e a contagem retornada separadamente. Se uma conta retornar menos itens utilizáveis, não preencha suas métricas com linhas de valor zero. Divulgue a diferença no relatório semanal.
A resposta da postagem pode incluir descrições, hashtags, hora de criação, contagens de visualizações públicas e de engajamento, URLs, status fixado, idioma, música, legendas e campos de mídia. Valores opcionais podem estar vazios. Um valor ausente deve permanecer ausente até que a semântica da fonte justifique outra interpretação.
Comece a Coletar com Scrapeless
Potencialize seu fluxo de trabalho de web scraping e automação com o Scrapeless!
Inscreva-se hoje e ganhe $5 em crédito gratuito — sem necessidade de cartão de crédito.
Reivindique seu crédito grátis agora no Scrapeless Dashboard.
Etapa 3: Classifique o Conteúdo Com Regras Avaliáveis
A classificação de conteúdo deve preservar as evidências por trás de cada rótulo. Uma tabela de regras simples é frequentemente suficiente para um relatório operacional semanal:
| Tema | Frases descritivas | Hashtags |
|---|---|---|
| Educação do produto | how to, tips, explained |
tutorial, howto |
| Lançamento | new, introducing, available now |
launch, newproduct |
| Promoção | sale, discount, limited offer |
sale, deal |
| Comunidade | duet, challenge, your turn |
challenge, community |
Esses rótulos são regras editoriais, não fatos fornecidos por atores. Salve o termo correspondente e permita uncategorized quando nenhuma regra se encaixar. Um revisor pode então distinguir um erro de classificação de um erro de coleta.
Rótulos baseados em regras também expõem sobreposição. Um post pode discutir um lançamento de produto e uma promoção ao mesmo tempo. Permita múltiplos rótulos ou defina uma ordem de prioridade documentada; não deixe a ordem do dicionário decidir invisivelmente.
Etapa 4: Resuma o Envolvimento e a Cadência Observada
As contagens de envolvimento público são observações acumulativas capturadas no momento da coleta. Compare-as dentro da amostra declarada, em vez de tratá-las como uma medida completa do desempenho da marca.
Os campos úteis por conta incluem:
- Contagem de posts retornados
- Hora de criação mais antiga e mais recente na amostra observada
- Contagens medianas de visualizações, curtidas, comentários e compartilhamentos
- Valores mínimo e máximo para mostrar a dispersão
- Participação de tema dentro da amostra classificada
- Contagem de posts fixados na amostra
- Lacunas observadas entre datas de posts amostrados adjacentes
A documentação do módulo statistics do Python define a operação mediana utilizada na implementação. Uma mediana fornece o valor observado do meio e limita a influência de um post incomumente grande, mas não elimina o viés de amostragem.
A cadência de postagem precisa de uma redação cuidadosa. Se a amostra coletada não provar cobertura completa do período de reporte, informe “posts observados na amostra coletada” e o intervalo de datas entre seus itens mais antigos e mais recentes. Não apresente esse número como a frequência exata de postagem semanal da conta.
Etapa 5: Monte o Pipeline Python
O script abaixo coleta uma amostra inicial fixa para cada nome de usuário fornecido, atribui um ou mais temas de conteúdo e escreve tanto linhas de nível de post quanto um resumo de nível de conta. A documentação do módulo CSV do Python abrange o formato de exportação, e o NIST Privacy Framework fornece uma estrutura útil para decisões de acesso, retenção e minimização de dados.
Nota: O código abaixo requer um token da API Scrapeless ativo em
SCRAPELESS_API_KEYe nomes de usuários públicos reais fornecidos pelo leitor.
python
import csv
import json
import os
from datetime import datetime, timezone
from statistics import median
from urllib.request import Request, urlopen
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
TOKEN = os.environ["SCRAPELESS_API_KEY"]
ACCOUNTS = [name.strip().lstrip("@") for name in os.environ[
"TIKTOK_COMPETITOR_USERNAMES"
].split(",") if name.strip()]
REQUESTED_COUNT = 20
THEMES = {
"product_education": {"how to", "tips", "explained", "tutorial", "howto"},
"launch": {"new", "introducing", "available now", "launch", "newproduct"},
"promotion": {"sale", "discount", "limited offer", "deal"},
"community": {"duet", "challenge", "your turn", "community"},
}
def run_actor(actor, actor_input):
data = json.dumps({"actor": actor, "input": actor_input}).encode()
request = Request(
ENDPOINT,
data=data,
headers={"x-api-token": TOKEN, "content-type": "application/json"},
method="POST",
)
with urlopen(request, timeout=60) as response:
return json.load(response)
def labels_for(item):
hashtag_values = []
for tag in item.get("hashtags") or []:
hashtag_values.append(
str(tag.get("name", "")) if isinstance(tag, dict) else str(tag)
)
searchable = " ".join([
str(item.get("description") or ""),
" ".join(hashtag_values),
]).lower()
labels = [
theme for theme, terms in THEMES.items()
if any(term in searchable for term in terms)
]
return labels or ["uncategorized"]
def metric(item, name):
value = item.get(name)
return value if isinstance(value, (int, float)) else None
collected_at = datetime.now(timezone.utc).isoformat()
rows = []
for username in ACCOUNTS:
profile = run_actor("scraper.tiktok.user.detail", {"unique_id": username})
response = run_actor(
"scraper.tiktok.user.work",
{"sec_uid": profile["sec_uid"], "cursor": "0", "count": REQUESTED_COUNT},
)
with open(f"{username}-posts-raw.json", "w", encoding="utf-8") as raw_file:
json.dump(response, raw_file, ensure_ascii=False, indent=2)
for item in response.get("items") or []:
rows.append({
"account": username,
"collected_at": collected_at,
"requested_count": REQUESTED_COUNT,
"post_id": str(item.get("id") or item.get("post_id") or ""),
"post_url": item.get("url") or item.get("post_url") or "",
"created_at": item.get("create_time") or item.get("date") or "",
"themes": "|".join(labels_for(item)),
"play_count": metric(item, "play_count"),
"like_count": metric(item, "like_count"),
"comment_count": metric(item, "comment_count"),
"share_count": metric(item, "share_count"),
"is_pinned": item.get("is_pinned"),
})
with open("competitor-posts.csv", "w", newline="", encoding="utf-8") as output:
writer = csv.DictWriter(output, fieldnames=rows[0].keys() if rows else ["account"])
writer.writeheader()
writer.writerows(rows)
with open("competitor-weekly-summary.csv", "w", newline="", encoding="utf-8") as output:
fields = ["account", "observed_posts", "median_plays", "median_likes"]
writer = csv.DictWriter(output, fieldnames=fields)
writer.writeheader()
for username in ACCOUNTS:
account_rows = [row for row in rows if row["account"] == username]
plays = [row["play_count"] for row in account_rows if row["play_count"] is not None]
likes = [row["like_count"] for row in account_rows if row["like_count"] is not None]
writer.writerow({
"account": username,
"observed_posts": len(account_rows),
"median_plays": median(plays) if plays else "",
"median_likes": median(likes) if likes else "",
})
O resumo diz intencionalmente observed_posts. Amplie-o com contagens de temas, intervalos de valores e intervalos de datas amostrados após confirmar a representação exata do timestamp na resposta ao vivo.
Modelo de Relatório Semanal de Conteúdo de Concorrentes
Um relatório útil pode caber em uma página antes do apêndice:
| Seção | Incluir | Nota de escopo |
|---|---|---|
| Resumo da coleta | Lista de contas, tempo de coleta, contagens solicitadas e retornadas | Declare que os resultados cobrem amostras coletadas |
| Mistura de conteúdo | Contagens e participações de temas, taxa não categorizada | Anexe o dicionário de regras atual |
| Envolvimento | Mediana e intervalo por métrica e conta | Contagens públicas cumulativas no momento da coleta |
| Cadência | Datas de posts observados e lacunas | Não afirme frequência total do período sem cobertura |
| Posts notáveis | URL do post, tema, contexto métrico, nota do revisor | Separe observações de interpretação |
| Ações | Perguntas para testar no próximo relatório | Evite copiar ativos criativos protegidos |
Coloque linhas de nível de post em um apêndice ou CSV vinculado. O relatório principal deve permitir que o leitor rastreie cada conclusão até uma conta amostrada, URL do post, tempo de coleta e regra de classificação.
Lide com Dados de Contas Públicas de Forma Responsável
Um perfil público ainda pode conter dados pessoais. Limite o conjunto de contas ao propósito do relatório, restrinja o acesso às respostas brutas, defina um cronograma de exclusão e evite inferir características sensíveis de legendas, linguagem ou conteúdo visual.
A análise de concorrentes deve descrever padrões de conteúdo observáveis. Não deve republicar mídias, imitar trabalhos criativos protegidos ou atribuir intenções ocultas a uma marca ou criador. Mantenha a revisão humana no loop para rótulos que possam afetar decisões comerciais.
Scrapeless fornece os atores de coleta através da Scraping API. Confira a página de preços atual ao traduzir os números de conta e amostra solicitados em um plano de produção.
Conclusão: torne a comparação auditável
A análise de concorrentes do TikTok torna-se útil quando cada número carrega seu escopo. Corrija a lista de contas, solicite amostras comparáveis, preserve respostas brutas, exponha regras de classificação e relate medianas com contagens retornadas. O resultado é um relatório de conteúdo semanal que apoia a revisão sem fingir que a amostra é uma visão completa de cada conta.
Pronto para Construir um Relatório Semanal de Concorrentes?
Junte-se ao Scrapeless Discord ou à comunidade do Telegram para discutir padrões de coleta e relatoria. Crie uma conta no Scrapeless Dashboard quando a lista e a política de amostra estiverem prontas.
FAQ
Q: O que é análise de concorrentes do TikTok?
A análise de concorrentes do TikTok compara conteúdo público observável e padrões de engajamento em um conjunto de contas definido pelo usuário. Um relatório defensável também declara seu tempo de coleta, tamanho da amostra e regras de classificação.
Q: Quais métricas pertencem a um relatório semanal de concorrentes?
Um relatório semanal de concorrentes pode incluir contagem de postagens observadas, intervalo de datas da amostra, mistura de temas de conteúdo, contagens medianas de engajamento público, intervalos e links para postagens notáveis. Cada métrica deve ser rotulada como uma observação da amostra.
Q: A amostra pode mostrar a frequência exata de postagens?
A amostra mostra a frequência exata de postagens apenas quando a coleta verificou a cobertura completa do período declarado. Caso contrário, relate as datas observadas e as lacunas dentro da amostra coletada.
Q: Por que usar engajamento mediano em vez de engajamento médio?
O engajamento mediano reduz a influência de um valor observado incomumente grande. Ele ainda depende da qualidade da amostra, então publique a contagem da amostra e o intervalo ao lado dele.
Q: O fluxo de trabalho precisa de um parser de navegador ou configuração de proxy?
A API retorna os campos de contas públicas e postagens suportados para os identificadores fornecidos. O pipeline de relatórios ainda define contas, limites de amostra, armazenamento, classificação e revisão.
Q: Coletar conteúdo público de concorrentes é legal?
A legalidade depende da jurisdição, propósito, dados, método de acesso e termos aplicáveis. Colete apenas os campos públicos necessários, respeite a propriedade intelectual, limite a retenção e obtenha aconselhamento jurídico para o uso específico.
Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.



