ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo crear un panel de control AEO para agencias con una API de búsqueda
Tutorial

Cómo crear un panel de control AEO para agencias con una API de búsqueda

Cree un panel de control AEO orientado al cliente que realice un seguimiento de las citas de descripción general de IA, la presencia del motor de respuestas y el porcentaje de citas entre varios clientes.

Obtener clave API gratisDocumentacion API

Answer Engine Optimization (AEO) es una línea de servicios en crecimiento para las agencias de SEO, pero la mayoría de las herramientas de seguimiento de clasificación no rastrean bien las citas de AI Overview ni cobran precios superiores por ello. La creación de un panel de control AEO personalizado con una API de búsqueda brinda a las agencias control total sobre los datos, las vistas por cliente y mantiene los costos predecibles en $0,005 por verificación de palabra clave. Este tutorial crea un panel de control AEO multicliente que rastrea la presencia de citas, el porcentaje de voz y los datos de tendencias, y luego genera JSON listo para cualquier marco de interfaz.

Requisitos previos

  • Python 3.9+ instalado
  • solicita biblioteca instalada
  • Una clave API de Scavio de scavio.dev
  • Listas de palabras clave del cliente para monitorear

Guia paso a paso

Paso 1: Definir la estructura de datos multicliente

Establezca una configuración que asigne a cada cliente su dominio y palabras clave de destino. Esta es la entrada al tablero.

Python
clients = {
    'client_a': {
        'domain': 'clienta.com',
        'name': 'Client A - SaaS CRM',
        'keywords': [
            'best crm for small business',
            'crm software comparison 2026',
            'what is a crm system',
            'crm vs spreadsheet'
        ]
    },
    'client_b': {
        'domain': 'clientb.io',
        'name': 'Client B - Project Management',
        'keywords': [
            'best project management tools 2026',
            'how to manage remote teams',
            'project management software comparison',
            'agile vs waterfall 2026'
        ]
    }
}

total_keywords = sum(len(c['keywords']) for c in clients.values())
print(f'{len(clients)} clients, {total_keywords} total keywords')
print(f'Monthly cost (daily checks): ${total_keywords * 30 * 0.005:.2f}')

Paso 2: Construir la función de recopilación de datos OEA

Para cada palabra clave, verifique la presencia de SERP para la descripción general de AI y extraiga datos de citas. Registre si se cita el dominio del cliente.

Python
import requests, os, time

API_KEY = os.environ['SCAVIO_API_KEY']

def collect_aeo_data(keyword: str, client_domain: str) -> dict:
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
        json={'query': keyword, 'country_code': 'us'})
    data = resp.json()
    aio = data.get('ai_overview', {})
    has_overview = bool(aio and aio.get('text'))
    citations = aio.get('citations', []) if has_overview else []
    cited_domains = [c.get('domain', '') for c in citations]
    # Also check organic position
    organic_position = None
    for r in data.get('organic_results', []):
        if client_domain in r.get('link', ''):
            organic_position = r['position']
            break
    return {
        'keyword': keyword,
        'has_ai_overview': has_overview,
        'total_citations': len(citations),
        'client_cited': any(client_domain in d for d in cited_domains),
        'citation_position': next(
            (i + 1 for i, d in enumerate(cited_domains) if client_domain in d), None),
        'organic_position': organic_position,
        'competitor_domains': [d for d in cited_domains if client_domain not in d]
    }

Paso 3: Generar datos de panel por cliente

Agregue datos a nivel de palabras clave en métricas a nivel de cliente: tasa de citas, posición promedio de citas, superposición orgánica y dominios de los principales competidores.

Python
from collections import Counter

def generate_client_dashboard(client_id: str, config: dict) -> dict:
    domain = config['domain']
    results = []
    competitor_counter = Counter()
    for kw in config['keywords']:
        data = collect_aeo_data(kw, domain)
        results.append(data)
        for d in data['competitor_domains']:
            competitor_counter[d] += 1
        time.sleep(0.3)
    total = len(results)
    with_aio = sum(1 for r in results if r['has_ai_overview'])
    cited = sum(1 for r in results if r['client_cited'])
    avg_cite_pos = 0
    cite_positions = [r['citation_position'] for r in results if r['citation_position']]
    if cite_positions:
        avg_cite_pos = sum(cite_positions) / len(cite_positions)
    return {
        'client_id': client_id,
        'client_name': config['name'],
        'domain': domain,
        'total_keywords': total,
        'keywords_with_aio': with_aio,
        'aio_rate': round(with_aio / max(total, 1) * 100, 1),
        'citations': cited,
        'citation_rate': round(cited / max(with_aio, 1) * 100, 1),
        'avg_citation_position': round(avg_cite_pos, 1),
        'top_competitors': competitor_counter.most_common(5),
        'keyword_details': results
    }

