Alternativa a 1of10: Construí la Mía en una Tarde por $0/Mes

7 min read

Si quieres ideas de contenido viral, hay algo que funciona de manera vergonzosamente efectiva: los outliers de YouTube. Videos que superan por mucho el promedio de su canal, generalmente en canales pequeños que nadie sigue todavía. ¿Un canal que hace 50K visualizaciones de repente saca uno con 500K? Algo funcionó. El título, la miniatura, el tema, el timing, lo que sea. Vale la pena estudiarlo.

Hay una herramienta para eso. Se llama 1of10. Cuesta $29 este mes. O $39. Dejé de seguir su página de precios, cambia constantemente. Además un dashboard lleno de funciones que nadie pidió, sin API, nada que pueda integrar en mi propio flujo de trabajo.

Así que construí la mía. No en el sentido heroico de "una tarde, 200 líneas, mírenme". En el sentido aburrido: escribí un puñado de prompts cortos en Claude y la cosa funcionó.

TL;DR — Esto no es un tutorial. Es cómo realmente trabajo con IA cuando construyo una herramienta pequeña. El código no es interesante. El prompt clave es: aquel donde dejé de intentar especificar una solución y le entregué un problema a Claude en su lugar. Ese movimiento es todo el artículo.

Desarrollador comparando frenéticamente planes de precios en su escritorio mientras su colega se relaja con una notificación de proyecto completado en su laptop
Un dev ya envió su proyecto. Otro dev sigue leyendo niveles de precios. Adivina quién ganó.

El Paywall y la Especificación

La semilla fue un post de foro que no voy a enlazar (Medium enlaza de la manera difícil y la credibilidad muere en el clic). Parafraseando:

Entrena Claude con titulares virales y títulos de YouTube. El artículo en sí no importa realmente. El título y la miniatura sí. Usamos 1of10 para encontrar videos outliers e ingeniería inversa de los patrones.

Flujo de trabajo válido. Paywall molesto. Y tenía la corazonada de que 1of10 eran tres llamadas a API disfrazadas.

La especificación, escrita en mi cabeza y no tecleada en ningún lado. Una consulta de búsqueda entra. Los 10 videos de YouTube que superan el promedio de su propio canal salen. Fórmula de puntuación: visualizaciones / promedioCanal. YouTube Data API gratuita, 10K unidades de cuota por día, aproximadamente 100 búsquedas completas. Costo: $0 para siempre.

La métrica es una división. Esa es toda la razón por la que 1of10 está sobrepreciado: las matemáticas que venden son triviales, el dashboard es donde vive la facturación.

El Prompt Que Hizo el Trabajo Real

La configuración no es interesante. Instala la app. No, ponla en la carpeta correcta del proyecto. Usa gh en lugar de curl. Tres prompts, tres minutos. El andamiaje de la app Astro y el algoritmo en sí habían ocurrido en una sesión anterior de Claude de la que ya no tengo logs (respalda tus proyectos de Claude Code, aprendí esto por las malas).

App corriendo localmente. Escribo una búsqueda. La UI es fea. El ranking es ruidoso. Un top-10 ordenado por puntuación outlier mezcla outliers reales con videos normalitos y no puedo distinguir dónde termina la señal real. Mis ojos ven tres ganadores obvios. Mi cerebro no puede nombrar el algoritmo que dice lo mismo.

Así que escribí esto:

can u improve the interface ? [screenshot]
not readable, and i'd want a one-click
copy of the best outlier titles
(the top 3 here really stand out,
idk how you calculate that,
where it really jumps mathematically)

Tres peticiones. Arreglo de UI. Botón de copiar. Y la que importa: idk how you calculate that, where it really jumps.

Esa última parte es todo el artículo.

Esto es lo que habría escrito en un mal día, el tipo de día donde trato de sonar como ingeniero: implementa una función que marque los top N outliers estadísticos usando z-score o umbralización por percentiles, con manejo apropiado de casos extremos y pruebas unitarias.

Ese prompt obtiene z-scores. Los z-scores no funcionan en estos datos. La distribución no es ni remotamente normal, los rankings de outliers siguen una ley de potencias en el mejor caso, y terminaría con una función que marca diez resultados en una curva suave y cero en una irregular. Inútil.

Lo que escribí en su lugar fue el problema, no la solución. "Donde realmente salta."

Claude respondió con tres algoritmos candidatos (z-score, ratio de brecha, umbral de percentil), explicó por qué el ratio de brecha se ajusta mejor a este tipo de datos, y lo escribió:

for each pair of consecutive scores (sorted desc):
  ratio = score[i] / score[i+1]
  keep track of the largest ratio seen
  mark the cut at that position
if the best ratio is below 1.5x: only the first result is an outlier

Diez líneas. Ejecútalo en [45, 28, 20, 3.2, 2.8, 2.1], el corte cae entre 20 y 3.2 (una brecha de 6.25x), y los primeros tres se marcan como outliers reales. Exactamente lo que vieron mis ojos. Nada que hubiera podido especificar yo mismo.

Describe el problema, no la solución. El modelo ha leído diez mil papers sobre ranking y segmentación. Tú has leído cero.

Tres Prompts Más, Misma Forma

YOUTUBE_API_KEY not configured / it's in infisical

