Um criador pode parecer adequado para uma campanha pelo perfil e por alguns vídeos de destaque, mas o feed recente conta uma história mais importante: ele continua falando regularmente sobre o tema desejado? A verificação manual fica desatualizada rapidamente, e uma análise pontual pode acabar se concentrando nas publicações mais chamativas. Para uma agência ou marca, é mais útil reunir uma amostra reproduzível de vídeos públicos, guardar o estado na data da verificação e avaliar a adequação temática sempre com os mesmos critérios.

A seguir, apresentamos um processo prático para avaliar o feed público de um criador do TikTok. Ele usa a TikTok Scraper API da jsonscraper e Python: obtém publicações por uma rota documentada, salva o JSON original, organiza os campos confirmados em uma tabela e calcula a proporção de vídeos que correspondem a um tema definido. Se desejar, as descrições podem ser enviadas a um classificador de texto como uma etapa seguinte, separada e controlada.
Primeiro, defina o que significa «adequado»
Suponha que a equipe esteja escolhendo um criador para uma campanha sobre preparo de café em casa. O número de seguidores e a popularidade de vídeos específicos podem ajudar a descrever o alcance, mas, por si só, não respondem à pergunta de quanto o feed está relacionado ao café. Para uma triagem inicial, são necessários sinais de conteúdo: a descrição do vídeo menciona preparo de café, equipamentos, receitas ou avaliações? Quantas publicações sobre o tema entraram no período de observação definido? Qual é a proporção de vídeos temáticos entre os coletados?
Antes de coletar os dados, registre os critérios em um pequeno vocabulário, por exemplo: «espresso», «moedor de café», «latte», «extração». Acrescente exceções e palavras ambíguas. «Café» pode aparecer em uma piada, em uma inserção publicitária ou em um contexto incidental; portanto, a correspondência automática de texto é uma classificação inicial, não uma avaliação definitiva do criador. Separe pelo menos três categorias: correspondência clara, possível correspondência e vídeo irrelevante.
A amostra também deve ser definida com antecedência. Por exemplo, é possível analisar as últimas 20 publicações obtidas em cada execução semanal. Essa é uma condição do seu monitoramento, não uma promessa de que a API retornará exatamente esse volume: a disponibilidade e a composição dos resultados dependem da resposta a cada solicitação. Registre o horário da coleta, o número de itens obtidos e os parâmetros da solicitação para comparar snapshots sem misturar critérios diferentes.
Solicitação ao feed do criador
Na documentação da jsonscraper, a rota GET /getUserFeed aceita o parâmetro obrigatório query — o nome de usuário ou a URL do perfil. Entre os parâmetros opcionais estão count, region, sort_type, with_pinned_posts e max_cursor. A chave da API é enviada como license_key na query string; mantenha-a em uma variável de ambiente, não no código-fonte. Os detalhes das rotas e dos parâmetros estão na documentação oficial da API do TikTok.
Na resposta, verifique primeiro o status externo e, em seguida, acesse o objeto tiktok. No feed do usuário, a lista de publicações fica em tiktok.aweme_list. O esquema observado inclui o identificador do vídeo, o texto da descrição, o horário de publicação, o autor, a URL e um objeto de estatísticas. Alguns campos podem estar ausentes, por isso o processador deve manter valores vazios como vazios, em vez de substituí-los por números inventados.
O exemplo mínimo a seguir foi preparado para Python 3.8+ e a biblioteca requests. Armazene a chave em JSONSCRAPER_TIKTOK_LICENSE_KEY. O código faz uma solicitação, verifica a resposta HTTP e o status externo da API, grava o JSON original e exibe linhas normalizadas.
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
PROFILE = "creator_username"
params = {
"license_key": API_KEY,
"query": PROFILE,
"count": 20,
"region": "US",
"sort_type": 0,
"with_pinned_posts": 0,
}
response = requests.get(
"https://tiktok.evelode.com/getUserFeed",
params=params,
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API returned a non-ok status")
tiktok = payload.get("tiktok") or {}
items = tiktok.get("aweme_list") or []
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("snapshots").mkdir(exist_ok=True)
Path(f"snapshots/{PROFILE}_{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2),
encoding="utf-8",
)
rows = []
for item in items:
stats = item.get("statistics") or {}
author = item.get("author") or {}
rows.append({
"aweme_id": item.get("aweme_id"),
"created_at": item.get("create_time"),
"description": item.get("desc") or "",
"share_url": item.get("share_url"),
"creator": author.get("unique_id") or author.get("nickname"),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"share_count": stats.get("share_count"),
})
print(json.dumps(rows, ensure_ascii=False, indent=2))
Para essa rota, a documentação descreve sort_type como 0 para o feed recente e 1 para o popular. O exemplo usa o modo de publicações recentes e exclui vídeos fixados com with_pinned_posts=0, para que uma publicação antiga fixada não entre na amostra de novas publicações. Se precisar de outro modo, registre o parâmetro nos metadados do snapshot e aplique-o da mesma forma em todas as execuções.
Processamento da resposta: de JSON a uma tabela reproduzível
É útil salvar a resposta original antes de fazer qualquer transformação. Isso permite conferir a normalização, descobrir por que uma linha ficou vazia e adaptar o processador se a presença de campos opcionais nas respostas mudar. No armazenamento de trabalho, guarde junto ao JSON o horário da coleta em UTC, o perfil consultado, os parâmetros e a versão do seu script. Não inclua a chave da API em arquivos compactados nem em logs.
Nas execuções repetidas, use aweme_id como identificador da publicação, se o campo estiver presente. A deduplicação por esse ID evita contabilizar o mesmo vídeo como várias publicações quando ele é obtido novamente. Ainda assim, guarde snapshots separados das estatísticas: os valores de visualizações e reações correspondem ao momento da observação, não a características imutáveis do vídeo. Se um campo estatístico estiver ausente, deixe-o vazio e exclua esse registro do cálculo da métrica correspondente.
Na estrutura, o horário de publicação é indicado por create_time. Para a tabela analítica, converta-o em data e armazene tanto o valor original quanto o horário normalizado em UTC. Antes de calcular, confira alguns registros reais da resposta obtida para confirmar o tipo e as unidades esperados. Essa verificação é especialmente importante para gráficos temporais: um erro na conversão do horário desloca publicações entre dias e prejudica a comparação entre semanas.
É possível criar um classificador temático básico sem modelo: normalize o texto, busque as frases definidas e marque as correspondências. Para obter uma classificação mais útil, prepare um conjunto de descrições verificadas manualmente e regras para casos limítrofes. Depois, compare o filtro simples por vocabulário com a classificação humana: identifique quais expressões geram correspondências falsas e atualize o vocabulário. Isso cria uma linha de base compreensível para avaliar o uso posterior de IA.
import re
KEYWORDS = (
"кофе", "эспрессо", "кофемолка", "латте", "заваривание",
)
def normalize(text):
text = (text or "").casefold()
return re.sub(r"\s+", " ", text).strip()
def classify(description):
text = normalize(description)
matches = [word for word in KEYWORDS if word in text]
return {
"topic_match": bool(matches),
"matched_terms": matches,
}
for row in rows:
row.update(classify(row["description"]))
Uma palavra-chave na descrição pode ser um sinal útil, mas o classificador deve apresentar uma justificativa explicável: a lista de termos encontrados, e não apenas um rótulo «sim/não». Para modelos de linguagem, use uma solicitação estruturada: forneça a descrição do vídeo e categorias fixas, e peça que o modelo retorne a categoria, uma breve justificativa e um nível de confiança. Armazene separadamente o texto original e a resposta do modelo. Uma pessoa deve verificar as decisões que afetam o orçamento ou a escolha de um parceiro, consultando os links das publicações.
Calcule indicadores com um denominador claro
Para um relatório simples, use a proporção de vídeos temáticos e a frequência de publicação. A proporção é o número de vídeos com correspondência temática confirmada dividido pelo número de vídeos que foi possível classificar. Sempre apresente os dois números: por exemplo, «7 de 18 descrições verificadas». Assim, o resultado fica claro e é mais fácil perceber quando a porcentagem se baseia em uma amostra pequena demais.
A frequência de publicação pode ser expressa como o número de vídeos obtidos em um período fixo, por exemplo, nos últimos 30 dias. Defina os limites do período com base no horário da coleta e nas datas de publicação. Se fizer snapshots semanais, guarde o resultado de cada execução, em vez de apenas atualizar uma linha final: assim, será possível ver mudanças nos temas e na atividade. Não interprete o número de itens coletados como um arquivo completo das publicações do criador — analise a amostra efetivamente obtida e indique com clareza o critério usado.
As estatísticas de visualizações, curtidas, comentários e compartilhamentos podem contextualizar cada vídeo. Compare valores absolutos com cautela: uma publicação mais antiga pode ter tido mais tempo para acumular reações. Para fazer comparações dentro do perfil de um mesmo criador, registre o horário de cada coleta e acompanhe a evolução do mesmo vídeo entre snapshots. Não chame a diferença entre dois snapshots de «velocidade de crescimento» se o intervalo e a disponibilidade das medições não estiverem registrados.
Um registro final útil para cada perfil inclui a data da coleta, os parâmetros escolhidos, o número de publicações obtidas, o número de descrições classificadas, o número de correspondências temáticas, uma lista de URLs de exemplo e uma breve observação sobre casos ambíguos. Essa tabela permite que outra pessoa confira a conclusão e que outro analista repita a metodologia no próximo perfil.
Paginação e agendamento
Se a amostra exigir uma página seguinte, a documentação do feed de perfil usa max_cursor, obtido da resposta anterior. Envie-o sem transformações: o cursor é um valor opaco, que deve ser salvo e devolvido à API. Se planejar solicitar mais páginas, verifique também has_more na resposta. Limite o número de páginas ou o total de solicitações para que a coleta termine de forma previsível.
cursor = None
all_items = []
max_pages = 3
for _ in range(max_pages):
page_params = dict(params)
if cursor is not None:
page_params["max_cursor"] = cursor
page_response = requests.get(
"https://tiktok.evelode.com/getUserFeed",
params=page_params,
timeout=30,
)
page_response.raise_for_status()
page_payload = page_response.json()
if page_payload.get("status") != "ok":
raise RuntimeError("TikTok API returned a non-ok status")
page = page_payload.get("tiktok") or {}
all_items.extend(page.get("aweme_list") or [])
if not page.get("has_more"):
break
cursor = page.get("max_cursor")
if cursor is None:
break
Escolha a frequência de execução de acordo com a tarefa: para uma avaliação inicial, basta uma execução manual; para uma lista de criadores, um agendamento semanal pode revelar mudanças sem consultas constantes. A execução pode ser configurada no cron, em uma tarefa de CI ou em um orquestrador. O fluxo é simples: obter os perfis de uma tabela, fazer solicitações com paralelismo limitado, gravar snapshots, verificar a proporção de respostas bem-sucedidas e enviar um resumo para uma tabela de trabalho. Repita a solicitação após um erro temporário, com um número limitado de tentativas e intervalo entre elas; registre separadamente os erros em solicitações autenticadas para verificar a chave e a configuração.
Quando a IA é útil e quando é preciso verificar
A IA pode ajudar a classificar descrições que contenham gírias, vários idiomas ou formulações sem uma palavra-chave exata. Primeiro, defina uma lista fechada de categorias e peça ao modelo que use apenas o texto da descrição. Depois, avalie a qualidade com uma pequena amostra rotulada manualmente: compare as categorias do modelo com as decisões de um editor e analise separadamente erros e casos ambíguos. É melhor incluir no relatório a proporção de concordância entre o modelo e a classificação manual, além do número de exemplos verificados, do que uma pontuação geral difícil de interpretar.
Não peça ao modelo para «escolher o melhor criador» sem definir critérios. Em vez disso, divida o processo em atributos mensuráveis: proporção temática, regularidade, exemplos de vídeos relevantes e faixa de reações públicas. O modelo pode resumir esses dados brevemente e apontar os links que embasam a análise; a decisão final cabe à equipe, que considera o formato da campanha, o público e os acordos com o criador.
Se a análise envolver inserções publicitárias, verifique separadamente nas próprias publicações e nos requisitos aplicáveis se a relação do criador com a marca foi divulgada. O guia da Comissão Federal de Comércio dos Estados Unidos explica que a relação com a marca deve ser divulgada de forma visível junto à recomendação; uma biografia de perfil ou uma parte oculta do texto talvez não sejam suficientes para que o público perceba o aviso. Consulte as orientações da FTC para criadores de redes sociais. O monitoramento de dados públicos ajuda a reunir material para verificação, mas avaliar o cumprimento das regras exige contexto sobre a publicação e a campanha específicas.
O que você terá ao final
Depois de configurar o pipeline, a equipe terá snapshots datados do feed público, uma tabela de publicações com descrições e métricas disponíveis, além de um cálculo reproduzível da proporção temática. Com esses dados, será possível selecionar perfis com mais rapidez para uma análise posterior, detectar mudanças de tema e documentar os motivos da avaliação. O método é verificável: o JSON original, os parâmetros da solicitação, as regras de classificação e os links para os vídeos permitem rastrear o caminho dos dados até a conclusão.
Para o primeiro teste, execute o script em um perfil, salve a resposta bruta e verifique manualmente algumas classificações. Em seguida, defina o vocabulário temático, as regras da amostra e o formato do relatório. Quando o resultado for reproduzível, acrescente um agendamento e uma fila de perfis. Consulte a documentação da API para ver as rotas e os parâmetros; para conhecer o produto e as opções de integração disponíveis, visite a página da TikTok Scraper API.
Lista prática antes de começar
- Registre o tema da campanha, o vocabulário de inclusão e exemplos de casos limítrofes.
- Defina o período da amostra, o valor de
count, a ordenação e a configuração de publicações fixadas. - Armazene o JSON original, a data da coleta e os parâmetros separadamente da chave secreta.
- Use
aweme_idpara deduplicar, se o identificador estiver presente. - Diferencie valores ausentes de zero e não calcule médias sem uma justificativa clara.
- Apresente o tamanho da amostra junto à proporção temática e inclua links de exemplo.
- Teste a classificação por IA com uma amostra verificada manualmente antes de usá-la em decisões de campanha.
- Atualize a avaliação conforme o agendamento e compare snapshots coletados segundo os mesmos critérios.