Paso 4: Cree el resultado completo del panel de la agencia

Ejecute el panel para todos los clientes y genere una estructura JSON lista para una interfaz. Incluir seguimiento de costos por cliente.

Python
import json
from datetime import date

def build_agency_dashboard(clients: dict) -> dict:
    dashboard = {
        'generated': date.today().isoformat(),
        'clients': [],
        'summary': {}
    }
    total_credits = 0
    for client_id, config in clients.items():
        print(f'Processing {config["name"]}...')
        client_data = generate_client_dashboard(client_id, config)
        dashboard['clients'].append(client_data)
        total_credits += len(config['keywords'])
    # Agency summary
    all_clients = dashboard['clients']
    dashboard['summary'] = {
        'total_clients': len(all_clients),
        'total_keywords': sum(c['total_keywords'] for c in all_clients),
        'avg_citation_rate': round(
            sum(c['citation_rate'] for c in all_clients) / max(len(all_clients), 1), 1),
        'total_credits': total_credits,
        'cost': f'${total_credits * 0.005:.2f}'
    }
    with open(f'aeo_dashboard_{date.today()}.json', 'w') as f:
        json.dump(dashboard, f, indent=2)
    return dashboard

dashboard = build_agency_dashboard(clients)
for c in dashboard['clients']:
    print(f'{c["client_name"]}: {c["citation_rate"]}% citation rate, {c["citations"]}/{c["keywords_with_aio"]} cited')

Ejemplo en Python

Python
import os, requests, time, json
from datetime import date
from collections import Counter

API_KEY = os.environ['SCAVIO_API_KEY']

def check_aeo(keyword, domain):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
        json={'query': keyword, 'country_code': 'us'})
    aio = resp.json().get('ai_overview', {})
    citations = aio.get('citations', []) if aio.get('text') else []
    domains = [c.get('domain', '') for c in citations]
    return {'keyword': keyword, 'has_aio': bool(aio.get('text')),
            'cited': any(domain in d for d in domains), 'domains': domains}

def client_report(name, domain, keywords):
    results = [check_aeo(kw, domain) for kw in keywords]
    cited = sum(1 for r in results if r['cited'])
    with_aio = sum(1 for r in results if r['has_aio'])
    print(f'{name}: {cited}/{with_aio} cited ({len(keywords)} keywords, ${len(keywords)*0.005:.3f})')

client_report('Demo Client', 'example.com', ['best crm 2026', 'crm comparison'])

Ejemplo en JavaScript

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;

async function checkAeo(keyword, domain) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: keyword, country_code: 'us' })
  });
  const data = await resp.json();
  const aio = data.ai_overview || {};
  const domains = (aio.citations || []).map(c => c.domain || '');
  return { keyword, hasAio: Boolean(aio.text), cited: domains.some(d => d.includes(domain)) };
}

async function main() {
  const keywords = ['best crm 2026', 'crm comparison'];
  let cited = 0;
  for (const kw of keywords) {
    const r = await checkAeo(kw, 'example.com');
    if (r.cited) cited++;
    console.log(`${r.hasAio ? '+' : '-'}AIO ${r.cited ? '+CITED' : ''} ${kw}`);
  }
  console.log(`Citation rate: ${(cited/keywords.length*100).toFixed(0)}%`);
}

main().catch(console.error);

Salida esperada

JSON
2 clients, 8 total keywords
Monthly cost (daily checks): $1.20

Processing Client A - SaaS CRM...
Processing Client B - Project Management...

Client A - SaaS CRM: 50.0% citation rate, 1/2 cited
Client B - Project Management: 33.3% citation rate, 1/3 cited

Agency summary:
  Total clients: 2
  Total keywords: 8
  Avg citation rate: 41.7%
  Cost: $0.04

Tutoriales relacionados

  • Cómo realizar un seguimiento de las citas de descripción general de la IA con un presupuesto limitado
  • Cómo realizar comprobaciones de clasificación SEO por lotes durante la noche con una API
  • Cómo crear un panel de operaciones con datos de búsqueda

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.9+ instalado. solicita biblioteca instalada. Una clave API de Scavio de scavio.dev. Listas de palabras clave del cliente para monitorear. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Las mejores API de seguimiento de OEA con un presupuesto limitado en 2026

Read more
Best Of

Las mejores API de búsqueda después de los cambios en el modo AI de Google I/O 2026

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Glossary

Comparación gratuita de niveles de API de búsqueda

Read more
Comparison

Search APIs (Scavio, Tavily, SerpAPI) vs Headless Browser (Playwright, Puppeteer, Browserbase)

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more

Empieza a construir

Cree un panel de control AEO orientado al cliente que realice un seguimiento de las citas de descripción general de IA, la presencia del motor de respuestas y el porcentaje de citas entre varios clientes.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad