Como gerar automaticamente títulos e descrições meta para SEO usando o Local Ollama

Você tem 300 páginas de produtos, documentação ou blog prontas para publicação, mas a coluna de metadados ainda está em branco. Escrever cada título e meta descrição manualmente é demorado; copiar um padrão em todo o site produz resultados repetitivos; e pedir a um modelo de idioma local por um "título SEO" geralmente retorna comentários extras, afirmações inventadas ou formatação inconsistente.

Uma abordagem melhor é tratar a geração de metadados como um pequeno pipeline de dados: fornecer ao modelo apenas evidências específicas da página, exigir uma saída estruturada, validá-la no código e, em seguida, revisar as exceções antes da publicação. O Ollama é adequado para esse fluxo de trabalho porque sua API local está disponível após http://localhost:11434/apia instalação e o Ollama oferece suporte a saídas estruturadas em JSON Schema. A documentação do Ollama e do Google Search aqui referenciada foi verificada em 13 de setembro de 2026.

Por que os metadados de SEO automáticos falham?

A maioria das falhas decorre do fluxo de trabalho em torno do modelo, e não de uma única "instrução incorreta". Causas comuns incluem fornecer pouco conteúdo à página, permitir que o modelo responda em prosa livre, aplicar a mesma fórmula de palavras-chave a todos os URLs e publicar a saída sem verificações de duplicatas no nível do site.

Existe também uma ideia errada persistente sobre os limites de caracteres. O Google afirma que não há um limite de comprimento fixo para o <title>elemento `<title>` ou a meta descrição de uma página; os links de título e os trechos de código são truncados conforme necessário, geralmente de acordo com a largura do dispositivo. O Google também pode gerar um link de título ou um trecho de código diferente a partir do conteúdo da página quando seus sistemas consideram outra representação mais útil. Consulte as orientações oficiais do Google sobre links de título , trechos de código e meta descrições .

Isso significa que um script pode impor limites de tamanho editorial para manter a consistência, mas não deve rotular esses números como requisitos do Google. No exemplo abaixo, 65 caracteres para o título e 165 para a descrição são apenas diretrizes internas. Altere-os para que correspondam ao seu CMS, à sua marca, às suas necessidades de localização e ao seu processo de revisão.

Passo 1: Instale o Ollama e confirme se a API local está funcionando.

O guia de início rápido oficial do Ollama lista suporte para macOS, Windows e Linux. Após a instalação, baixe um modelo local. A documentação atual do Ollama usa frequentemente o modelo gemma3em exemplos da API, sendo, portanto, um exemplo neutro conveniente para este tutorial.

ollama pull gemma3

Em seguida, teste o endpoint local:

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

A documentação da API do Ollama afirma que a API local é servida em http://localhost:11434/api. O Ollama também afirma que o acesso local a este endereço não requer autenticação. Se o seu serviço local não estiver em execução, ollama serveo comando CLI documentado para iniciá-lo é . Evite substituir um -cloudmodelo se o seu objetivo for realmente a inferência local.

Fluxograma do terminal mostrando os comandos do Ollama para verificar a instalação, obter um modelo, listar os modelos locais e iniciar um serviço localhost.
Fluxo de trabalho no terminal para a fase de configuração: verificar o Ollama, obter um modelo local, confirmar se ele aparece na lista de modelos locais e garantir que o serviço esteja disponível no localhost. Os valores de nome e comprimento do modelo mostrados são exemplos de fluxo de trabalho e não requisitos de SEO.

Escolha um modelo de acordo com o seu hardware.

Este artigo não afirma, intencionalmente, que um modelo seja universalmente o melhor para metadados de SEO. A disponibilidade de modelos e a adequação ao hardware mudam com o tempo, e modelos maiores exigem mais memória e geralmente respondem mais lentamente. Comece com um modelo que sua máquina consiga executar sem problemas, gere um pequeno conjunto de testes e compare a precisão factual, a singularidade, a latência e a consistência antes de processar milhares de páginas.

Etapa 2: Forçar a saída estruturada em vez de analisar prosa.

Textos livres são frágeis para automação. Uma resposta como "Aqui estão três ótimas opções..." força seu programa a adivinhar onde o título real começa. A documentação de saídas estruturadas do Ollama permite passar um esquema JSON no formatcampo. A documentação também recomenda esquemas reutilizáveis ​​por meio do Pydantic em Python e observa que uma temperatura baixa, como 0, pode melhorar o determinismo.

