Cómo generar automáticamente títulos y descripciones meta SEO con Local Ollama

Tienes 300 páginas de productos, documentación o blog listas para publicar, pero la columna de metadatos sigue en blanco. Escribir cada título y meta descripción manualmente es lento; copiar un mismo patrón en todo el sitio produce resultados repetitivos; y solicitar un "título SEO" a un modelo de lenguaje local suele generar comentarios adicionales, afirmaciones inventadas o formatos inconsistentes.

Un enfoque más adecuado consiste en tratar la generación de metadatos como un pequeño flujo de datos: proporcionar al modelo únicamente información específica de cada página, exigir una salida estructurada, validarla mediante código y, finalmente, revisar las excepciones antes de publicar. Ollama se adapta bien a este flujo de trabajo, ya que su API local está disponible http://localhost:11434/apitras la instalación y admite salidas estructuradas con esquema JSON. La documentación de Ollama y Google Search a la que se hace referencia aquí se revisó el 13 de septiembre de 2026.

Por qué fallan los metadatos SEO automáticos

La mayoría de los fallos se deben al flujo de trabajo del modelo, más que a una única "indicación incorrecta". Las causas comunes incluyen proporcionar muy poco contenido a la página, permitir que el modelo responda con prosa de formato libre, aplicar la misma fórmula de palabras clave a todas las URL y publicar resultados sin realizar comprobaciones de duplicados a nivel del sitio.

También existe una idea errónea persistente sobre los límites de caracteres. Google afirma que no hay un límite de longitud fijo para <title>los elementos o meta descripciones de una página; los enlaces de título y los fragmentos se truncan según sea necesario, generalmente de acuerdo con el ancho del dispositivo. Google también puede generar un enlace de título o fragmento diferente a partir del contenido de la página cuando sus sistemas consideran que otra representación es más útil. Consulte la guía oficial de Google sobre enlaces de título , fragmentos y meta descripciones .

Esto significa que un script puede establecer límites de longitud editorial para garantizar la coherencia, pero no debe indicar que esos números son requisitos de Google. En el ejemplo siguiente, 65 caracteres para el título y 165 para la descripción son solo límites internos. Modifícalos para que se ajusten a tu CMS, marca, necesidades de localización y proceso de revisión.

Paso 1: Instale Ollama y confirme que la API local funciona.

La guía de inicio rápido oficial de Ollama indica compatibilidad con macOS, Windows y Linux. Tras la instalación, descargue un modelo local. La documentación actual de Ollama utiliza con frecuencia gemma3ejemplos de API, por lo que resulta un ejemplo neutral y práctico para este tutorial:

ollama pull gemma3

A continuación, prueba el punto final local:

curl http://localhost:11434/api/generate -d '{"model":"gemma3","prompt":"Reply with the word ready.","stream":false}'

La documentación de la API de Ollama indica que la API local se sirve en http://localhost:11434/api. Ollama también indica que el acceso local a esta dirección no requiere autenticación. Si su servicio local no está en ejecución, ollama servees el comando CLI documentado para iniciarlo. Evite sustituir un -cloudmodelo si su objetivo es realmente la inferencia local.

Flujo de trabajo de la terminal que muestra los comandos de Ollama para comprobar la instalación, descargar un modelo, listar los modelos locales e iniciar un servicio localhost.
Flujo de trabajo para la configuración en la terminal: verificar Ollama, descargar un modelo local, confirmar que aparece en la lista de modelos locales y asegurarse de que el servicio esté disponible en localhost. Los valores de nombre y longitud del modelo que se muestran son ejemplos de flujo de trabajo, no requisitos de SEO.

Elige un modelo según tu hardware.

Este artículo no pretende afirmar que un modelo sea universalmente el mejor para los metadatos SEO. La disponibilidad de modelos y la compatibilidad con el hardware cambian con el tiempo, y los modelos más grandes requieren más memoria y, por lo general, responden más lentamente. Comience con un modelo que su equipo pueda ejecutar sin problemas, genere un pequeño conjunto de datos de referencia y, a continuación, compare la precisión, la unicidad, la latencia y la coherencia de los datos antes de procesar miles de páginas.

Paso 2: Forzar la salida estructurada en lugar de analizar la prosa.

