🎯 Andavant Radar CLI — Skill Reference Agent-Only

Andavant Radar CLI

Black-box agent-only skill · GEO visibility audits · LLM mention tracking

Operar Radar CLI como black-box agent-only: discovery por versión con --help, lectura de envelope JSON canónico, y ejecución segura de setup/studies/runs/prompts/analytics sin asumir comandos legacy.

Reglas base

  1. No inventes comandos: descubre todo con radar --help y radar <cmd> --help.
  2. Tratar la salida JSON como contrato: ok, data, warnings, error, meta.
  3. Si ok=false, inspecciona error.code, error.message, error.details y error.suggestions antes de continuar.
  4. Si error.code=INTERACTION_REQUIRED, pedir aprobación explícita y reintentar con el flag requerido (ej. --approve).
  5. En ejecución de runs, mantener secuencia segura: preflight → estimate → launch --approve → progress.
  6. En analytics y prompts, usar solo subcomandos y flags visibles en la versión instalada.
  7. Mantener comandos agnósticos a marca/proyecto (todo parametrizado).

Principios operativos

  1. Discovery primero, ejecución después: no reutilizar memoria de otra máquina/versión.
  2. Black-box real: no depender de código interno para decidir comandos.
  3. Idempotencia práctica: antes de crear, listar/validar para evitar duplicados y errores de IDs.
  4. Trazabilidad: reportar comando exacto, parámetros, resultado y siguiente acción técnica.
  5. Escalar por evidencia: cuando falle parsing/HTTP, capturar salida con --debug y cualquier meta disponible.

Conceptos clave

ConceptoDescripción
GEOGenerative Engine Optimization. Auditoría de visibilidad orgánica en LLMs. Los prompts deben ser neutrales (no mencionar la marca) para medir menciones espontáneas.
ProyectoContenedor principal del análisis (marca/producto/tema).
EntidadMarca/producto/destino a rastrear.
FunnelEtapa del customer journey: awareness / consideration / decision.
Product lineLínea de producto/servicio.
PersonaPerfil de usuario. Si no se especifica, usar persona neutral.
StudyAgrupa personas/prompts para un objetivo de medición.
RunEjecución concreta de un estudio o set de prompts.

Flujo recomendado

  1. Bootstrap de proyecto: entidades, atributos, funnels, product-lines, personas.
  2. studies preflightruns preflightruns estimateruns launch --approveruns progress.
  3. Analytics con query / schema / export.

⚠️ Métricas cuantitativas vs verbatims

NUNCA uses archivos de verbatims para contar menciones o medir sentiment. Los verbatims son samples cualitativos (~50–100 ejemplos). Los KPIs son datos agregados completos.
Pregunta✅ Archivo CORRECTO❌ Incorrecto
¿Cuántas menciones negativas?kpis/kpis_by_brand.csvavg_sentiment_scoreverbatims_negative.csv
¿Sentiment por tema?product_lines/kpis_by_product_line.csvContar líneas de verbatims
¿Menciones totales?kpis/kpis_by_brand.csvtotal_mentionsgrep en verbatims
¿Desglose por persona?personas/personas_metrics.csvverbatims_by_persona.csv

Escala de sentiment

entity_mentions
1 – 5
1=muy neg · 3=neutral · 5=muy pos
entity_metrics
-1 → +1
normalizado · 0=neutral

Queries SQL de referencia

Menciones por marca (negativas / positivas)

radar analytics query --sql "SELECT 
  entity_identifier as brand,
  SUM(CASE WHEN sentiment <= 2 THEN 1 ELSE 0 END) as negative,
  SUM(CASE WHEN sentiment = 3  THEN 1 ELSE 0 END) as neutral,
  SUM(CASE WHEN sentiment >= 4 THEN 1 ELSE 0 END) as positive,
  COUNT(*) as total
FROM entity_mentions 
WHERE project_id = '<PROJECT_ID>'
  AND entity_identifier IN ('marca1','marca2')
GROUP BY brand
ORDER BY total DESC"
entity_identifier vs entity_name: Usa siempre entity_identifier (slug/alias que agrupa variaciones) para queries agregadas. entity_name es el nombre literal detectado.

Ver aliases detectados por marca

SELECT entity_identifier, entity_name, count() as cnt
FROM entity_mentions
WHERE project_id = '<PROJECT_ID>' AND entity_identifier = 'marca'
GROUP BY entity_identifier, entity_name
ORDER BY cnt DESC

Filtrar por prompt tags

Los prompts tienen tags estructurados:

product:resfriado persona:medico-es funnel:decision funnel:awareness

-- Filtrar por tag específico
SELECT entity_identifier, avg(sentiment) as avg_sent
FROM entity_mentions
WHERE project_id = '<PROJECT_ID>'
  AND has(prompt_tags, 'product:resfriado')
  AND entity_identifier IN ('cinfa','normon')
GROUP BY entity_identifier

-- Extraer valor de un tag
SELECT arrayFilter(x -> x LIKE 'persona:%', prompt_tags)[1] as persona,
       count() as cnt
FROM entity_mentions
WHERE project_id = '<PROJECT_ID>'
GROUP BY persona

Fuentes citadas (response_sources)

Gemini: source_domain es vertexaisearch.cloud.google.com — el dominio real está en source_title. Usar CASE para normalizar.
-- Top dominios citados (corregido para Gemini)
SELECT 
  CASE 
    WHEN source_domain = 'vertexaisearch.cloud.google.com' THEN source_title
    ELSE source_domain
  END as dominio_real,
  count() as citations
