Install
openclaw skills install @formula100k/patron-ig-f100kMódulo del Autopilot F100K para correr cada lunes: trae los videos de la cuenta de Instagram de la usuaria de los últimos 7 días (Composio o Apify), transcribe con Supadata si hay llave, calcula la mediana de views/likes/comentarios, clasifica videos virales (>1.5x mediana) y negativos (<0.7x), extrae qué funcionó y qué no, y actualiza cerebro/memoria/patterns_ig_<handle>.md para que la guionización aprenda semana a semana. Usar cuando alguien diga: "analiza mis patrones de la semana", "qué patrones detectaste", "actualiza mi memoria de patrones IG", "qué me funcionó esta semana", o cuando la automatización semanal lo invoque.
openclaw skills install @formula100k/patron-ig-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:
- Datos de la semana, en este orden: Composio con Instagram profesional (cuenta propia) o Apify con
APIFY_TOKEN. Sin ninguno, pide capturas de estadísticas.- Transcripciones con Supadata solo si existe
SUPADATA_API_KEYen el entorno; si no, trabaja con captions y marca la transcripción como «no disponible».- El archivo de patrones va a
cerebro/memoria/patterns_ig_<handle>.mdy se suma acerebro/INDICE.md, para que guionización lo lea.- Para correrla cada lunes, crea una automatización de OpenClaw con la hora y zona de
USER.md; el resumen llega por Telegram.
Cada lunes este módulo entra a Instagram, descarga tus videos de la semana, los transcribe, y construye el mapa de lo que te funcionó y lo que no. Ese mapa va directo a tu memoria para que cada guión que escriba después sea mejor que el anterior.
cat cerebro/f100k-config.json
Extraer: ig_handle (PREGUNTAR al usuario si no lo dio; no asumir ninguno), email.
Si el archivo no existe → detener y decir:
"No encontré tu configuración del Autopilot. Corre
/rutina-maestra-formula100kprimero."
Usar fetch-actor-details (Apify MCP) con: actorName: "apify~instagram-scraper"
Usar call-actor con:
actorName: "apify~instagram-scraper"waitSecs: 45{
"usernames": ["[ig_handle]"],
"resultsLimit": 20,
"resultsType": "posts",
"addParentData": false
}
Usar get-dataset-items con el datasetId del run.
Conservar solo posts donde timestamp (o takenAt) >= hace 7 días.
Para cada post extraer:
shortCode → URL: https://www.instagram.com/reel/[shortCode]/caption → primeras 200 charstimestampvideoViewCount o videoPlayCount (usar el que esté disponible)likesCountcommentsCounttype → conservar solo Video / Reel (descartar imágenes estáticas)Si no hay posts en 7 días → terminar con mensaje:
"No hubo videos/reels publicados en los últimos 7 días. Sin datos para analizar."
Para CADA video/reel filtrado, ejecutar:
[ -z "$SUPADATA_API_KEY" ] && [ -f "$HOME/.config/f100k/secrets.env" ] && set -a && . "$HOME/.config/f100k/secrets.env" && set +a
curl -s -X GET "https://api.supadata.ai/v1/transcript?url=https://www.instagram.com/reel/[shortCode]/" \
-H "x-api-key: $SUPADATA_API_KEY"
Del response extraer:
content → texto completo de la transcripcióncontent está vacío → transcripcion: "no disponible"Construir array videos[] con:
{ url, caption, timestamp, views, likes, comentarios, transcripcion }
Con todos los videos del array:
median_views = mediana de todos los valores viewsmedian_likes = mediana de todos los likesmedian_comments = mediana de todos los comentariosPara calcular mediana: ordenar los valores de menor a mayor, tomar el valor central (o promedio de los dos centrales si N es par).
Si median_views = 0 → usar 1 para evitar división por cero.
score = (views / median_views) * 0.5 + (likes / median_likes) * 0.3 + (comments / median_comments) * 0.2
viral: score >= 1.5negativo: score <= 0.7neutral: entre 0.7 y 1.5Analizar videos virales vs negativos en estos 8 ejes:
Sintetizar en lenguaje directo:
Para cada eje donde haya diferencia notable entre virales y negativos, escribir:
Si solo hay 1 video en alguna categoría → indicarlo como "muestra pequeña (1 video), tomar con precaución".
cat cerebro/memoria/patterns_ig_<handle>.md 2>/dev/null
Extraer la sección ## Historial semanal completa para preservarla en el archivo actualizado.
Usar la herramienta Write en:
cerebro/memoria/patterns_ig_<handle>.md
Con esta estructura exacta:
---
name: patterns-ig-<handle>
description: Patrones virales y negativos de @<handle> en Instagram — actualizado automáticamente cada lunes por el Autopilot F100K. Leer ANTES de escribir cualquier guión para esa cuenta.
metadata:
type: feedback
---
# Patrones IG @<handle>
**Última actualización:** [FECHA DE HOY]
**Videos analizados:** [N] reels · Semana del [LUNES] al [DOMINGO]
**Medianas semanales:** [median_views] views · [median_likes] likes · [median_comments] comentarios
---
## Patrones VIRALES — qué repite cuando le va bien
[LISTA DE PATRONES — uno por línea, formulados como reglas accionables]
**Why:** Identificados en [N_viral] video(s) con score ≥ 1.5 esta semana.
**How to apply:** Abrir guiones con estos patrones, usar estos ganchos verbales, publicar en estos horarios.
---
## Patrones NEGATIVOS — qué evitar
[LISTA DE PATRONES NEGATIVOS]
**Why:** Identificados en [N_negativo] video(s) con score ≤ 0.7.
**How to apply:** Evitar estas aperturas, no publicar en estos horarios, detectar y reescribir si el guión cae en estos patrones.
---
## Detalle de videos esta semana
| Caption (inicio) | Views | Likes | Comments | Score | Clasificación |
|-----------------|-------|-------|----------|-------|---------------|
[FILAS CON CADA VIDEO]
---
## Historial semanal
### Semana del [LUNES] al [DOMINGO]
- Virales: [N] · Neutrales: [N] · Negativos: [N]
- Patrón viral dominante: [síntesis en 1 línea]
- Patrón negativo dominante: [síntesis en 1 línea]
[HISTORIAL DE SEMANAS ANTERIORES PRESERVADO AQUÍ]
Mostrar en terminal:
✅ Análisis de patrones IG completado
📊 [N] videos analizados · [N_viral] virales · [N_negativo] negativos · [N_neutral] neutrales
📝 Memoria actualizada: patterns_ig_<handle>.md
🔁 Próxima ejecución: lunes que viene a las 08:05 Lima
SUPADATA_API_KEY (nunca escrita en el archivo)cerebro/memoria/patterns_ig_<handle>.mdcerebro/f100k-config.json — campo ig_handle