El texto libre es frágil para la automatización. Una respuesta como «Aquí hay tres excelentes opciones…» obliga al programa a adivinar dónde comienza el título real. La documentación de salidas estructuradas de Ollama admite el paso de un esquema JSON en el formatcampo. La documentación también recomienda esquemas reutilizables a través de Pydantic en Python y señala que una temperatura baja, como 0, puede mejorar el determinismo.

Instala los dos paquetes de Python utilizados en este ejemplo:

python -m pip install -U ollama pydantic

Luego crea generate_meta.py:

from ollama import Client
from pydantic import BaseModel, Field

MODEL = "gemma3"
client = Client(host="http://localhost:11434")

class SeoMeta(BaseModel):
    title: str = Field(min_length=10, max_length=65)
    description: str = Field(min_length=70, max_length=165)

SYSTEM = """
You create SEO metadata from the page content supplied by the user.

Rules:
- Accurately describe only what is present in the page content.
- Write a concise, descriptive title.
- Write a useful meta description that distinguishes this page from other pages.
- Do not repeat keywords unnaturally.
- Keep the same primary language as the page.
- Do not invent prices, dates, features, guarantees, statistics, or claims.
- The length bounds in the JSON schema are our editorial limits, not Google rules.
- Return only the structured result required by the schema.
"""

def generate_meta(url: str, source_title: str, h1: str, body_text: str) -> SeoMeta:
    prompt = f"""
URL: {url}
Current title: {source_title}
H1: {h1}

Page text:
{body_text[:12000]}

Create one meta title and one meta description for this page.
"""
    response = client.chat(
        model=MODEL,
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": prompt},
        ],
        format=SeoMeta.model_json_schema(),
        options={"temperature": 0},
    )
    return SeoMeta.model_validate_json(response.message.content)

if __name__ == "__main__":
    result = generate_meta(
        url="https://example.com/guides/clean-cast-iron",
        source_title="Cast Iron Guide",
        h1="How to Clean a Cast-Iron Skillet Without Damaging the Seasoning",
        body_text=(
            "This guide explains how to remove stuck food, wash a cast-iron "
            "skillet, dry it thoroughly, and apply a thin layer of oil..."
        ),
    )
    print(result.model_dump_json(indent=2))
Editor de código que muestra un generador de metadatos SEO en Python con una llamada de chat de Ollama, una solicitud de contenido de página e instrucciones de salida orientadas a JSON.
El generador debe especificar claramente la evidencia de la página, los campos de salida y las restricciones editoriales. En producción, es preferible utilizar la salida estructurada en esquema JSON de Ollama y la validación del lado de la aplicación, en lugar de basarse únicamente en la redacción de las indicaciones.

Por qué la solicitud incluye el título actual y H1

Google afirma que su sistema de enlaces de título puede tener en cuenta el <title>título visual principal de la página, encabezados como <h1><p>, og:title<h1>, texto destacado, texto de anclaje y otras señales. Su generador local no necesita reproducir el sistema de Google, pero proporcionarle el título de origen, el encabezado H1, la URL y un texto representativo del cuerpo ayuda a que los metadatos propuestos se ajusten a la página que los lectores verán realmente.

No introduzca listas de palabras clave no relacionadas ni le pida al modelo que las “ajuste”. Google recomienda explícitamente títulos descriptivos y concisos, y advierte contra el uso excesivo de palabras clave y la repetición de textos repetitivos. En cuanto a las descripciones, Google indica que la generación programática específica para cada página es apropiada para sitios web con grandes bases de datos, siempre que las descripciones sean precisas, fáciles de leer y variadas.

Paso 3: Ejecuta una página y luego valida antes de escalar.

Ejecuta el script:

python generate_meta.py

Un resultado satisfactorio debería ser un objeto JSON que Pydantic pueda validar. Más importante aún, un revisor humano debería poder compararlo con la página de origen y responder rápidamente a cuatro preguntas:

  • ¿El título describe esta página en concreto, en lugar de la página web en general?
  • ¿La descripción evita afirmaciones, fechas, precios o características que no aparecen en el contenido original?
  • ¿Seguirían teniendo sentido estos metadatos si se leyeran sin el cuerpo de la página?
  • ¿Es diferente de los metadatos que ya se utilizan en páginas cercanas?