Instale os dois pacotes Python usados ​​neste exemplo:

python -m pip install -U ollama pydantic

Em seguida, crie 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 mostrando um gerador de metadados SEO em Python com uma chamada de chat Ollama, um prompt de conteúdo da página e instruções de saída orientadas a JSON.
O gerador deve ser explícito quanto às evidências da página, aos campos de saída e às restrições editoriais. Em produção, prefira a saída estruturada em JSON-schema do Ollama e a validação no lado da aplicação em vez de depender apenas da redação do prompt.

Por que o prompt inclui o título atual e o H1?

O Google afirma que seu sistema de título e link pode considerar o título visual principal da página <title>, cabeçalhos como "H1" <h1>, og:title"H2", texto em destaque, texto âncora e outros sinais. Seu gerador local não precisa reproduzir o sistema do Google, mas fornecer o título original, o H1, a URL e um texto representativo do corpo do conteúdo ajuda a manter os metadados propostos alinhados com a página que os leitores realmente verão.

Não alimente o modelo com listas de palavras-chave irrelevantes e peça para ele "encaixá-las". O Google recomenda explicitamente títulos descritivos e concisos e alerta contra o excesso de palavras-chave e a repetição de conteúdo genérico. Para descrições, o Google afirma que a geração programática específica para cada página é apropriada para sites grandes baseados em banco de dados, desde que as descrições sejam precisas, legíveis para humanos e diversificadas.

Etapa 3: Execute uma página e valide os resultados antes de expandir.

Execute o script:

python generate_meta.py

Um resultado bem-sucedido deve ser um objeto JSON que o Pydantic possa validar. Mais importante ainda, um revisor humano deve ser capaz de compará-lo com a página de origem e responder rapidamente a quatro perguntas:

  • O título descreve esta página específica em vez do site em geral?
  • A descrição evita afirmações, datas, preços ou características que estejam ausentes do conteúdo original?
  • Esses metadados ainda fariam sentido se fossem lidos sem o corpo da página?
  • É diferente dos metadados já utilizados em páginas próximas?
Janela do PowerShell exibindo um script de metadados em Python que retorna um objeto JSON com um título e uma descrição.
Antes de iniciar um processamento em lote, teste primeiro uma página representativa e inspecione o resultado estruturado. Uma resposta JSON analisável é necessária, mas a precisão factual e a relevância em nível de página ainda exigem validação.

Adicione novas tentativas para falhas editoriais, não apenas para erros de API.

Um esquema pode restringir tipos e comprimentos de dados, mas não pode garantir que uma frase seja verdadeira ou suficientemente específica. Crie uma lógica de repetição baseada em verificações que você possa mensurar. Por exemplo, rejeite um campo vazio, um título duplicado, texto padrão proibido ou uma descrição que repita o título quase palavra por palavra. Se a página contiver afirmações regulamentadas ou de alto risco, exija revisão humana em vez de tentar automatizar a perda de confiança.

Mantenha as instruções para novas tentativas concisas. Em vez de regenerar tudo com "melhore", diga ao modelo o que falhou: "O título proposto duplica outra página. Reescreva-o usando o tópico exclusivo no H1, mantendo todas as afirmações fundamentadas no conteúdo fornecido." Isso facilita a auditoria das falhas.

Etapa 4: Converter as páginas em lote para CSV para revisão e publicação.

Assim que o teste de página única estiver confiável, armazene suas entradas em um arquivo CSV com colunas como url, source_title, h1, e content. O campo de conteúdo deve conter o texto limpo da página, não menus de navegação, avisos de cookies ou milhares de links de rodapé irrelevantes.

Adicione essa lógica de lote abaixo da função geradora ou coloque-a em um 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)

O arquivo CSV gerado pode ser visualizado no Excel, LibreOffice, em uma ferramenta de importação de banco de dados ou no seu fluxo de trabalho de CMS. Não sobrescreva automaticamente os metadados ativos na primeira execução. Mantenha o título e a descrição originais junto com a proposta gerada para que os revisores possam compará-los e para que o processo de reversão seja simples.

