Automaticé la publicación de mi blog a Dev.to
Acabo de automatizar el flujo completo de publicación de mi blog. Ahora escribo un post en Sanity Studio, le doy Publish, y en 10 segundos aparece en dos sitios a la vez: en mi portafolio (josht.xyz) y en Dev.to.
El flujo completo
Antes tenía que copiar el contenido, pegarlo en el editor de Dev.to, subir las imágenes manualmente y ajustar el formato. Un proceso de 15 minutos por post. Ahora es automático.
La arquitectura es simple pero efectiva:
1. Escribo el post en Sanity Studio.
2. Al publicar, Sanity dispara un webhook con el ID del documento.
3. Mi API Route en Next.js recibe el webhook, consulta el post completo vía GROQ y lo convierte a Markdown.
4. Llama a la API de Dev.to con el contenido y un canonical_url que apunta a mi dominio.
El detalle del canonical
El canonical_url es lo más importante de toda la integración. Le dice a Google y a Dev.to que la versión "oficial" del contenido vive en mi sitio, no en Dev.to. Esto evita penalizaciones por contenido duplicado en SEO y me mantiene el tráfico.
Los problemas que encontré
Dev.to no acepta URLs con http:// en el canonical_url. Hay que usar siempre https://. Lo descubrí a la mala, con un error 422 que no explicaba nada hasta que leí la documentación con calma.
También hay que asegurarse de que el dominio no esté redirigiendo. Si josht.xyz redirige a www.josht.xyz, el webhook de Sanity falla con un 308 antes de llegar a mi código. Es un detalle que parece obvio pero que cuesta ver si no lo estás esperando.
Lo que viene
Por ahora el flujo funciona solo de Sanity a Dev.to. En el futuro quiero añadir lo inverso: que si alguien comenta o reacciona en Dev.to, se refleje de alguna forma en mi sitio. Pero eso es otro proyecto.
Mientras tanto, ya tengo el sistema que quería. Escribo una vez, publico en dos lugares, sin copiar y pegar.