Ventana de PowerShell que muestra un script de metadatos de Python que devuelve un objeto JSON con un título y una descripción.
Pruebe primero una página representativa e inspeccione el resultado estructurado antes de iniciar un proceso por lotes. Es necesaria una respuesta JSON analizable, pero la precisión de los datos y la relevancia a nivel de página aún requieren validación.

Agregue reintentos para fallas editoriales, no solo para errores de API.

Un esquema puede restringir los tipos y longitudes de datos, pero no garantiza que una oración sea veraz o suficientemente específica. Implemente una lógica de reintento basada en comprobaciones medibles. Por ejemplo, rechace un campo vacío, un título duplicado, texto repetitivo prohibido o una descripción que repita el título casi palabra por palabra. Si la página contiene afirmaciones reguladas o de gran importancia, exija una revisión humana en lugar de intentar automatizar la generación de confianza.

Mantén las indicaciones para reintentar concisas. En lugar de regenerar todo con la opción "mejorarlo", indícale al modelo qué falló: "El título propuesto duplica otra página. Reescríbelo utilizando el tema único del encabezado H1, manteniendo cada afirmación basada en el contenido proporcionado". Esto facilita la auditoría de los fallos.

Paso 4: Exportar las páginas a CSV para su revisión y publicación.

Una vez que la prueba de una página sea fiable, guarde sus datos de entrada en un archivo CSV con columnas como url, source_title, h1, y content. El campo de contenido debe contener texto de página limpio, no menús de navegación, avisos de cookies ni miles de enlaces de pie de página irrelevantes.

Agregue esta lógica de procesamiento por lotes debajo de la función generadora o colóquela en un script separado:

import csv

rows = []
seen_titles = set()

with open("pages.csv", newline="", encoding="utf-8") as f:
    for row in csv.DictReader(f):
        meta = generate_meta(
            url=row["url"],
            source_title=row.get("source_title", ""),
            h1=row.get("h1", ""),
            body_text=row["content"],
        )

        flags = []
        normalized = meta.title.casefold().strip()
        if normalized in seen_titles:
            flags.append("duplicate_title")
        seen_titles.add(normalized)

        rows.append({
            **row,
            "generated_title": meta.title,
            "generated_description": meta.description,
            "title_length": len(meta.title),
            "description_length": len(meta.description),
            "qa_flags": ",".join(flags),
        })

with open("seo_meta_output.csv", "w", newline="", encoding="utf-8") as f:
    fieldnames = list(rows[0].keys())
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

El archivo CSV resultante se puede revisar en Excel, LibreOffice, una herramienta de importación de bases de datos o el flujo de trabajo de su CMS. No sobrescriba automáticamente los metadatos en tiempo real en la primera ejecución. Conserve el título y la descripción originales junto con la propuesta generada para que los revisores puedan compararlos y para facilitar la reversión de cambios.

Vista de hoja de cálculo con los títulos de los artículos en una columna y los metatítulos y descripciones SEO generados en las columnas de reseñas adyacentes.
Una cola de revisión de hojas de cálculo facilita la auditoría de la generación masiva: conserve el identificador de la página de origen, el título generado, la descripción generada, las longitudes y los indicadores de control de calidad antes de publicar los cambios.

Haga que el proceso por lotes sea más seguro.

ControlarQué marcarPor qué es importante
Validación de esquemaCampos faltantes o no válidosImpide que la salida con formato incorrecto ingrese al CMS.
Verificación de título duplicadoEl mismo título normalizado en dos URL.Ayuda a diferenciar las páginas.
Comprobación de idiomaEl lenguaje de los metadatos difiere del lenguaje de la página.Google recomienda que el idioma y el sistema de escritura coincidan con el idioma principal de la página.
Verificación de pruebasFaltan números, precios, fechas, marcas o garantías en la fuente.Reduce las afirmaciones relacionadas con alucinaciones.
Verificación estándarFrases largas y repetidas en todo el sitioGoogle desaconseja el uso repetido de títulos genéricos.
Verificación de la longitud editorialFuera del rango de viviendas seleccionadoMantiene la coherencia en la salida del CMS; esto no es una regla de límite de caracteres de Google.
Revisión humanaPáginas estratégicas, sensibles, de alto tráfico o ambiguasLa automatización debe sacar a la luz las excepciones, no ocultarlas.