Visualização em planilha com os títulos dos artigos em uma coluna e os títulos e descrições meta SEO gerados em colunas de avaliação adjacentes.
Uma fila de revisão em planilha facilita a auditoria da geração em massa: retém o identificador da página de origem, o título gerado, a descrição gerada, os comprimentos e os indicadores de controle de qualidade antes de publicar as alterações.

Tornar o processo de lote mais seguro

VerificarO que sinalizarPor que isso importa
Validação de esquemaCampos ausentes ou inválidosImpede que dados malformados entrem no CMS.
Verificação de título duplicadoMesmo título normalizado em duas URLsAjuda a manter as páginas distinguíveis.
Verificação de idiomaA linguagem dos metadados difere da linguagem da página.O Google recomenda que a cor e o sistema de escrita sejam os mesmos do idioma principal da página.
Verificação de evidênciasNúmeros, preços, datas, marcas ou garantias ausentes da fonte.Reduz as alegações alucinatórias.
Verificação de texto padrãoFrases longas e repetidas em todo o siteO Google desaconselha o uso de títulos padronizados repetidos.
Verificação do tamanho editorialFora do alcance da sua casa escolhidaMantém a consistência da saída do CMS; esta não é uma regra de limite de caracteres do Google.
Revisão humanaPáginas estratégicas, sensíveis, com alto tráfego ou ambíguasA automação deve revelar as exceções, não ocultá-las.

Problemas comuns, da solução mais fácil à mais difícil.

A conexão com a API falhou.

Primeiro, confirme se o Ollama está em execução e http://localhost:11434acessível. A documentação oficial de autenticação afirma que a autenticação não é necessária para a API local. Se o seu script estiver apontando acidentalmente para `http:// https://ollama.com/apilocalhost:8080`, trata-se de um endpoint hospedado diferente e que requer autenticação.

A resposta contém um texto explicativo sobre o JSON.

Utilize o esquema format=SeoMeta.model_json_schema()em vez de solicitar apenas JSON em linguagem natural. A saída estruturada é a camada de controle adequada para um pipeline de produção.

Todos os títulos soam iguais.

Insira um texto H1 específico para cada página e conteúdo relevante no corpo do texto, remova ruídos da navegação global e solicite explicitamente uma descrição específica para cada página. Em seguida, execute uma verificação de duplicidades e similaridades entre páginas. A repetição geralmente é um problema de entrada antes de ser um problema de modelagem.

O modelo inventa características ou estatísticas.

Reduza a entrada ao texto oficial da página e reforce a regra básica: nenhuma afirmação factual além do conteúdo fornecido. Para páginas importantes, compare as afirmações geradas com os campos estruturados da fonte antes da aprovação. Se a própria fonte for ambígua, envie a linha para revisão humana em vez de solicitar repetidamente que o modelo tente adivinhar.

O modelo é muito lento para milhares de páginas.

Meça antes de alterar a arquitetura. Registre o tempo de geração por página, o tamanho da entrada, o nome do modelo e a taxa de falhas. Trunque o texto irrelevante, processe as seções estáveis ​​da página e teste um modelo local menor se a qualidade permanecer aceitável. O modelo mais rápido não é útil se seus metadados criarem mais trabalho de revisão do que economizam.

Opcional: utilize uma integração existente no estilo OpenAI.

Se você já possui código escrito para um cliente compatível com OpenAI, a documentação da Ollama sobre compatibilidade parcial com a API OpenAI pode ser encontrada aqui http://localhost:11434/v1/. Isso pode reduzir o trabalho de migração. Para uma nova ferramenta de metadados somente local, o cliente nativo da Ollama em Python é mais simples e expõe exemplos de saída estruturada diretamente na documentação da Ollama.

Como verificar o sistema finalizado por conta própria

