Install
openclaw skills install @formula100k/analizador-referencias-virales-f100kDado un keyword, busca los videos más virales en TikTok e Instagram (Apify), transcribe cada uno con Supadata, identifica el gancho verbal, textual y visual, y entrega una tabla lista para usar en calendarios, guiones o investigación. Usar cuando pidan 'busca referencias virales de [keyword]', 'qué está funcionando en TikTok/IG con [tema]', 'dame el gancho de estos virales', o cuando el calendarizador Modo D necesite enriquecer sus resultados. Soporta TikTok, Instagram Reels, o ambas plataformas en una sola corrida.
openclaw skills install @formula100k/analizador-referencias-virales-f100kEsta versión corre en un agente OpenClaw (servidor + Telegram), no en Claude Code. Antes de seguir, lee la skill
f100k-puente: traduce herramientas y rutas. Lo específico de esta skill:
- El motor es Apify con
APIFY_TOKEN. Sin token: no hay métricas; pide los links y las capturas de vistas a la usuaria, o marca todo[NO VERIFICADO — scrape no corrió]como dice el PASO 4.5.- Transcripción: Supadata solo si existe
SUPADATA_API_KEY. Si no, usa el campo de transcripción/subtítulos que devuelva el actor de Apify (apify~instagram-reel-scraperconincludeTranscript: truepara Reels); si tampoco hay, aplica el fallback[sin transcripción]del PASO 3.- Antes de lanzar los actores di el costo estimado de la tabla COSTOS y espera ✅. Corre las keywords una tras otra, no en paralelo.
- Si una URL no la cubre Apify, se pide la captura: nunca navegador logueado. El archivo va a
informes/y la tabla resumida al chat de Telegram.
Esta skill enseña un método. El método es agnóstico de industria: sirve igual para formulación cosmética, nutrición, repostería, fisioterapia, finanzas o jabonería. Los ejemplos escritos aquí abajo son ilustraciones del método, nunca del tema.
Antes de escribir nada:
[TU OFERTA], [TU RESULTADO]). Nunca asumas que el rubro es marketing.El método viaja, el rubro no. El mismo molde, vestido con rubros distintos:
| Rubro | El mismo molde |
|---|---|
| Cocina | "Así es mi cena favorita para no dormir con el azúcar alta." |
| Relaciones | "5 señales de que estás forzando una relación que ya no funciona." |
| Finanzas | "La principal causa de un divorcio no es una infidelidad." |
| Formulación cosmética | "El conservante decide si tu crema dura tres meses o te da una infección. No el aceite." |
| Jabonería | "Si tu jabón se pone blando a los dos días, no fue el aceite. Fue la sosa." |
| Fisioterapia | "Ese dolor de rodilla al bajar escaleras casi nunca nace en la rodilla." |
| Repostería | "Tu bizcocho se hunde en el centro por la temperatura, no por la harina." |
| Jardinería | "Tu planta no se está muriendo de sed. Se está ahogando." |
Mismo molde en todos; ninguno menciona reels ni embudos. Haz exactamente eso.
Convierte una keyword en una tabla de referencias virales con guión transcrito y 3 tipos de gancho identificados, lista para alimentar calendarios, guiones o estrategias de contenido.
Cuándo invocar esta skill:
| Tipo | Qué es | Fuente |
|---|---|---|
| Gancho verbal | Primeras 3-10 palabras HABLADAS del video | Transcript de Supadata |
| Gancho textual | Texto visible en pantalla en los primeros 3 segundos | Caption de Apify + contexto del transcript |
| Gancho visual | Qué se VE en el primer frame (acción, objeto, situación) | Inferido del transcript + descripción del video |
El gancho visual siempre se marca como
[inferido]— es una aproximación de alta precisión, no una certeza. Para validación exacta, abrir la URL y ver el primer frame.
Detectar automáticamente:
| Campo | Señal | Default |
|---|---|---|
| Keywords | Palabras/frases separadas por coma | — obligatorio |
| Plataforma | "TikTok", "IG", "Instagram", "ambas" | Ambas |
| Nicho / avatar | Contexto adicional de la audiencia | Opcional |
| Cantidad de refs | Número pedido por el usuario | 7 (un slot por día de calendario) |
| Modo de llamada | ¿Viene del calendarizador (Modo D) o es standalone? | Standalone |
Si las keywords no están claras, preguntar antes de buscar.
Si el input contiene URLs específicas de TikTok/IG (el usuario ya cazó las referencias, o vienen de un brief) → NO busques por keyword. Buscar por keyword traería videos DISTINTOS a los que pidió y perderías sus métricas reales.
En su lugar:
clockworks~tiktok-scraper con { "postURLs": ["<url>"] } (NO searchQueries).apify~instagram-scraper con { "directUrls": ["<url>"], "resultsType": "posts" }.playCount/videoPlayCount de la respuesta = las views reales de ese video.[NO VERIFICADO — scrape falló], nunca inventes su métrica (ver Compuerta de Verificación).Usar fetch-actor-details primero para verificar el schema, luego call-actor:
clockworks~tiktok-scraper{
"searchQueries": ["<keyword>"],
"resultsPerPage": 20,
"shouldDownloadVideos": false,
"shouldDownloadCovers": false
}
Lanzar 1 corrida por keyword en paralelo si hay múltiples keywords.
Campos clave del resultado:
webVideoUrl → URL del videoplayCount → vistastext → captionauthorMeta.name → @handlevideoMeta.duration → duración en segundosInstagram no tiene búsqueda directa por keyword → convertir keywords a hashtags:
"colon irritable" → #colonirritablee, #intestinoirritablee
"emprendedora digital" → #emprendedoradigital, #negocioonline
"mentalidad" → #mentalidadganadora, #mindset
Regla: eliminar espacios + quitar tildes + probar 2 variantes de hashtag por keyword.
apify~instagram-scraper{
"directUrls": ["https://www.instagram.com/explore/tags/<hashtag>/"],
"resultsType": "posts",
"resultsLimit": 20
}
Lanzar en paralelo con TikTok si ambas plataformas fueron pedidas.
Campos clave del resultado:
url o shortCode → URL del reelvideoPlayCount o likesCount → proxy de viralidadcaption → texto del postownerUsername → @handlevideoDuration → duraciónplayCount / videoPlayCount descendentePara cada URL del top N, transcribir con el MCP de Supadata disponible en la sesión. El nombre exacto del tool cambia según el entorno (histórico había un typo supadara) → localízalo con ToolSearch("supadata transcript") antes de llamarlo, no lo hardcodees. El patrón es:
transcript: { "url": "<url_del_video>" } → devuelve un id
check status: { "id": "<transcript_id>" } → poll hasta READY
Reintentar hasta 3 veces con 5 segundos entre intentos.
Fallback si Supadata falla:
[sin transcripción]"Si tienes intestino irritable""El error que nadie te dice sobre el SII 👇" → Gancho textual: "El error que nadie te dice sobre el SII"[inferido] al finalPizarra / ValorPOV / ViralTestimonio / VentaTutorial / ValorSketch / ViralEsta es la regla que evita entregar data inventada. Es obligatoria y bloquea el output.
Cada métrica que salga en el output (views, likes, cualquier número) DEBE provenir de un campo devuelto por el scraper en ESTA corrida (playCount / videoPlayCount de Apify, o una captura que mandó la usuaria). Antes de escribir la tabla, verifica:
runId/datasetId real) o la usuaria mandó la captura con el dato? → puedes emitir el número.[NO VERIFICADO — scrape no corrió] y DETENTE para avisar al usuario:
"⚠️ La herramienta de scraping no corrió (Apify sin conexión, sin saldo o sin
APIFY_TOKEN). No puedo darte métricas reales. Arregla la conexión/sesión y reintento — no voy a rellenar números de memoria."
Reglas duras:
[NO VERIFICADO] honesto que una métrica bonita inventada.## 📊 Referencias Virales — [Keyword] · [Plataforma] · [Fecha]
| # | Red | @Handle | Views | Gancho verbal | Gancho textual | Gancho visual | URL |
|---|-----|---------|-------|---------------|----------------|---------------|-----|
| 1 | TT | @handle | 230K | "Si tienes intestino irritable" | "El error que nadie te dice" | Mujer sosteniendo tazón, mirando a cámara [inferido] | [ver](url) |
Debajo de la tabla:
informes/ (siempre, aunque el usuario no lo pida)informes/refs-virales-[keyword-slug]-[YYYY-MM-DD].md
Formato del archivo:
---
keyword: [keyword]
fecha: [YYYY-MM-DD]
plataforma: TikTok / IG / Ambas
total_refs: [N]
---
# Referencias Virales — [Keyword]
> Generado por `analizador-referencias-virales-f100k` · [fecha]
[tabla completa sin truncar]
## Patrón dominante de gancho verbal
[insight]
## Para usar
- En calendario: pega las URLs en calendarizador Modo C, o pásalas al Modo D como refs ya analizadas
- En guión: usa el gancho verbal como punto de partida para tu hook
Devolver los datos estructurados para mapeo inmediato:
Para cada ref: {
url, views, handle, plataforma,
gancho_verbal, gancho_textual, gancho_visual,
transcript_extracto,
formato_inferido ← el calendarizador usa esto para asignar slots
}
| Skill que la invoca | Cuándo | Qué recibe |
|---|---|---|
calendarizador-contenido-formula100k Modo D | Después de extraer keywords del brief | Refs enriquecidas para mapear a slots del calendario |
investigacion-contenido-formula100k | Para validar viralidad real de un tema | Refs con gancho identificado para la investigación |
| Standalone | Cuando se pide "analiza virales de X" directamente | Tabla completa en chat + guardado en informes/ |
| Componente | Costo aprox |
|---|---|
| Apify TikTok (4-6 keywords × 20 posts) | $0.40-$0.60 |
| Apify Instagram (4-6 hashtags × 20 posts) | $0.40-$0.60 |
| Supadata transcripciones (7 videos) | Free tier cubre ~50/mes |
| Total por sesión | ~$0.80-$1.20 |
[inferido] en el gancho visual.informes/.