El servidor de desarrollo se había caído por un secreto faltante. Escribo el mensaje de error más una pista: it's in Infisical. Infisical es un gestor de secretos. Mantiene las API keys fuera de archivos .env planos. El tipo de higiene que solo empecé a valorar después de la tercera vez que filtré una. Claude envolvió el comando de lanzamiento con infisical run, la app arrancó, seguimos adelante. Dos segundos. Así es como le dices a una IA dónde está el secreto sin pegar el secreto.

no find the titles that overperform on a given topic [long paste of the forum thread]

Claude se había desviado hacia una función adyacente. Se veía genial, no era lo que quería. Lo maté con "no" y pegué la especificación original del foro, textual. Recentrar por repetición, no por explicación. No discutas con el modelo. Re-ancla.

the blue on black isn't readable [screenshot] and it's good to copy min 5 results to identify patterns

Segunda pasada de UI. Screenshot de enlaces azules ilegibles, más una regla de negocio contrabandeada en el feedback: min 5 results to spot a pattern. Claude ajustó el contraste, eliminó el azul, resaltó los outliers reales con un acento coral, puso en gris el resto. La regla se convirtió en el default para el botón de exportar: mínimo 5, aumenta si el detector de brechas encuentra más. Un turno.

Los que omití fueron ok, A, C, ok, ok. Validaciones y respuestas de opción múltiple a las propias preguntas de diseño de Claude. Más una verificación de costo a mitad de sesión (is the Google API free?) porque no quieres terminar de construir algo que no puedes permitirte ejecutar. El ritmo es toda información, sin ceremonias.

24 Horas Después, Lo Quería Dentro de Claude Code

App enviada. Corriendo localmente. Funcionaba. Y ya odiaba usarla.

Porque el flujo era: abrir el navegador, escribir la consulta, esperar dos segundos, hacer clic en "copiar top N", volver a Claude, pegar, pedir ángulos. Seis pasos para algo que hago veinte veces por semana. Inaceptable.

Al día siguiente. Un commit. 234 líneas. Moví el algoritmo a mi servidor MCP personal (el que ya tiene mis herramientas de estadísticas de Medium, mi extractor de transcripciones de YouTube, mi búsqueda de archivo de artículos). Una acción de Convex envolviendo la misma lógica de findOutliers, expuesta como una herramienta llamada find_youtube_outliers.

Si MCP es nuevo para ti, piénsalo como un protocolo estándar que permite a Claude Code llamar tus funciones como si estuvieran integradas en el asistente. La función vive en tu servidor. Claude decide cuándo llamarla basándose en el mensaje del usuario.

Ahora cuando estoy haciendo brainstorming con Claude solo escribo "find outliers for X and suggest 5 angles." Claude llama la herramienta él mismo, lee los títulos, propone hooks, a menudo encadena directamente a get_youtube_transcript en el resultado principal para samplear el patrón del hook, luego a search_articles contra mi propio archivo para verificar si ya cubrí el ángulo.

Sin navegador. Sin TSV. Sin pegar. Sin cambio de contexto.

Una salvedad. Fui por MCP aquí porque soy el único usuario y Claude Code es el único que llama. Para una herramienta de un-usuario-una-máquina, MCP está bien. Si planeas llamar tu buscador de outliers desde cron jobs, otro script, un bot de Discord, cualquier otro lugar, un CLI plano es generalmente la mejor forma. Profundicé en los tradeoffs entre CLI e integración MCP en otro lugar.

El cambio real aquí no es MCP vs CLI. Es que tu herramienta deja de ser una app que abres y se convierte en una capacidad que el modelo alcanza. Mismo código. Diferente gravedad. 🛠️

Por Qué Cada Artículo de "Alternativa a 1of10" Es un Anuncio

Busqué en Google "1of10 alternative" antes de construir la mía. Cada artículo en la página 1 era una pieza de afiliados. Misma plantilla siempre:

1of10 es genial PERO es caro. Aquí está [enlace de afiliado], solo $9/mes, mucho mejor valor.

Estas no son alternativas. Son SaaS más baratos con el mismo modelo de negocio. Pagas cada mes, los datos se quedan en sus servidores, y esperas a que un equipo de producto envíe el filtro que necesitas. Lo cual no harán, porque su roadmap está impulsado por lo que los lleva a Product Hunt, no por tu bucle de brainstorming.

La alternativa real es "escribí la cosa y la poseo." Nadie escribe ese artículo porque no hay enlace de afiliado en él.

Mismo movimiento que hice cuando Anthropic mató mi setup de scraping de $200/mes y lo reconstruí por $15. Mismo principio siempre: el SaaS es casi siempre una UI encima de algo gratuito. Si puedes describir lo que quieres a un modelo, estás pagando por la piel.

Lo cual, si no puedes programar, es justo. Si puedes programar pero prefieres pagar a hacer prompts, también justo. Pero si disfrutas la construcción, sabe que el paywall es opcional. Y se vuelve más opcional cada mes.

En seis meses habrá quince nuevos "alternativa a 1of10, ¡solo $9/mes!" en Product Hunt. Todos construidos sobre la misma API pública gratuita. Todos con un dashboard, un toggle de modo oscuro, una llamada de onboarding que nadie quiere hacer.

Y luego están los que abren su editor. Que usan IA para construir herramientas con la forma exacta de su flujo de trabajo. Como artesanos japoneses, haciendo sus propios cinceles para la madera que tallan.

Sin churn. Sin pivot de IA. Solo un for loop.


Fuentes

(*) La portada es generada por IA. Intenté hacer prompt de "a viral thumbnail outlier", solo para ver. El modelo devolvió un póster de conferencia.