Communitygithub.com

Escritor de Publicaciones de Blog

Úsalo cuando el usuario quiera escribir una publicación de blog sobre una característica, cambio de producto, PR, diff de git o cualquier tema técnico; acepta briefs de marketing, PRs, referencias de git, rutas del código base o descripciones libres como entrada.

¿Qué es Escritor de Publicaciones de Blog?

Este skill, llamado 'Escritor de Publicaciones de Blog', está diseñado para generar publicaciones de blog de alta calidad a partir de diversas entradas, como cambios de código, briefs de marketing o descripciones de características. Es especialmente útil para equipos de producto e ingeniería que desean comunicar cambios técnicos al público de manera efectiva. El skill es compatible con plataformas como Claude Code, Cursor y Codex, y se basa en un proceso estructurado de seis fases que incluyen descubrimiento, investigación de competidores, configuración personalizada, creación de esquemas, redacción y salida. Cada fase garantiza que el contenido sea relevante, optimizado para SEO y adaptado a la audiencia, evitando el uso de guiones largos (em-dashes) y priorizando la legibilidad. Además, el skill permite diferentes niveles de participación del usuario, desde generación automática hasta aprobación sección por sección.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/blog-post

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Vista previa

Del README del skill

Descripción del texto alternativo

Documentación

¿Qué hace Escritor de Publicaciones de Blog?

Escribe publicaciones de blog de alta calidad a partir de cambios de código, briefs de marketing o descripciones de características. Maneja SEO, estructura, coincidencia de tono y contenido visual.

Regla de escritura (no negociable): nunca uses guiones largos (— o –). Usa un guion - en su lugar. Aplica a cada línea del texto generado.

Resolución de Entrada

Resuelve el argumento (si se proporciona) en este orden:

  1. Ruta a un archivo existente de brief de marketing (.md que contenga "Resumen Ejecutivo" o "Mensajes Clave") → brief de marketing
  2. Coincide con URL de GitHub o patrón #\d+ → PR
  3. Contiene ... o .. → rango de refs de git
  4. Se resuelve a archivo/directorio existente → característica del código base
  5. De lo contrario → texto libre

Si no se proporciona ningún argumento, pregunta: "¿Sobre qué debería escribir? Puedes proporcionar una ruta de brief de marketing, URL/número de PR, rango de refs de git (ej. v1.0...v2.0), ruta de archivo/directorio, o simplemente describir el tema."

Si múltiples interpretaciones coinciden, confirma con el usuario.

Flujo de Proceso

digraph blog_post {
    rankdir=TB;
    "Resolve input" [shape=box];
    "Phase 1: Discovery" [shape=box];
    "Phase 2: Research" [shape=box];
    "Phase 3: Configure" [shape=box];
    "Phase 4: Outline" [shape=box];
    "Outline approved?" [shape=diamond];
    "Phase 5: Write" [shape=box];
    "Phase 6: Output" [shape=box];

    "Resolve input" -> "Phase 1: Discovery";
    "Phase 1: Discovery" -> "Phase 2: Research";
    "Phase 2: Research" -> "Phase 3: Configure";
    "Phase 3: Configure" -> "Phase 4: Outline";
    "Phase 4: Outline" -> "Outline approved?";
    "Outline approved?" -> "Phase 4: Outline" [label="no, revise"];
    "Outline approved?" -> "Phase 5: Write" [label="yes"];
    "Phase 5: Write" -> "Phase 6: Output";
}

NO omitas fases. Haz preguntas a un ritmo natural. No abrumes, pero tampoco ralentices artificialmente. Si el usuario responde varias preguntas a la vez, acepta sus respuestas agrupadas y avanza.

Si el usuario dice "elige los valores predeterminados", "tú decide", o similar, elige valores predeterminados razonables según el contexto, indica lo que elegiste y pide una única confirmación antes de continuar.

Nunca hagas suposiciones sin confirmar.

Fase 1: Descubrimiento

Paso 1 - Analizar la entrada

Tipo de entradaQué leer
Brief de marketingLee el brief - extrae declaración del problema, propuesta de valor, audiencia, mensajes clave, posicionamiento competitivo. Aún así haz el Paso 2 si el brief carece de contexto del producto, luego ve al Paso 3.
PRDiff, descripción del PR, comentarios de revisión, mensajes de commit (gh pr view, gh pr diff). Para PRs grandes (20+ archivos), enfócate en cambios visibles para el usuario.
Refs de gitgit diff y git log entre los refs. Para rangos grandes, prioriza mensajes de commit y cambios visibles para el usuario.
Característica del código baseLee los archivos/directorios especificados.
Texto libreAnaliza la descripción del usuario. Si carece de detalles (sin nombre de característica, sin propuesta de valor, sin contexto), pide al usuario más detalles o que apunte a un archivo/PR específico. Recurre a preguntas abiertas solo si no pueden.