Antes de considerar a automação concluída, crie um conjunto de revisões contendo diferentes tipos de conteúdo: um artigo curto, um guia extenso, uma página de produto, uma página de categoria, uma página com números e uma página em cada idioma compatível. Execute o mesmo modelo e prompt em todos os conjuntos de revisões e, em seguida, verifique a seguinte lista de verificação.

  • O endpoint local é localhoste o modelo selecionado é um modelo local, não um modelo com tags de nuvem.
  • Cada resposta é validada em relação ao esquema sem necessidade de limpeza manual do JSON.
  • Nenhum título gerado é duplicado em todo o conjunto de avaliações.
  • Todas as afirmações factuais constam do conteúdo da página fornecida.
  • Os metadados utilizam o mesmo idioma principal e sistema de escrita da página.
  • O título é descritivo e conciso, sem palavras-chave repetidas.
  • A descrição resume a página específica, e não o site como um todo.
  • As suas diretrizes internas de comprimento são rotuladas como regras editoriais, não como requisitos do Google.
  • Os metadados antigos, a proposta gerada, os indicadores de controle de qualidade, o nome do modelo e a versão do prompt são salvos para auditoria e reversão.
  • Um revisor sabe quais sinalizações exigem aprovação manual antes da publicação.

Por fim, lembre-se do que a automação pode e não pode controlar. Uma boa <title>descrição e meta descrição fornecem aos mecanismos de busca sinais úteis em nível de página, mas o Google pode gerar links de título e trechos a partir de outros conteúdos da página. O objetivo, portanto, não é forçar uma renderização específica nos resultados de busca. O objetivo é produzir metadados precisos, distintos e úteis em escala, preservando validação e revisão suficientes para detectar erros antes que cheguem à produção.

Deixar um comentário

Como gerar automaticamente títulos e descrições meta para SEO usando o Local Ollama

Como gerar automaticamente títulos e descrições meta para SEO usando o Local Ollama

Crie um fluxo de trabalho local no Ollama que gere títulos SEO estruturados e meta descrições em massa, valide a saída e sinalize os resultados para revisão humana.

Modern Real Estate Listing Presentation PowerPoint Template Free: A Practical Seller-Ready Slide Blueprint

Modern Real Estate Listing Presentation PowerPoint Template Free: A Practical Seller-Ready Slide Blueprint

Use this free modern real estate listing presentation PowerPoint blueprint to organize pricing, marketing, property prep, agent value, and seller next steps.

Printable Construction Job Estimate Template for Excel: A Practical Setup for Small Contractors

Printable Construction Job Estimate Template for Excel: A Practical Setup for Small Contractors

Build a printable construction job estimate template in Excel with clear labor, materials, formulas, markup, exclusions, and print-ready client totals.

How to Generate Cinematic Lighting Prompts for Luma Dream Machine

How to Generate Cinematic Lighting Prompts for Luma Dream Machine

Build stronger Luma Dream Machine video prompts with a practical cinematic lighting formula, reusable recipes, examples, and a fast troubleshooting checklist.

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.

How to Stop Excel from Automatically Changing Numbers to Dates

How to Stop Excel from Automatically Changing Numbers to Dates

Stop Excel from turning codes, IDs, and fractions into dates. Use Text format, apostrophes, import controls, and current Microsoft 365 options.

Como reduzir o tempo de renderização no ComfyUI para um fluxo de trabalho SDXL

Como reduzir o tempo de renderização no ComfyUI para um fluxo de trabalho SDXL

Acelere as renderizações do ComfyUI SDXL reduzindo o trabalho de amostragem, controlando a resolução e o tamanho do lote, simplificando os nós, usando cache e ajustando a VRAM e a atenção de forma segura.

Planilha gratuita em Excel para controle de despesas e receitas de imóveis alugados: Guia simples para proprietários

Planilha gratuita em Excel para controle de despesas e receitas de imóveis alugados: Guia simples para proprietários

Crie uma planilha prática de controle de receitas e despesas de imóveis para aluguel no Excel, com categorias claras, fórmulas, resumos mensais e orientações para a declaração de imposto de renda.

How to Set Up a Private Local AI Knowledge Base for Personal Documents

How to Set Up a Private Local AI Knowledge Base for Personal Documents

Build a private local AI knowledge base with Ollama, AnythingLLM, local embeddings, and RAG. Learn the four-step setup, privacy checks, testing, and backups.

Como corrigir o erro “Janela de contexto excedida” na análise de documentos longos sem perder evidências importantes

Como corrigir o erro “Janela de contexto excedida” na análise de documentos longos sem perder evidências importantes

Corrija erros de janela de contexto na análise de documentos longos, truncando a entrada, dividindo arquivos, usando recuperação de informações e verificando se a resposta final abrange a fonte.