Deje de escribir prompts. Empiece a diseñar sistemas.
En 2023, lo último en SEO era el «prompt engineering»: aprender las palabras mágicas para que ChatGPT escribiera un artículo de blog aceptable. En 2026, el prompt engineering es una habilidad de uso corriente. La nueva frontera es la ingeniería de flujos de trabajo SEO agénticos.
Una sola sesión con un LLM es lineal y limitada. Alucina, pierde el contexto y se atasca en tareas complejas de varios pasos. Un flujo de trabajo SEO agéntico es un sistema de agentes de IA especializados que encadenan tareas de forma autónoma.
- El agente A (el investigador) navega por la web en vivo para encontrar datos.
- El agente B (el redactor) escribe el contenido basándose únicamente en esos datos.
- El agente C (el editor) revisa el borrador con criterio, según unas pautas de marca concretas.
En kōdōkalabs no escribimos el contenido a mano. Diseñamos estas cadenas agénticas. Con este enfoque podemos escalar la «ganancia de información» sin sacrificar calidad.
Esta guía no es un texto teórico, sino un tutorial técnico. Le mostraremos la lógica (y el código en Python) necesaria para construir su primera cadena SEO de 3 agentes con LangChain.
Parte 1: por qué los flujos SEO agénticos superan al SEO «de chat»
Antes de escribir código conviene entender la arquitectura. ¿Por qué es mejor que pegar un prompt en Claude?
1. La disciplina de la «ventana de contexto»
Cuando le pide a un único modelo «Investiga X y luego escribe Y», contamina su ventana de contexto. El modelo intenta retener a la vez los datos de la investigación y las instrucciones de estilo, y el rendimiento suele empeorar en ambas cosas. En una cadena agéntica, el investigador pasa al redactor solo los datos limpios y verificados. El redactor nunca ve los resultados de búsqueda sin depurar, solo la información ya estructurada. Esta «separación de responsabilidades» da como resultado un texto de mayor calidad.
2. Barreras contra las alucinaciones
Un modelo aislado quiere complacerle, aunque tenga que inventarse los datos. Si inserta un agente editor cuya única misión es contrastar las afirmaciones con los datos de partida, crea un control adversarial que detecta las alucinaciones antes de que una persona vea siquiera el borrador.
3. Lógica de bucle (el mecanismo de «autocorrección»)
Si el agente editor rechaza el borrador, se puede programar un «bucle» que lo devuelva al redactor con comentarios concretos («Demasiado pasivo, reescribe la sección 2»). El sistema itera hasta alcanzar el umbral de calidad.
Parte 2: el stack
Para construirlo necesita un stack moderno de SEO Ops. Usaremos:
- Python 3.10+: el lenguaje de la ingeniería de IA.
- LangChain: el framework de orquestación que conecta los LLM.
- API de OpenAI (GPT-4o): el motor de razonamiento.
- API de Tavily o Serper.dev: la herramienta (en inglés) de búsqueda (da al investigador acceso en vivo a la web).
Requisitos previos: conocimientos básicos de Python y de gestión de claves de API.
Parte 3: la arquitectura
Vamos a construir una cadena secuencial:
[Tema del usuario] -> [Agente investigador] -> {Informe de investigación} -> [Agente redactor] -> {Primer borrador} -> [Agente editor] -> {Manuscrito final}
Paso 1: preparar el entorno
Primero, instale las bibliotecas necesarias.
pip install langchain langchain-openai tavily-python
Ahora inicialicemos en Python el LLM y la herramienta de búsqueda.
import os
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
# Configuración
os.environ["OPENAI_API_KEY"] = "sk-..." # Su clave de OpenAI
os.environ["TAVILY_API_KEY"] = "tvly-..." # Su clave de búsqueda de Tavily
# Inicializar el LLM (motor de razonamiento)
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# Inicializar la herramienta de búsqueda
search_tool = TavilySearchResults(max_results=5)
Paso 2: construir el agente investigador
El objetivo de este agente no es escribir. Su objetivo es encontrar «ganancia de información»: estadísticas, citas y datos recientes.
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
# Definir el perfil del investigador
researcher_prompt = ChatPromptTemplate.from_template(
"""
You are a Senior SEO Researcher. Your goal is to find unique, high-value data points on the topic: {topic}.
Do NOT write a blog post.
Do NOT summarize generic knowledge.
Raw search results:
{search_data}
1. Use the search results above to find recent statistics, expert quotes, and contrary opinions from 2024-2025.
2. Compile a "Research Brief" containing the top 5 distinct facts with their source URLs.
3. Focus on data that provides "Information Gain" (stuff not found in a generic AI answer).
Output Format:
- Fact 1: [Detail] (Source: URL)
- Fact 2: [Detail] (Source: URL)
...
"""
)
# En un agente real de LangChain enlazaríamos aquí la herramienta de búsqueda.
# Para simplificar el tutorial, damos por hecho que los 'search_results' llegan mediante un bucle de llamadas a la herramienta.
# Esta cadena toma los resultados de búsqueda en bruto y sintetiza el informe.
researcher_chain = researcher_prompt | llm | StrOutputParser()
Paso 3: construir el agente redactor
Este agente recibe el informe de investigación (no el prompt original) y escribe el contenido. Así se garantiza que se apoya solo en los datos verificados que halló el agente anterior.
drafter_prompt = ChatPromptTemplate.from_template(
"""
You are a Technical Content Writer.
Task: Write a blog post section based ONLY on the following Research Brief.
Research Brief:
{research_brief}
Guidelines:
1. Use Markdown formatting (H2, H3, bullet points).
2. Adopt a "Bottom Line Up Front" (BLUF) style. Direct answers first.
3. Cite the sources provided in the brief using Markdown links.
4. Do not invent new facts not present in the brief.
5. Maintain a professional, authoritative tone (E-E-A-T).
Write the content now.
"""
)
drafter_chain = drafter_prompt | llm | StrOutputParser()
Paso 4: construir el agente editor (el crítico)
Es el agente más decisivo para la «calidad kōdōkalabs». Revisa el borrador con ojo crítico.
editor_prompt = ChatPromptTemplate.from_template(
"""
You are a Ruthless Editor in Chief.
Review the following draft:
{draft}
Check for:
1. Fluff words ("In today's fast-paced world", "Unlock the potential").
2. Passive voice.
3. Structural issues (Are there clear H2s?).
If the draft is good, output the finalized version.
If it has issues, rewrite the specific sections to be punchier and more direct.
"""
)
editor_chain = editor_prompt | llm | StrOutputParser()
Parte 4: orquestar la cadena
Ahora lo unimos todo en una única función ejecutable. En un entorno de producción usaría LangGraph para una gestión del estado más compleja, pero para este tutorial basta con una lógica secuencial sencilla.
def run_seo_agent_chain(topic):
print(f"--- Starting Agentic SEO Workflow for: {topic} ---")
# 1. Fase de investigación
print(">> Agent 1: Researching...")
# (Simulamos el wrapper de la llamada a la herramienta por brevedad)
raw_search_results = search_tool.invoke(topic)
research_brief = researcher_chain.invoke({"topic": topic, "search_data": raw_search_results})
print(f" Research Brief Generated ({len(research_brief)} chars)")
# 2. Fase de redacción
print(">> Agent 2: Drafting...")
initial_draft = drafter_chain.invoke({"research_brief": research_brief})
print(f" Draft Generated ({len(initial_draft)} chars)")
# 3. Fase de edición
print(">> Agent 3: Editing...")
final_post = editor_chain.invoke({"draft": initial_draft})
print("--- Workflow Complete ---")
return final_post
# Ejecutar
# final_content = run_seo_agent_chain("Programmatic SEO trends 2025")
# print(final_content)
Parte 5: del código a la estrategia
¿Para qué tanto esfuerzo? ¿Por qué no usar simplemente ChatGPT Plus?
Porque la escalabilidad exige previsibilidad.
Si ejecuta este script con 50 palabras clave distintas, obtiene 50 borradores que siguen exactamente la misma lógica estructural, con citas verificadas y fieles a la voz editorial de su marca.
Optimizaciones avanzadas (la «salsa secreta de kōdōkalabs»)
Una vez dominada esta cadena básica, así la ampliamos para clientes enterprise:
- El agente de «enlazado interno»: entre la redacción y la edición insertamos un paso en el que un agente consulta una base de datos vectorial (Pinecone) con el contenido ya existente del cliente y localiza 5 enlaces internos relevantes que incorporar.
- El agente de «schema»: un paso final que toma el contenido aprobado y genera un schema JSON-LD de FAQ válido para añadirlo al pie de la página.
- Human-in-the-Loop (HITL): usamos LangSmith para pausar la cadena tras la fase de «redacción». Un piloto humano revisa el informe, lo aprueba y solo entonces deja que continúe el agente editor.
Conclusión: diseñar su foso defensivo
Producir texto no tiene ninguna barrera de entrada. Producir contenido de alta autoridad, verificado y con una estructura impecable a escala sí la tiene, y alta. Exige ingeniería.
Si usted es CMO o responsable de SEO, su trabajo ya no consiste solo en dirigir a redactores, sino en gestionar la arquitectura de su cadena de inteligencia.
Esto es lo que construimos en kōdōkalabs. No le vendemos el pescado: construimos el barco de pesca autónomo.
