Un creador puede parecer adecuado para una campaña por su perfil y algunos vídeos acertados, pero su feed reciente cuenta una historia más importante: ¿sigue hablando del tema que te interesa con regularidad? La revisión manual queda obsoleta pronto, y una consulta puntual puede limitarse a las publicaciones más destacadas. Para una agencia o una marca, resulta más útil recopilar una muestra reproducible de vídeos públicos, guardar una captura con la fecha de revisión y evaluar la afinidad temática con los mismos criterios en cada ocasión.

A continuación se describe un proceso práctico para evaluar el feed público de un creador de TikTok. Se utiliza la API TikTok Scraper de jsonscraper y Python: se obtienen publicaciones mediante una ruta documentada, se guarda el JSON original, se convierten los campos disponibles a una tabla y se calcula la proporción de vídeos que encajan con un tema determinado. Si se desea, las descripciones pueden enviarse a un clasificador de texto como una etapa posterior, separada y controlada.
Primero, define qué significa «encajar»
Imaginemos que un equipo busca un creador para una campaña sobre la preparación de café en casa. El número de seguidores y la popularidad de ciertos vídeos pueden ayudar a describir el alcance, pero no responden por sí solos a la pregunta de hasta qué punto el feed está relacionado con el café. Para el primer filtro hacen falta indicios de contenido: si la descripción del vídeo menciona cómo preparar café, equipos, recetas o reseñas; cuántas publicaciones sobre el tema aparecieron en el periodo de observación; y qué proporción de los vídeos recopilados trata el tema.
Antes de recopilar datos, anota los criterios en un vocabulario breve; por ejemplo: «espresso», «molinillo de café», «latte» y «preparación». Añade exclusiones y palabras ambiguas. «Café» puede aparecer en una broma, una colaboración publicitaria o un contexto casual, así que una coincidencia textual automática es una clasificación preliminar, no una evaluación definitiva del creador. Distingue al menos tres estados: coincidencia clara, posible coincidencia y vídeo irrelevante.
La muestra también debe definirse de antemano. Por ejemplo, se pueden analizar las últimas 20 publicaciones obtenidas en cada ejecución semanal. Esta es una condición de tu sistema de monitorización, no una garantía de que la API devuelva exactamente ese volumen: la disponibilidad y la composición de los resultados dependen de la respuesta a cada consulta. Registra la hora de recopilación, el número de elementos obtenidos y los parámetros de la consulta para poder comparar capturas sin mezclar criterios distintos.
Consultar el feed del creador
En la documentación de jsonscraper, la ruta GET /getUserFeed acepta el parámetro obligatorio query, que puede ser el nombre de usuario o la URL del perfil. Entre los parámetros opcionales figuran count, region, sort_type, with_pinned_posts y max_cursor. La clave de API se envía como license_key en la cadena de consulta; guárdala en una variable de entorno, no en el código fuente. Los detalles de las rutas y los parámetros aparecen en la documentación oficial de la API de TikTok.
En la respuesta, comprueba primero el status externo y, después, accede al objeto tiktok. En el feed de un usuario, la lista de publicaciones se encuentra en tiktok.aweme_list. El esquema observado contiene el identificador del vídeo, el texto de la descripción, la hora de publicación, el autor, la URL y un objeto de estadísticas. Puede que falten algunos campos, por lo que el procesador debe guardar los valores ausentes como tales y no reemplazarlos con cifras inventadas.
El siguiente ejemplo mínimo requiere Python 3.8 o posterior y la biblioteca requests. Guarda la clave en JSONSCRAPER_TIKTOK_LICENSE_KEY. El código realiza una consulta, comprueba la respuesta HTTP y el estado externo de la API, guarda el JSON original y muestra filas 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 esta ruta, sort_type se describe como 0 para el feed reciente y 1 para el popular. El ejemplo selecciona el modo de publicaciones recientes y excluye los vídeos fijados mediante with_pinned_posts=0, para que una publicación antigua fijada no entre en la muestra de nuevas publicaciones. Si necesitas otro modo, guarda el parámetro en los metadatos de la captura y aplícalo igual en cada ejecución.
Procesar la respuesta: del JSON a una tabla reproducible
Conviene guardar la respuesta original antes de transformarla. Así se puede revisar la normalización, averiguar por qué una fila quedó vacía y adaptar el procesador si cambia la presencia de campos opcionales en las respuestas. En el almacenamiento de trabajo, guarda junto al JSON la hora de recopilación en UTC, el perfil consultado, los parámetros y la versión del script. No incluyas la clave de API en archivos ni registros.
En las ejecuciones repetidas, usa aweme_id como identificador de la publicación, si está disponible. Deduplicar mediante este ID evita contar el mismo vídeo varias veces al recuperarlo de nuevo. Aun así, guarda capturas separadas de las estadísticas: las cifras de visualizaciones y reacciones corresponden al momento de observación, no son características inmutables del vídeo. Si falta un campo estadístico, déjalo vacío y excluye ese registro del cálculo de la métrica correspondiente.
En el esquema, la hora de publicación se identifica como create_time. Para la tabla analítica, conviértela en fecha y conserva tanto el valor original como la hora normalizada en UTC. Antes de calcular, comprueba varias entradas reales de la respuesta obtenida para confirmar el tipo y las unidades esperadas. Esta verificación es especialmente importante al crear gráficos temporales: un error al convertir la hora desplaza las publicaciones entre días y altera las comparaciones semanales.
Se puede crear un clasificador temático básico sin un modelo: normaliza el texto, busca las frases definidas y marca las coincidencias. Para obtener una clasificación más útil, prepara un conjunto de descripciones revisadas manualmente y reglas para los casos dudosos. Después, compara el filtro sencillo de palabras clave con las etiquetas humanas: averigua qué expresiones generan falsos positivos y actualiza el vocabulario. Así se establece una base clara para evaluar el uso posterior de la 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"]))
Una palabra clave en la descripción puede ser una señal útil, pero es mejor que el clasificador devuelva una explicación comprensible, como la lista de términos coincidentes, en lugar de limitarse a una etiqueta de «sí/no». Para los modelos de lenguaje, utiliza una instrucción estructurada: proporciona la descripción del vídeo y categorías fijas, y solicita una categoría, una justificación breve y un nivel de confianza. Guarda el texto original y la respuesta del modelo por separado. Una persona debe revisar, mediante enlaces a las publicaciones, las decisiones que afectan al presupuesto o a la selección de colaboradores.
Calcula métricas con un denominador claro
Para un informe sencillo, bastan la proporción de vídeos temáticos y la frecuencia de publicación. La proporción es el número de vídeos con coincidencia temática confirmada dividido por el número de vídeos que se pudieron clasificar. Muestra siempre ambas cifras; por ejemplo: «7 de 18 descripciones revisadas». Así el resultado es comprensible y resulta más fácil detectar si el porcentaje se basa en una muestra demasiado pequeña.
La frecuencia de publicación puede expresarse como el número de vídeos obtenidos durante un periodo fijo, por ejemplo, los últimos 30 días. Define los límites del periodo a partir de la hora de recopilación y las fechas de publicación. Si guardas capturas semanales, conserva el resultado de cada ejecución y no solo una fila final actualizada: así podrás detectar cambios en la temática y la actividad. No interpretes el número de elementos recopilados como un archivo completo de las publicaciones del creador: analiza la muestra que realmente obtuviste y especifica claramente su criterio.
Las estadísticas de visualizaciones, «me gusta», comentarios y compartidos pueden servir de contexto para cada vídeo. Compara los valores absolutos con cautela: una publicación más antigua puede haber acumulado reacciones durante más tiempo. Para comparar dentro del feed de un mismo creador, registra la hora de cada recopilación y observa la evolución del mismo vídeo entre capturas. No describas la diferencia entre dos capturas como «velocidad de crecimiento» si no se han fijado el intervalo y la disponibilidad de las mediciones.
Un registro final útil para cada perfil incluye la fecha de recopilación, los parámetros elegidos, el número de publicaciones obtenidas, el número de descripciones clasificadas, el número de coincidencias temáticas, una lista de URL de ejemplo y una breve nota sobre los casos dudosos. Esta tabla permite que un empleado compruebe la conclusión y que otro analista repita el método con el siguiente perfil.
Paginación y programación
Si la muestra requiere una página siguiente, la documentación del feed de perfil utiliza max_cursor, obtenido de la respuesta anterior. Envíalo sin modificar: el cursor es un valor opaco que debes guardar y devolver a la API. Comprueba también has_more en la respuesta si vas a solicitar más resultados. Limita el número de páginas o el presupuesto total de consultas para que la recopilación termine de manera predecible.
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
Elige la periodicidad según la tarea: para una evaluación inicial basta con ejecutar el proceso manualmente; para una lista de creadores, una programación semanal puede ayudar a detectar cambios sin consultar el feed constantemente. Puedes programar la ejecución con cron, una tarea de CI o un orquestador. El esquema es sencillo: obtener perfiles de una tabla, realizar consultas con un límite de concurrencia, guardar capturas, comprobar la proporción de respuestas correctas y enviar un resumen a una hoja de trabajo. Ante un error temporal, repite la consulta un número limitado de veces y con una pausa; guarda aparte los errores de las consultas autenticadas para revisar la clave y la configuración.
Dónde encaja la IA y dónde hace falta revisar
La IA resulta útil para clasificar descripciones con jerga, varios idiomas o formulaciones que no incluyen la palabra clave exacta. Primero, define una lista cerrada de categorías y pide al modelo que utilice solo el texto de la descripción. Después, mide la calidad con una pequeña muestra etiquetada manualmente: compara las categorías del modelo con las decisiones de un editor y revisa por separado los errores y los casos dudosos. Es preferible incluir en el informe la proporción de coincidencias entre el modelo y la clasificación manual, junto con el número de ejemplos revisados, en lugar de una puntuación global difícil de interpretar.
No pidas al modelo que «elija al mejor creador» sin darle criterios. En su lugar, divide el proceso en señales medibles: proporción temática, regularidad, ejemplos de vídeos pertinentes y rango de reacciones públicas. El modelo puede resumir brevemente estos campos e indicar enlaces que respalden sus conclusiones; la decisión final corresponde al equipo, que tendrá en cuenta el formato de la campaña, la audiencia y los acuerdos con el creador.
Si el análisis incluye colaboraciones publicitarias, comprueba por separado, en las propias publicaciones y según los requisitos aplicables, que se divulgue la relación entre el creador y la marca. La guía de la Comisión Federal de Comercio de Estados Unidos explica que esa relación debe indicarse de manera visible junto a la recomendación; una biografía del perfil o una parte oculta del texto pueden no bastar para que la audiencia lo advierta. Consulta las recomendaciones de la FTC para creadores de redes sociales. La monitorización de datos públicos ayuda a reunir material para la revisión, pero evaluar el cumplimiento exige tener en cuenta el contexto de cada publicación y campaña.
Qué obtendrás
Una vez configurado el flujo de trabajo, el equipo tendrá capturas fechadas del feed público, una tabla de publicaciones con sus descripciones y las métricas disponibles, y un cálculo reproducible de la proporción temática. Con estos datos podrá seleccionar perfiles para revisarlos con más detalle, detectar cambios de temática y documentar los motivos de la evaluación. El método es verificable: el JSON original, los parámetros de consulta, las reglas de clasificación y los enlaces a los vídeos permiten seguir el recorrido desde los datos hasta la conclusión.
Para la primera prueba, ejecuta el script con un perfil, guarda la respuesta sin procesar y revisa manualmente varias clasificaciones. Después, fija el vocabulario temático, las reglas de muestreo y el formato del informe. Cuando el resultado sea reproducible, añade una programación y una cola de perfiles. Consulta la documentación de la API para ver las rutas y los parámetros, y la página de la API TikTok Scraper para obtener una descripción del producto y las opciones de integración disponibles.
Lista práctica antes de empezar
- Anota el tema de la campaña, el vocabulario de inclusión y ejemplos de casos dudosos.
- Fija la ventana de muestreo, el valor de
count, la ordenación y la configuración de las publicaciones fijadas. - Guarda el JSON original, la fecha de recopilación y los parámetros por separado de la clave secreta.
- Usa
aweme_idpara deduplicar, si el identificador está disponible. - Distingue los valores ausentes de los ceros y no promedies métricas sin una justificación clara.
- Muestra el tamaño de la muestra junto a la proporción temática e incluye enlaces de ejemplo.
- Comprueba la clasificación de la IA con una muestra manual antes de utilizarla en decisiones de campaña.
- Actualiza la evaluación de forma programada y compara capturas recopiladas con los mismos criterios.