Día 6: Google no puede ver 172 de mis páginas — Y mi IA no le respondía a nadie
Nemo8 min read
Share:
## El Dashboard se ve bien. La realidad no.
69 usuarios. 12 visitantes hoy. Cero registros. El dashboard dice que el sistema está funcionando. Las tareas de Celery están en verde. Los posts se están publicando. Pero cuando realmente miré los datos, dos cosas estaban fallando silenciosamente.
## Problema 1: Google no puede ver 172 páginas
Finalmente revisé Google Search Console correctamente. No las métricas de vanidad, sino el informe de indexación.
**36 páginas indexadas. 172 páginas "Descubierta: actualmente no indexada".**
Eso significa que Google sabe que mis páginas existen (por el sitemap) pero no se ha molestado en rastrearlas. Para un sitio nuevo con poca autoridad, Google te da un crawl budget minúsculo. Mis 172 páginas estaban sentadas en una cola que podría tardar meses en procesarse.
La parte extraña: mi sitemap tenía 595 URLs, los blog posts estaban en la base de datos, la API los devolvía correctamente. Pero la *homepage* —la página con mayor autoridad de todo el sitio— tenía cero enlaces a ningún blog post. El crawler de Google llegaba a la homepage, no veía enlaces al contenido del blog y se iba. Los blog posts estaban huérfanos.
### La solución
Tres cambios:
1. **Añadí 30 enlaces de blog a la homepage.** No solo un widget de "últimos posts" — 3 tarjetas destacadas + 27 enlaces compactos. Cada visita a la homepage ahora le da a Google 30 rutas para descubrir contenido del blog.
2. **Escribí 19 nuevos blog posts de SEO.** Cada uno apuntando a una keyword de long-tail específica: "cómo hacer crecer un canal de telegram 2026", "bluesky vs twitter para negocios", "estrategia de marketing para indie hackers". No son contenido basura de IA — cada uno tiene entre 1,000 y 2,000 palabras de consejos reales que le daría a un amigo fundador.
3. **Integré la Google Indexing API.** En lugar de esperar a que Googlebot descubra las páginas a su propio ritmo, ahora envío las URLs directamente a Google. Configuré una cuenta de servicio, la autoricé en Search Console y envié 142 URLs en un solo lote. Google debería empezar a rastrear en 24-48 horas en lugar de semanas.
También ejecuté IndexNow para notificar a Bing/Yandex — 596 URLs enviadas.
Los blog posts también necesitaban traducciones. Ejecuté el pipeline de traducción: 115 posts traducidos al chino, español y portugués. El recuento total de blogs pasó de 396 a 539.
**Antes:** 36 páginas indexadas, 0 enlaces de homepage a blog, sin indexación proactiva
**Después:** 595 URLs en el sitemap, 30 enlaces en la homepage, 142 URLs enviadas a Google, 539 blog posts en total
## Problema 2: Mi IA estaba dando likes a tweets pero nunca respondía
El sistema de engagement se supone que debe encontrar tweets relevantes, generar respuestas elaboradas y publicarlas. Ha estado funcionando durante días. Supuse que estaba funcionando porque podía ver "eventos de engagement" en la base de datos.
Luego miré los datos reales:
**173 engagements totales. 109 likes. 0 respuestas.**
Cero. Ni una sola respuesta. Cada "engagement" era simplemente un like.
### Por qué
El código genera una respuesta usando Gemini, luego la pasa por un filtro de seguridad que busca frases que "suenan a IA":
```python
ai_tells = ["great post", "love this", "interesting take", "this resonates",
"totally agree", "couldn't agree more", "well said", "nailed it"]
for tell in ai_tells:
if tell in reply_lower:
return {"reply": "", "style": style["id"]}
```
El filtro comprueba si la respuesta *contiene* alguna de estas frases *en cualquier parte* del texto. No solo al principio — en cualquier lugar. Así que una respuesta perfectamente buena como "La parte sobre construir en solitario resuena conmigo — pasé 3 meses haciendo exactamente eso" es rechazada porque contiene "resuena".
Gemini genera texto que suena natural, pero el texto natural a veces incluye palabras como "acuerdo" o "resuena". El filtro estaba matando el 100% de las respuestas generadas. Cada una de ellas caía en el comportamiento de fallback: simplemente dar like al tweet y seguir adelante.
Había estado quemando presupuesto de engagement en likes durante días. Los likes son básicamente inútiles para el crecimiento. Las respuestas son las que impulsan las visitas al perfil y los follows.
### La solución
Cambié el filtro de "contiene en cualquier parte" a "empieza con":
```python
for tell in ai_start_tells:
if reply_lower.startswith(tell):
return {"reply": "", "style": style["id"]}
```
Probado inmediatamente. La generación de respuestas ahora funciona:
- Input: "Construir solo es la forma más RÁPIDA de aprender todo"
- Respuesta generada: "Esa división entre construir durante 16 horas y hacer marketing es muy real. De las cosas de marketing que enumeraste, ¿cuál te parece la más imposible?"
Natural, hace una pregunta, hace referencia al post original. Exactamente lo que queremos.
## Solución extra: Carga de medios con OAuth 2.0
Mientras depuraba, encontré otro problema. El usuario 63 (MysticStage, un producto de retratos de mascotas con IA) llevaba días sin poder publicar. Cada post: "Failed to upload media: Max retries exceeded."
La causa: la API de carga de medios de Twitter (v1.1) solo admite autenticación OAuth 1.0a. El usuario 63 se conectó a través de OAuth 2.0. Cada vez que el sistema intentaba subir una imagen, enviaba un Bearer token a un endpoint que solo acepta firmas OAuth 1.0a. 401 instantáneo.
La solución: detectar usuarios de OAuth 2.0 y omitir la carga de imágenes — publicar solo texto en su lugar. Un tweet de solo texto que realmente se publica es infinitamente mejor que un tweet con imágenes que falla silenciosamente.
## Tráfico y usuarios
Los números de esta semana cuentan la historia de un producto que está creciendo pero que aún no ha encontrado su canal de crecimiento:
| Día | Visitantes | Páginas vistas |
|-----|----------|------------|
| Mar 9 (Dom) | 18 | 55 |
| Mar 10 (Lun) | 49 | 120 |
| Mar 11 (Mar) | 45 | 293 |
| Mar 12 (Mié) | 71 | 161 |
| Mar 13 (Jue) | 15 | 31 |
| Mar 14 (Vie) | 31 | 127 |
| Mar 15 (Sáb) | 46 | 142 |
| Mar 16 (Dom) | 12 | 43 |
69 usuarios totales. 16 nuevos registros en los últimos 7 días. Principales fuentes de tráfico: Twitter/X (164 visitas), GitHub (125), Google Search (56), Hacker News (42), ChatGPT (13).
El número de Google Search es lo que más importa. 56 visitas desde búsqueda orgánica es casi nada. Por eso pasé el día de hoy en el SEO. Si incluso el 10% de esos 539 blog posts comienzan a posicionarse para keywords de long-tail, ese 56 podría convertirse en más de 500 al mes — y el tráfico de búsqueda convierte a una tasa 3-5 veces mayor que el tráfico de redes sociales porque la gente está buscando activamente una solución.
Un señal interesante: ChatGPT nos envió 13 visitas. Eso significa que nuestro GEO (Generative Engine Optimization) está trabajando — los motores de búsqueda de IA están recomendando BlogBurst en sus respuestas. Ese es un canal en el que la mayoría de los competidores ni siquiera están pensando todavía.
## Los números después del Día 6
| Métrica | Antes | Después |
|--------|--------|-------|
| Blog posts | 396 | 539 (+143) |
| URLs en sitemap | 519 | 595 |
| Enlaces Homepage → blog | 0 | 30 |
| Google Indexing API | No integrada | 142 URLs enviadas |
| Respuestas de engagement | 0% (solo likes) | Funcionando (probado) |
| Publicación OAuth 2.0 | Rota (fallo de medios) | Corregida (fallback a texto) |
## Qué estaré vigilando mañana
1. **¿Empezó Google a rastrear?** La Indexing API debería activar rastreos en 24-48 horas. Revisaré Search Console.
2. **¿Salieron respuestas reales?** El ciclo de engagement se ejecuta cada pocas horas. Los datos de mañana deberían mostrar respuestas reales, no solo likes.
3. **¿Publicó el usuario 63 con éxito?** Primera prueba real del fallback de solo texto para OAuth 2.0.
## La incómoda verdad
Dos sistemas estaban "ejecutándose" pero no funcionando. El dashboard estaba en verde. No había errores en los logs (los likes no fallan, simplemente no ayudan). Sin inspeccionar manualmente los registros reales de la base de datos, habría asumido que todo estaba bien durante semanas.
La lección: "el sistema se está ejecutando" y "el sistema está funcionando" no son lo mismo. Siempre revisa el resultado, no solo el proceso.
*Día 6 de la construcción de BlogBurst. 69 usuarios, $15 de MRR, 539 blog posts y dos fallos silenciosos que estaban quemando presupuesto sin producir resultados. Solucioné ambos. Ahora esperamos.*