Cambios visibles para el usuario incluyen: nuevas características, cambios de UI, cambios de API, mejoras de rendimiento, correcciones de errores y actualizaciones de documentación. Cambios internos incluyen: refactorizaciones, adiciones de pruebas, cambios de CI y actualizaciones de dependencias. Cuando no estés seguro, enumera lo que encontraste y pregunta al usuario cuáles son relevantes.

Manejo de errores:

  • gh no instalado/autenticado → informa al usuario, sugiere gh auth login, ofrece entrada alternativa
  • PR/ref inválido → dile al usuario, pide verificar
  • Archivo no encontrado → pide la ruta correcta

Paso 2 - Leer contexto más amplio del producto

Lee si existen: README, docs/, package.json (o equivalente), referencias de marketing.

Objetivo: entender qué es el producto, para quién es y qué hace.

Si no se encuentra nada, pregunta: "No pude encontrar contexto del producto en el repositorio. ¿Puedes describir brevemente el producto y para quién es?"

Paso 3 - Presentar entendimiento

"Aquí está lo que entiendo:"

  • Característica A - descripción corta
  • Característica B - descripción corta

"¿Cuáles de estas debería cubrir la publicación del blog? ¿Algo que añadir, eliminar o corregir?"

Haz tantas preguntas como sea necesario para entender completamente el alcance. NO continúes hasta que el usuario confirme.

Paso 4 - Señalar elementos sensibles

Busca: cambios disruptivos (breaking changes), obsolescencias, correcciones de seguridad, requisitos de migración.

Si encuentras alguno, señálalo y pregunta cómo enmarcarlos antes de continuar.

Fase 2: Investigación de Blogs de la Competencia

Antes de configurar la publicación, busca publicaciones de blog similares en el espacio:

  1. Usa WebSearch para encontrar de 3 a 5 publicaciones de blog existentes que cubran el mismo tema, productos competidores o anuncios de características similares
  2. Analiza qué funciona y qué no en esas publicaciones - estructura, titulares, ganchos, palabras clave SEO, profundidad
  3. Identifica brechas de contenido - qué NO están cubriendo los competidores que esta publicación podría
  4. Usa estos hallazgos para informar la estrategia SEO, generación de titulares y estructura de contenido

Si WebSearch no está disponible, salta esta fase y confía en tu propio conocimiento.

Presenta un resumen breve al usuario:

"Encontré algunas publicaciones similares en el espacio. Esto es lo que noté:"

  • [Hallazgos clave sobre lo que funciona]
  • [Brechas de contenido / oportunidades]
  • [Oportunidades de palabras clave SEO]

"Usaré estos conocimientos para dar forma a la publicación."

Fase 3: Configuración

Haz estas preguntas:

P1 - Audiencia: "¿Para quién es esta publicación de blog?" (desarrolladores, usuarios finales, tomadores de decisiones técnicas, audiencia general, otro)

P2 - Tono: Lee publicaciones de blog existentes, README y docs en el repositorio para detectar la voz del producto. Luego confirma:

"Basado en tu contenido existente, el tono parece [ej. conversacional y amigable para desarrolladores]. ¿Debería coincidir con eso o ir en una dirección diferente?"

Si no hay contenido existente para analizar, pregunta directamente qué tono quiere el usuario.

P3 - Tipo de publicación: Según la entrada y la audiencia, recomienda un tipo de publicación y confirma:

  • Anuncio de característica - "Lanzamos X, aquí está por qué importa" (~600-1000 palabras)
  • Técnico en profundidad - "Cómo construimos X, las decisiones y la arquitectura" (~1500-2500 palabras)
  • Narrativa problema-solución - "Tienes el problema X, aquí está cómo esto lo resuelve" (~1000-2000 palabras)

"Dado el [entrada/audiencia], recomendaría una publicación de tipo [tipo] porque [razón]. ¿Suena bien?"

P4 - CTA: Infiere la llamada a la acción más apropiada según el contexto:

  • Código abierto → da estrella al repositorio, contribuye, pruébalo
  • SaaS → regístrate, prueba gratuita
  • Actualización de característica → prueba la nueva característica, lee los docs
  • Biblioteca/SDK → instálalo, lee la guía de migración

"Sugiero que el CTA sea: [CTA inferido]. ¿Quieres seguir con eso o algo diferente?"

P5 - Nivel de participación: "¿Qué tan involucrado quieres estar en el proceso de escritura?"

  • A) Solo escríbelo - Me encargo de todo, elijo el mejor titular y guardo la publicación final. Puedes solicitar cambios después.
  • B) Muéstrame el esquema primero - aprueba la estructura, luego escribo la publicación completa
  • C) Guíame a través - aprobación del esquema, luego sección por sección con confirmación