Problemas comunes, desde la solución más sencilla hasta la más difícil.

La conexión a la API falla.

Primero, confirme que Ollama se está ejecutando y que http://localhost:11434es accesible. La documentación oficial de autenticación indica que no se requiere autenticación para la API local. Si su script apunta accidentalmente a https://ollama.com/api, se trata de un punto final alojado diferente y requiere autenticación.

La respuesta contiene prosa alrededor del JSON

Utilice el esquema format=SeoMeta.model_json_schema()en lugar de solicitar JSON únicamente en lenguaje natural. La salida estructurada es la capa de control adecuada para un flujo de producción.

Todos los títulos suenan igual

Inserta texto H1 específico para cada página y contenido relevante en el cuerpo del texto, elimina el ruido de navegación global y solicita explícitamente una descripción específica para cada página. Luego, realiza una comprobación de duplicados y similitudes entre páginas. La repetición suele ser un problema de entrada antes que un problema del modelo.

El modelo inventa características o estadísticas

Reduzca la entrada al texto de la página autorizada y refuerce la regla fundamental: no se permiten afirmaciones fácticas más allá del contenido proporcionado. Para páginas importantes, compare las afirmaciones generadas con los campos de origen estructurados antes de su aprobación. Si el origen es ambiguo, envíe la fila a revisión humana en lugar de pedirle repetidamente al modelo que intente adivinar.

El modelo es demasiado lento para miles de páginas.

Mide antes de cambiar la arquitectura. Registra el tiempo de generación por página, el tamaño de entrada, el nombre del modelo y la tasa de fallos. Elimina el texto irrelevante del cuerpo, procesa las secciones estables de la página y prueba un modelo local más pequeño si la calidad sigue siendo aceptable. El modelo más rápido no sirve de nada si sus metadatos generan más trabajo de revisión del que ahorran.

Opcional: utilice una integración existente al estilo OpenAI.

Si ya dispone de código escrito para un cliente compatible con OpenAI, Ollama documenta la compatibilidad parcial con la API de OpenAI en http://localhost:11434/v1/. Esto puede reducir el trabajo de migración. Para una nueva herramienta de metadatos de uso exclusivo local, el cliente nativo de Ollama para Python es más sencillo y expone ejemplos de salida estructurada directamente en la documentación de Ollama.

Cómo autocomprobar el sistema finalizado

Antes de dar por finalizada la automatización, cree un conjunto de revisión que contenga diferentes tipos de contenido: un artículo breve, una guía extensa, una página de producto, una página de categoría, una página con números y una página en cada idioma compatible. Ejecute el mismo modelo y la misma solicitud en todos ellos y, a continuación, verifique la siguiente lista de comprobación.

  • El punto final local es localhosty el modelo seleccionado es un modelo local, no un modelo etiquetado en la nube.
  • Cada respuesta se valida según el esquema sin necesidad de limpieza manual del JSON.
  • Ningún título generado se duplica en el conjunto de reseñas.
  • Todas las afirmaciones fácticas aparecen en el contenido de la página proporcionada.
  • Los metadatos utilizan el mismo idioma principal y sistema de escritura que la página.
  • El título es descriptivo y conciso, sin palabras clave repetidas.
  • La descripción resume la página específica, no el sitio web en su conjunto.
  • Las directrices de longitud interna que has establecido están etiquetadas como reglas editoriales, no como requisitos de Google.
  • Los metadatos antiguos, la propuesta generada, los indicadores de control de calidad, el nombre del modelo y la versión de la solicitud se guardan para fines de auditoría y reversión.
  • Un revisor sabe qué indicadores requieren aprobación manual antes de su publicación.

Finalmente, recuerda qué puede y qué no puede controlar la automatización. Una buena <title>descripción y meta descripción proporcionan a los motores de búsqueda señales útiles a nivel de página, pero Google puede generar enlaces de título y fragmentos a partir de otro contenido de la página. Por lo tanto, el objetivo no es forzar una representación específica de los resultados de búsqueda, sino producir metadatos precisos, distintivos y útiles a gran escala, manteniendo al mismo tiempo la validación y revisión necesarias para detectar errores antes de que lleguen a producción.

