Completa antes de enviar
[site address][topic][2 to 6 category names][topics or draft texts][location, or "none"][Search Console property, or "none"]
Quiero que construyas un blog y un centro de conocimiento en mi sitio [site address] dentro de mi servidor de Opus Growth. Temática: [topic]. Categorías: [2 to 6 category names]. Autor: [real author name and a short bio; if none, "publish under the business name"]. Temas o borradores para los primeros posts: [topics or draft texts]. Fotos de portada reales: [location, or "none"].
1. Preparación. Lee la sección del blog de site_seo_guide. Lista los archivos con site_list_files y anota la versión de restauración con site_versions. Si el sitio todavía funciona con el CDN Play de Tailwind y fuentes de terceros, pasa primero a CSS compilado y fuentes autoalojadas, porque blog-build.mjs copia el `<head>` de index.html en todas las páginas del blog. Por la misma razón, no dejes en el `<head>` de index.html ningún JSON-LD ni preload de imagen específico de la página de inicio; mueve el schema de la home al final del body.
2. Configuración. En el bloque `blog` de site.config.js, escribe el título, una descripción de 110 a 165 caracteres, una introducción de al menos tres frases para la página de listado y, para cada categoría, un nombre, una descripción de 110 a 165 caracteres y una introducción original de al menos dos párrafos; para el autor, un nombre, un cargo, una bio y una meta description de 110 a 165 caracteres. Añade la página de posts y las categorías al menú. Si no se ha indicado un nombre real de autor, no inventes ninguno; publica bajo el nombre del negocio y no generes página de autor.
3. Posts. Escribe cada post como `blog/_posts/YYYY-MM-DD-slug.md`. Front matter: title (menos de 65 caracteres incluido el sufijo de marca), description (110 a 165 caracteres), date, updated solo si realmente lo has actualizado, image, author, category (la clave de la categoría) y tags. Cuerpo: el primer párrafo responde a la pregunta, después subtítulos, pasos numerados donde encajen, de 3 a 6 enlaces internos y un FAQ final de dos o tres preguntas. IMPORTANTE: blog-build.mjs sube un nivel los encabezados markdown; `#` pasa a ser H2 y `##` pasa a ser H3. Si empiezas con `##` como indica la guía, la página salta de h1 a h3 y baja la puntuación de accesibilidad. Nada de arranques tópicos ("Hoy en día..."), nada de estadísticas ni fuentes inventadas, y no presentes como regla algo que depende del caso.
4. Imágenes. Produce las portadas en WebP y AVIF a 480, 800, 1200 y 1600 píxeles con el método del pack de rendimiento, y escribe `/assets/img/<name>-1200.webp` en el campo image del front matter.
5. Generar. Ejecuta `node seo-stamp.mjs` y después `node blog-build.mjs` con site_run_command. blog-build deja las siguientes carencias, así que escribe un script `blog-extras.mjs` que se ejecute justo después:
1. En las páginas de post y de listado: `<!DOCTYPE html>` en mayúsculas, un único charset y un único viewport (blog-build los añade de nuevo encima de los que copia de index.html), clases en lugar de estilos en línea, `<main id="main">`.
2. Imagen de portada: blog-build escribe `src` como una dirección absoluta con el dominio y no da dimensiones; sustitúyela por un `<picture>` con ruta relativa a la raíz, con srcset AVIF y WebP, width, height y `fetchpriority="high"`.
3. Elimina las etiquetas script de site.config.js, chrome.js y motion.js que añade blog-build (una vez que pases al menú estático estos archivos ya no existen y la consola muestra errores 404).
4. Añade a cada post unas migas de pan visibles Inicio › Posts › Categoría › Post, las fechas de publicación y actualización, un enlace a la categoría, una caja de autor con enlace a la página del autor, el post anterior y el siguiente, y dos posts relacionados, dando preferencia a la misma categoría. Añade articleSection, dateModified y un nodo author de tipo Person con url al schema BlogPosting; amplía BreadcrumbList a cuatro niveles.
5. Añade a la página de listado og:image, el texto introductorio y los enlaces a las categorías.
6. Genera una página `/blog/kategori/<slug>/` para cada categoría: CollectionPage, un ItemList con numberOfItems y BreadcrumbList; muestra solo la fecha y el título en las tarjetas, porque repetir las descripciones de los posts de la página de listado activa la advertencia de contenido duplicado de seo-check.
7. Genera una página `/blog/yazar/<slug>/` para el autor: ProfilePage y Person, con la bio y la lista de posts.
8. Añade las páginas nuevas a sitemap.xml con lastmod. blog-build genera el feed RSS; enlázalo desde la página de inicio.
6. Menú y CSS. Convierte las etiquetas vacías `<site-nav>` y `<site-footer>` de las páginas del blog en el menú estático con `node chrome-stamp.mjs` y después recompila Tailwind, porque blog-extras añade clases nuevas. Cada vez que añadas o cambies un post, ejecuta esta secuencia desde el principio: seo-stamp, blog-build, blog-extras, chrome-stamp, compilación del CSS.
7. Verificaciones. `node seo-check.mjs` con 0 errores y 0 advertencias (al menos 150 palabras en cada página y un porcentaje de duplicado entre páginas inferior al 50 por ciento), `node design-check.mjs` con 0 errores, `npx --yes html-validate "**/*.html"` con 0 errores. Añade las categorías, los posts y la dirección del RSS a llms.txt. core_web_vitals en móvil y escritorio para la página de inicio, el listado, un post, una categoría y la página del autor; seo_audit para un post. Abre el listado y un post con site_preview a 360, 390, 768 y 1440 píxeles de ancho. Si el rendimiento en móvil es inferior a 95, busca la causa; si los encabezados usan una tipografía distinta, haz también preload de esa.
8. Tras publicar. Envía sitemap.xml con gsc_submit_sitemap y revisa los posts y las páginas de categoría con gsc_inspect_urls. Mi propiedad de Search Console: [Search Console property, or "none"].
Resultado: la lista de direcciones generadas (posts, listado, categorías, autor, RSS, sitemap), una tabla de schema por tipo de página, un mapa de enlaces internos (qué página enlaza a cuál), una tabla de puntuaciones por página y dispositivo y la secuencia de cinco comandos que hay que seguir al añadir un post nuevo.
Resultado de ejemplo
Un ejemplo del resultado que da este prompt. La estructura procede de la salida real de las herramientas; cifras y nombres son ficticios.
Ejemplo de resultado (en un sitio de demostración ficticio; el sitio y el autor son ficticios, las puntuaciones se midieron realmente en esta demo)
En un centro de conocimiento ficticio sobre cuidado de plantas, Saksı Defteri, se generaron tres entradas, dos categorías y una página de autor.
| Dirección | Tipo | Schema |
|---|
| /blog/ | Listado | Blog, BreadcrumbList |
| /blog/saksi-bitkisi-ne-siklikla-sulanir/ | Entrada | BlogPosting (articleSection, dateModified, autor Person), BreadcrumbList de 4 niveles |
| /blog/kategori/sulama/ | Categoría | CollectionPage, ItemList (numberOfItems 1), BreadcrumbList |
| /blog/kategori/saksi-ve-toprak/ | Categoría | CollectionPage, ItemList (numberOfItems 2), BreadcrumbList |
| /blog/yazar/ece-kaya/ | Autor | ProfilePage, Person, BreadcrumbList |
| /blog/rss.xml, /sitemap.xml | Feed y mapa | 9 direcciones con lastmod |
| Página | Móvil | Escritorio |
|---|
| Inicio | 98 / 100 / 100 / 100 | 100 / 100 / 100 / 100 |
| /blog/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 |
| Entrada (la más lenta) | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 |
| Páginas de categoría | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 |
| Página de autor | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 |
En la salida en bruto de blog-build, seo-check reportó 8 errores y 4 advertencias, y html-validate 43 errores (39 estilos en línea, 4 DOCTYPE en minúsculas); tras blog-extras todos quedaron en cero. La página de inicio se quedó primero en 95 en móvil (CLS 0,126 por la fuente de los títulos); al precargar también la fuente de los títulos subió a 98.
Mapa de enlaces internos: cada entrada enlaza a su categoría, a la página del autor, a la entrada anterior y a la siguiente y a dos entradas relacionadas; las páginas de categoría y de autor enlazan a las entradas, y la página de inicio a las categorías y al feed RSS.
Al añadir una entrada: seo-stamp, blog-build, blog-extras, chrome-stamp, compilación de Tailwind; después seo-check, design-check, html-validate.