Fase 4: Esquema

Genera un esquema estructurado:

## [Título de trabajo]

1. **Gancho/Introducción** - [enfoque: pregunta/estadística/declaración audaz/historia]
   - Punto clave a establecer
   - Transición al cuerpo

2. **Nombre de la sección** - [propósito]
   - Puntos clave
   - Recuento estimado de palabras

3. **Nombre de la sección** - [propósito]
   - Puntos clave
   - Recuento estimado de palabras

[...tantas secciones como sean necesarias]

N. **Conclusión** - [resumen + CTA]
   - Conclusión clave a reforzar
   - CTA: [acción específica]

Total estimado: ~X palabras

Si el nivel de participación es A, genera el esquema internamente sin mostrarlo. Para B y C, preséntalo y espera la aprobación.

Fase 5: Escribir

Proceso de escritura interno (siempre se ejecuta, independientemente del nivel de participación)

Para cada sección:

  1. Escribe la sección
  2. Auto-revisión: analiza si el contenido podría estructurarse de manera diferente, si falta contexto que el lector necesita para entender y asimilarlo, o si tiene lagunas que confundirían a alguien no familiarizado con el tema
  3. Relleno: si se encuentran piezas faltantes, añade párrafos de transición, contexto o reestructura antes de continuar

Si el nivel de participación es C, presenta cada sección después de la auto-revisión y obtén confirmación antes de continuar. Para A y B, ejecuta este proceso en silencio.

Titulares

Después de completar el cuerpo, genera 3-5 opciones de titular usando diferentes fórmulas:

  • Cómo hacerlo ("Cómo [Producto] resuelve [problema]")
  • Número/lista ("3 razones por las que [característica] cambia [flujo de trabajo]")
  • Pregunta ("¿Cansado de [punto de dolor]?")
  • Declaración audaz ("[Característica] es la forma más rápida de [resultado]")
  • Antes/después ("[Dolor] → [Resultado]: Cómo [característica] lo hace posible")

Recomienda uno y explica por qué funciona mejor para la audiencia, SEO y contexto de esta publicación. También explica las compensaciones de los otros.

Para los niveles de participación B y C, presenta las opciones y obtén la selección del usuario antes de continuar. Para el nivel A, usa tu recomendación.

Prioriza la legibilidad sobre las restricciones SEO. Escribe el mejor titular primero. Si no se ajusta al límite de 50-60 caracteres para el título SEO, crea una etiqueta de título más corta separada para el frontmatter.

Frontmatter SEO

Genera como frontmatter YAML en la parte superior de la publicación:

---
title: "[Titular seleccionado]"
meta_description: "[140-160 caracteres, incluye la palabra clave principal, propuesta de valor convincente]"
primary_keyword: "[palabra clave objetivo principal]"
secondary_keywords: ["keyword1", "keyword2", "keyword3"]
long_tail_keywords: ["frase más larga 1", "frase más larga 2"]
slug: "[slug-amigable-para-url]"
---

Reglas:

  • Etiqueta de título: 50-60 caracteres, palabra clave principal al inicio
  • Meta descripción: 140-160 caracteres, escrita para humanos, incluye propuesta de valor única
  • Palabras clave informadas por la investigación competitiva de la Fase 2
  • Sin relleno de palabras clave - solo lenguaje natural

Reglas de formato de contenido

  • Párrafos cortos: máximo 2-4 oraciones
  • Subtítulos: usa H2 para secciones principales, H3 para subsecciones. Los subtítulos deben funcionar como un esquema escaneable por sí mismos.
  • Frase clave en negrita para apoyar la exploración en patrón F
  • Viñetas y listas para cualquier conjunto de 3+ elementos
  • Una idea por párrafo
  • Nunca uses guiones largos en el contenido generado. Sin caracteres "—". Usa comas, dos puntos, puntos o paréntesis en su lugar.

Gancho/Introducción

La introducción tiene tres componentes:

  1. Gancho (primeras 1-2 oraciones) - una estadística sorprendente, afirmación audaz, punto de dolor relatable o pregunta provocativa. Debe crear curiosidad o resonancia emocional en menos de 3 segundos de lectura.
  2. Autoridad - establece brevemente por qué esto importa o por qué el lector debería confiar
  3. Promesa - indica claramente lo que el lector obtendrá de esta publicación

Mantén la introducción en 3-5 párrafos cortos. Sin muros de texto.