Dejar un comentario

Cómo generar automáticamente títulos y descripciones meta SEO con Local Ollama

Cómo generar automáticamente títulos y descripciones meta SEO con Local Ollama

Crea un flujo de trabajo local de Ollama que genere títulos SEO estructurados y meta descripciones de forma masiva, valide la salida y marque los resultados para su revisión humana.

Plantilla de PowerPoint gratuita para presentaciones modernas de listados inmobiliarios: un plan práctico para diapositivas listas para el vendedor.

Plantilla de PowerPoint gratuita para presentaciones modernas de listados inmobiliarios: un plan práctico para diapositivas listas para el vendedor.

Utilice esta plantilla gratuita de PowerPoint para presentaciones modernas de listados inmobiliarios para organizar precios, marketing, preparación de la propiedad, valor del agente y próximos pasos para el vendedor.

Plantilla imprimible de presupuesto para trabajos de construcción en Excel: una solución práctica para pequeños contratistas.

Plantilla imprimible de presupuesto para trabajos de construcción en Excel: una solución práctica para pequeños contratistas.

Crea una plantilla imprimible de presupuesto para trabajos de construcción en Excel con información clara sobre mano de obra, materiales, fórmulas, márgenes de beneficio, exclusiones y totales para el cliente listos para imprimir.

Cómo generar indicaciones de iluminación cinematográfica para Luma Dream Machine

Cómo generar indicaciones de iluminación cinematográfica para Luma Dream Machine

Crea indicaciones de vídeo más impactantes para Luma Dream Machine con una fórmula práctica de iluminación cinematográfica, recetas reutilizables, ejemplos y una lista de verificación para la resolución rápida de problemas.

Minimalist Investor Pitch Deck PowerPoint Template for Tech Startups: What to Include and How to Structure It

Minimalist Investor Pitch Deck PowerPoint Template for Tech Startups: What to Include and How to Structure It

Build a minimalist tech startup investor pitch deck in PowerPoint with the right slide order, clear design rules, traction metrics, and investor-ready appendix.

Cómo evitar que Excel convierta automáticamente los números en fechas.

Cómo evitar que Excel convierta automáticamente los números en fechas.

Evita que Excel convierta códigos, identificadores y fracciones en fechas. Utiliza el formato de texto, los apóstrofes, los controles de importación y las opciones actuales de Microsoft 365.

Cómo reducir el tiempo de renderizado en ComfyUI para un flujo de trabajo SDXL

Cómo reducir el tiempo de renderizado en ComfyUI para un flujo de trabajo SDXL

Acelera la renderización de ComfyUI SDXL reduciendo el trabajo de muestreo, controlando la resolución y el tamaño del lote, simplificando los nodos, utilizando el almacenamiento en caché y ajustando la VRAM y la atención de forma segura.

Plantilla gratuita de Excel para el seguimiento de gastos e ingresos de propiedades de alquiler: Libro de trabajo sencillo para propietarios.

Plantilla gratuita de Excel para el seguimiento de gastos e ingresos de propiedades de alquiler: Libro de trabajo sencillo para propietarios.

Crea en Excel un práctico sistema de seguimiento de ingresos y gastos de propiedades de alquiler con categorías claras, fórmulas, resúmenes mensuales y guías para el registro de datos que faciliten la declaración de impuestos.

Cómo configurar una base de conocimientos de IA local y privada para documentos personales

Cómo configurar una base de conocimientos de IA local y privada para documentos personales

Crea una base de conocimiento de IA local y privada con Ollama, AnythingLLM, incrustaciones locales y RAG. Aprende la configuración en cuatro pasos, las comprobaciones de privacidad, las pruebas y las copias de seguridad.

Cómo solucionar el error "Ventana de contexto excedida" en el análisis de documentos extensos sin perder información clave.

Cómo solucionar el error "Ventana de contexto excedida" en el análisis de documentos extensos sin perder información clave.

Corrija los errores de la ventana de contexto en el análisis de documentos largos recortando la entrada, dividiendo los archivos, utilizando la recuperación y verificando que la respuesta final cubra la fuente.