FROM response_sources
WHERE project_id = '<PROJECT_ID>'
GROUP BY dominio_real
ORDER BY citations DESC LIMIT 25

-- Fuentes cuando se menciona la marca
SELECT source_domain, count() as cnt
FROM response_sources
WHERE project_id = '<PROJECT_ID>'
  AND response_id IN (
    SELECT DISTINCT response_id FROM entity_mentions
    WHERE project_id = '<PROJECT_ID>' AND entity_identifier = 'cinfa'
  )
GROUP BY source_domain
ORDER BY cnt DESC

Analytics Pack

Exporta todas las tablas de analytics de un run a CSVs organizados.

radar analytics pack \
  --run-id <uuid> \
  --out ./data \
  --target-brand <slug> \
  --official-domain-like "%<dominio>%"

Estructura generada

output/
├── attributes/       # Atributos por marca
├── cooccurrence/     # Co-apariciones entre marcas
├── destinations/     # Métricas por destino
├── funnels/          # Métricas por etapa del funnel
├── kpis/             # BIS, SOV, sentiment por marca
├── origins/          # Métricas por origen
├── personas/         # Métricas por persona
├── product_lines/    # Métricas por línea de producto
├── sources/          # Fuentes citadas
├── verbatims/        # Respuestas textuales
└── ANALYTICS_REFERENCE.md

Opciones principales

FlagDescripción
--run-idID del run a exportar
--project-idAlternativo a run-id
--outCarpeta de salida
--target-brandSlug de la marca objetivo
--official-domain-likePatrón para dominios oficiales (ej: %cinfa%)
--dry-runPrevisualizar sin ejecutar

S.A.M. — Semantic Alignment Machine

S.A.M. es el flujo de validación semántica de contenido: dado un texto, encuentra los prompts del estudio más similares por embeddings ("RAG inverso"). Permite medir cobertura, detectar gaps y predecir ganancia de afinidad antes de publicar.

Comando base

radar prompts recommend \
  --project <project_id> \
  --text "<texto a validar>" \
  --limit 20

Flags disponibles

FlagDescripción
--projectID del proyecto (obligatorio)
--textTexto de input (repetible)
--limitMáx. recomendaciones (1–50, default 5)
--min-similarityThreshold mínimo (0–1)
--personaFiltrar por persona ID
--funnelFiltrar por funnel ID
--product-lineFiltrar por product-line ID
--entityFiltrar por entity ID
--tagsFiltrar por tags (comma-separated)
--tags-matchany (default) o all

Métricas S.A.M.

SimilarityInterpretación
> 0.85Bien cubierto — el contenido responde directamente
0.70 – 0.85Cobertura parcial — responde tangencialmente
0.50 – 0.70Cobertura débil — toca el tema pero no responde
< 0.50Sin cobertura — no relevante
MétricaCálculo
Matching Scoreavg(similarity) de los top-N prompts relevantes
Coberturacount(similarity > 0.70)
GapsPrompts del cluster esperado con similarity < 0.50
RuidoPrompts irrelevantes con similarity > 0.70 (contenido ambiguo)
ΔAfinidadMatchingScore_nuevo - MatchingScore_anterior (tras edición)

Flujo S.A.M. paso a paso

  1. Extraer texto limpio de la pieza (sin HTML/markdown).
  2. Ejecutar prompts recommend con --limit 20.
  3. Evaluar cobertura: contar prompts bien cubiertos, gaps y ruido.
  4. Filtrar por segmento (opcional): --persona, --funnel, --product-line.
  5. Optimizar: modificar contenido para cerrar gaps, re-ejecutar, comparar ΔAfinidad.
  6. Heatmap (opcional): fragmentar texto en párrafos, pasar cada uno por separado.

Integración con flujo GEO

  1. GeoRadar → auditoría (qué dicen los LLMs)
  2. Prompt Atlas → dataset (qué preguntan los usuarios)
  3. S.A.M. → validación (¿el contenido responde a esos prompts?)
  4. Publicar solo contenido con Matching Score > threshold
  5. Re-run GeoRadar para medir impacto post-publicación
Requisitos: Radar CLI ≥ 0.1.7 · Proyecto con prompts generados y embeddings indexados. Si da 404: los embeddings del proyecto no están listos aún.

Referencias (carga recomendada)

Core

#ArchivoContenido
1json-contract.mdEnvelope JSON canónico y errores estructurados
2command-surface.mdSuperficie real por versión (discovery con --help)
3execution-workflows.mdSecuencias E2E (bootstrap, study/run, analytics)
4geo-process.mdProceso GEO end-to-end y reglas de prompts neutrales
5idempotency-db.mdConstraints de DB que previenen duplicados

Operativo

#ArchivoContenido
6prompt-generation-playbook.mdSesiones de generación, filtros, volumen y planes
7personas-funnels-product-lines-playbook.mdCrear/actualizar scope de segmentación
8prompt-tags.mdUsar tags solo desde lo observable en CLI

Analytics

#ArchivoContenido
9analytics-playbook.mdquery/schema/export, tablas y variaciones
10analytics-deep-dive.mdSQL avanzado (métricas, fuentes, posición, verbatims)
11entity-metrics-system.mdFórmulas BIS, sentiment, position decay
12source-analysis.mdAnálisis de fuentes/dominios/partners
13comparing-runs.mdComparativas entre engines, temporal, A/B
14export-reporting.mdExportar datos para slides y reportes
15troubleshooting.mdErrores, diagnóstico SQL y escenarios reales

Checklist obligatorio antes de reportar

Andavant Radar CLI Skill · 498Advance · GEO Agent