Conclusión

  1. Reitera la conclusión principal (NO introduzcas nuevas ideas)
  2. CTA único y claro con verbo de acción ("Pruébalo ahora", "Da estrella al repositorio", "Comienza tu prueba gratuita")
  3. Opcionalmente, termina con una declaración prospectiva o pregunta para iniciar discusión

Contenido visual

Genera directamente cuando sea posible:

  • Diagramas de arquitectura → bloques de código mermaid o SVG en línea
  • Diagramas de flujo de datos → bloques de código mermaid
  • Tablas de comparación → tablas markdown
  • Ejemplos de código → bloques de código con resaltado de sintaxis

Para imágenes que necesitan creación externa:

<!-- TODO: Añadir imagen aquí -->
<!-- Sugerencia: [descripción de lo que debería mostrar la imagen] -->
<!-- Prompt LLM: "[prompt listo para usar para un modelo de generación de imágenes, ej. 'Una ilustración limpia y minimalista que muestra un panel con alternancia de modo oscuro, estilo de diseño plano, estética de herramientas para desarrolladores, relación 16:9']" -->
![Descripción del texto alternativo](placeholder.png)

Usa elementos visuales siempre que ayuden a la comprensión - después de explicar un concepto complejo, al comparar opciones, o al mostrar cambios de UI.

Ejemplos de código

Para audiencias de desarrolladores, incluye al menos un ejemplo de código que muestre la característica en acción. Prefiere fragmentos mínimos y ejecutables (5-15 líneas). Muestra antes/después al demostrar una mejora.

Fase 5b: Revisión del Borrador Completo

Después de que todas las secciones estén escritas y el titular seleccionado, ensambla la publicación completa (frontmatter + cuerpo).

  • Nivel A: Omite la revisión. Procede directamente a la salida. Presenta la publicación final y guárdala. El usuario puede solicitar cambios después.
  • Nivel B: Presenta el borrador completo al usuario para revisión antes de guardar. "Aquí está la publicación completa. ¿Quieres algún cambio antes de que la guarde?"
  • Nivel C: El usuario ha visto cada sección individualmente, pero aún así presenta el borrador ensamblado para una revisión final. "Aquí está la publicación completa. ¿Quieres algún cambio antes de que la guarde?"

Para B y C, si el usuario solicita revisiones, hazlas y presenta de nuevo. Solo procede a la salida una vez que el usuario apruebe.

Fase 6: Salida

Primero detecta el directorio de blog existente. Verifica:

  • content/blog/, src/pages/blog/, _posts/, blog/, posts/, articles/

Si se encuentra, usa ese directorio. Si no, usa por defecto blog/posts/.

Preséntale al usuario:

"Guardaré esto en [ruta-detectada-o-por-defecto]/<slug>.md. ¿Quieres en otro lugar, o debería omitir el guardado y solo imprimirlo?"

Crea el directorio si no existe.

Si el archivo ya existe: pregunta si sobrescribir o crear una copia versionada.

Manejo de Errores

  • gh no disponible → informa al usuario, ofrece entrada alternativa
  • PR/ref inválido → pide al usuario verificar
  • Sin contexto del producto → pide al usuario describir el producto
  • WebSearch no disponible → omite la Fase 2, procede con tu propio conocimiento
  • Sin directorio de blog existente → usa por defecto blog/posts/, créalo

Lo que este skill NO hace

  • Generar copias para redes sociales (usa /social-copy para eso)
  • Publicar o desplegar la publicación en cualquier plataforma
  • Generar briefs de marketing (usa /marketing-brief para eso)
  • Crear múltiples variantes para diferentes audiencias - ejecuta el skill de nuevo para una audiencia diferente

Individual skills in this repo

This repo contains 14 individual skills — each has its own dedicated page.

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when a settled change must be turned into an ordered stack of small blocks before anyone implements. Don't use for unsettled intent, typos, comments, formatting, docs-only work, or writing the implementation itself.

AlemTuzlak/skills

Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the user wants to deeply learn a new topic from scratch. Runs a pre-interview (current knowledge, end-goal proficiency, depth, practice load, background, scope), researches online (articles, niche-influencer blogs, canonical docs, subtopic landscape), then produces a structured markdown course with mandatory visual diagrams, evidence-based learning-science features (retrieval practice, spaced callbacks, worked-example fading, concept ledger, jargon gate, analogy hygiene), and a self-contained interactive HTML mini-course. Triggers on /teach-me, "teach me about X", "I want to learn X", "deep dive on X", "create a course on X", "study X with me".

AlemTuzlak/skills

Use when the change intent is already settled and the agent must map what a behavior change touches before an implementation plan or any code. Use for new features, bug fixes, and refactors that move a boundary. Don't use for typos, comments, formatting, lockfile-only diffs, docs with no code, or while the user is still deciding what they want.

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

Skills relacionados