Saltar al contenido
03

Rastreo de CLI

Rastree cómo los desarrolladores usan su herramienta CLI. Vea qué comandos son populares, cuánto tiempo toman y qué errores ocurren -- sin recopilar datos personales.

Instalación
npm install @bettermeter/node
Seguimiento automático con Commander.js
import { BetterMeter } from "@bettermeter/node";
import { Command } from "commander";

const bm = new BetterMeter({
  siteId: "my-cli-tool",
  apiKey: "bm_...",
});

const program = new Command();

// Wraps all commands — tracks name, flags, exit code
bm.wrapCommander(program, { version: "1.0.0" });

program.command("deploy").action(() => { /* ... */ });
program.parse();

// Flush on exit
process.on("SIGTERM", () => bm.shutdown());
Seguimiento manual
bm.trackCommand({
  command: "deploy",
  subcommand: "preview",
  flags: ["--prod", "--verbose"],
  version: "2.1.0",
  durationMs: 4500,
  exitCode: 0,
  isCi: !!process.env.CI,
});

Qué se rastrea

Solo nombres de comandos y de flags. Los valores de flags, argumentos y rutas de archivos nunca se envían. El SDK captura el sistema operativo y la arquitectura para analíticas de entorno.

07

Referencia de CLI

El CLI de BetterMeter le permite consultar analíticas desde la terminal con una salida visual elegante. Todos los comandos aceptan -r/--range y --json, y todos salvo all-sites aceptan además -s/--site — este abarca toda la cuenta y no toma ningún sitio. -l/--limit solo se aplica a los comandos que devuelven una lista clasificada.

Instalación y autenticación
npm install -g bettermeter
bettermeter login -t <apiKey> -u https://bettermeter.com

Formatos de salida

Por defecto, el CLI muestra una salida visual enriquecida con gráficos ASCII, texto con color, sparklines y tarjetas de estadísticas. Toda la salida usa caracteres Unicode compatibles con todas las terminales modernas. Los colores detectan automáticamente las capacidades de la terminal y respetan la variable de entorno NO_COLOR.

Por defecto (visual)Gráficos de líneas, barras horizontales, sparklines, tablas estilizadas con color
--jsonDatos JSON sin procesar -- ideal para scripts, piping a jq o uso programático

La salida visual incluye:

  • Gráficos de líneas para datos de series temporales (visitantes diarios, invocaciones)
  • Barras horizontales para listas ordenadas (páginas, fuentes, países)
  • Sparklines junto a las estadísticas generales para una visualización rápida de tendencias
  • Tarjetas de estadísticas con indicadores de cambio a color para resúmenes
  • Tablas estilizadas con bordes para datos detallados
Ejemplo: visual frente a JSON
# Visual output (default)
bettermeter stats -s example.com

# JSON output for scripting
bettermeter stats -s example.com --json | jq '.visitors'

Autenticación

login -t <key> -u <url>Autenticarse con clave API y URL del dashboard
logoutEliminar credenciales almacenadas
whoamiMostrar el usuario autenticado actual

Tiempo real

live -s <siteId> [--activity] [--cursor <cursor>] [--json]Conteo de visitantes en vivo; añade --activity para el feed reciente de eventos humanos y --cursor para consultas incrementales (--json para salida sin procesar)
live:screen -s <siteId> [--json]Muestra la URL autenticada de Pantalla grande para la visualización rebobinable de visitantes y su cronología de actividad de 30 minutos (--json para salida estructurada)

Cartera de sitios

all-sites [-r <range>] [--json]El tráfico de todos los sitios a los que tienes acceso, uno junto a otro: visitantes, vistas de página, sesiones y eventos personalizados por sitio, la variación de visitantes de un período al anterior en cada sitio, y los totales de la cuenta. No acepta -s/--site

Analíticas web

Los comandos de tráfico humano excluyen por defecto los bots conocidos, la automatización sin navegador y las cohortes de scrapers detectadas con alta confianza. Añade --include-bots a stats, pages, sources, timeseries, ai-traffic, countries, devices, browsers, sessions, session-stats, channels, goals, goal:show o goals:suggest para incluirlos.

-l/--limit lo aceptan los comandos que devuelven una lista clasificada: pages, sources, bots, countries, browsers, visitors, sessions, events, campaigns, conversions, keywords, campaign:visitors, export, cli-commands, mcp-tools, mcp-clients y api-endpoints. No tiene un valor por defecto propio: si lo omites, el comando devuelve la página por defecto del propio endpoint, que varía según el conjunto de datos — hoy visitors devuelve 50 filas donde pages devuelve 10 — y el indicador sirve para pedir un número concreto. Los comandos de resumen, tendencia y detalle no lo aceptan — stats, ai-traffic, timeseries, devices, channels, marketing, ads, campaign, event, y los comandos overview y timeseries de cli, mcp y api. En sources --filter y bots --category el límite se aplica antes del filtro, por lo que un resultado filtrado puede contener menos filas que el límite.

statsResumen: visitantes, vistas de página, sesiones + % de cambio, o un nuevo estado base si el período anterior está vacío
pagesPáginas más visitadas por número de visitantes
sourcesFuentes de tráfico (--filter all|ai|traditional)
ai-trafficDesglose de referencias de IA por plataforma
botsTráfico de bots/rastreadores (--category all|ai-crawler|search|monitoring|scraper)
timeseriesTendencia diaria de visitantes/vistas de página
countriesVisitantes por país
devicesDesglose por dispositivo
browsersDesglose por navegador
visitorsPersonas con su fuente de eventos (web / CLI / MCP / API / bot) y su detalle, además de primera fuente, campaña, visitas repetidas y ciclo de vida
sessionsCada sesión con duración, páginas, eventos, recorrido de entrada a salida, nivel de interacción y rebote, bajo los totales del periodo
visitor <visitorId>Perfil de una persona, primer contacto, sesiones y cronología
visitor:update <visitorId>Establecer un ID opaco, nombre visible o estado de visitante/cliente
visitor:properties <visitorId>Listar las propiedades clave/valor almacenadas en un visitante
visitor:tag <visitorId>Establecer o eliminar propiedades clave/valor arbitrarias en un visitante
visitor:findEncontrar un visitante por correo, ID de contacto de CRM o par clave/valor exacto
eventsEventos personalizados con conteos
event <name>Un evento personalizado en detalle: disparos totales, visitantes únicos, desglose de valores de propiedades, disparos recientes
campaignsAtribución automática de URL de campaña (UTM + IDs de clic)
campaign <name>Informe detallado de campaña (calidad, variantes, desgloses)
campaign:visitors <name>Todas las personas que trajo una campaña: quién hizo clic, la página en la que aterrizó, su variante, dispositivo y país, y qué hizo después
keywordsPalabras clave que generan tráfico (utm_term, con calidad de las visitas)
marketingInforme de marketing completo: campañas, páginas de destino, mezcla de canales
screenshot <path>Capturar una página de destino y guardarla como imagen (--site, --output opcional)
channelsDesglose por canal (Directo, Búsqueda pagada, Orgánico, etc.)
exportReporte completo (--format json|csv|md)

Analíticas de CLI

cli-overviewInvocaciones, usuarios, tasa de éxito, duración promedio
cli-commandsComandos más usados por número de invocaciones
cli-timeseriesActividad diaria de CLI

Analíticas de MCP

mcp-overviewInvocaciones, usuarios, tasa de éxito, duración promedio
mcp-toolsHerramientas MCP más usadas por número de invocaciones
mcp-clientsDesglose por cliente (Claude, Cursor, etc.)
mcp-timeseriesActividad diaria de MCP

Analíticas de API

api-overviewInvocaciones, usuarios, tasa de error, duración promedio
api-endpointsEndpoints más usados por número de invocaciones
api-timeseriesActividad diaria de API

Builder

dashboardsListar layouts de dashboards guardados que aparecen en la navegación lateral
dashboard:createCrear un dashboard personalizado, incluido el widget Meta paidPerformance solo para Editores y Administradores
dashboard:update -i <id>Actualizar un layout de dashboard personalizado (solo cambian las opciones que pases)
dashboard:deleteEliminar un layout de dashboard personalizado
reportsListar plantillas de reporte guardadas
report:createCrear una plantilla de reporte, incluida la sección paidMedia solo para Editores y Administradores
report:previewPrevisualizar un reporte con entrega de Meta en vivo cuando paidMedia está habilitado
report:update -i <id>Actualizar una plantilla de reporte (solo cambian las opciones que pases)
report:deleteEliminar una plantilla de reporte

Pulse AI

pulse askPregúntale lo que sea a Pulse, incluidos los recorridos de visitantes detrás de conversiones recientes
pulse threadsListar tus conversaciones de Pulse guardadas para un sitio
adsGasto y clics de enlace de Meta comparados con tráfico de campaña compatible registrado
ad-creativeEl anuncio detrás de una visita, o todos los anuncios de una campaña; --utm-content identifica una creatividad exacta
ads:syncTraer ahora el gasto de las cuentas publicitarias conectadas
conversionsRegistros de CRM que llevan uno de nuestros IDs de clic, con los recuentos de asociados, no asociados y pendientes de envío (--won solo para las cerradas)
ad-connections -s <siteId>Cuentas publicitarias conectadas a un sitio y el estado de su sincronización
crmCRM conectados a un sitio y el estado de su sincronización
crm:syncObtener las conversiones del CRM ahora en lugar de esperar a la próxima sincronización programada (--full para releerlo todo)
slackCanales de Slack vinculados a las alertas de Pulse de este sitio, con estado de envío
slack:connectConectar un webhook entrante de Slack; se publica un mensaje de prueba antes de guardarlo
slack:testPublicar ahora en un canal conectado, para probar que el webhook sigue funcionando
slack:updateActivar, desactivar, renombrar o cambiar el umbral de un canal conectado
slack:removeDesconectar un canal de Slack; las alertas ya registradas se conservan
pulse threadReproducir una conversación de Pulse como transcripción
pulse thread-deleteEliminar una conversación de Pulse
pulse insightsAnomalías, tendencias, hitos y cambios en campañas, canales, geografía, conversiones y participación
pulse healthPuntuación de salud del producto (0-100, nota A-F)
pulse briefingBriefing diario/semanal (-p/--period daily|weekly)
pulse forecastPronóstico de tráfico (-m/--metric, -d/--days)
pulse compareComparar dos períodos (-r/--range, --from2, --to2)
pulse alertsListar reglas de alerta de monitoreo
pulse alerts:createCrear alerta (-t/--type, -n/--name, -c/--condition)
pulse alerts:deleteEliminar una alerta (-i/--id)
pulse notificationsNotificaciones recientes (--unread solo para no leídas)

Posicionamiento en búsqueda y visibilidad IA

brand-report <domain>Generar reporte de posicionamiento en búsqueda (-q/--queries)
brand-config <domain>Ver/actualizar configuración de monitoreo de marca
brand-compare <domain>Comparar posicionamiento con competidores (-q, -c)
brand-alerts <domain>Gestionar alertas de posicionamiento (-a list|create|delete|enable|disable)
ai-mentions <domain>Menciones de marca por chatbots de IA (-q/--queries, -p/--providers)
ai-mentions:history [domain]Análisis de menciones de IA guardados, más recientes primero: lee el historial, nunca ejecuta un análisis de pago
backlinks <domain>Perfil de backlinks: rango del dominio, dominios referentes

Los escaneos externos de pago aceptan de 1 a 10 consultas por solicitud. La comparación competitiva acepta hasta 10 competidores.

Objetivos de conversión

goals -s <siteId> [--include-bots]Listar los objetivos de conversión humanos, los visitantes convertidos estables, las tasas y el impulso
goal:show -s <siteId> -g <goalId> [--include-bots]Comparar la evolución actual y anterior, la adquisición de primer contacto, la eficiencia por visitante expuesto y el impulso
goal:create -s <siteId> -n <name>Crear un objetivo de conversión (URL de página vista, evento personalizado, enlace saliente o descarga)
goal:update -s <siteId> -g <goalId>Actualizar un objetivo de conversión: renombrar, reorientar, revalorar o archivar
goal:delete -s <siteId> -g <goalId>Eliminar un objetivo de conversión
goals:suggest -s <siteId> [--include-bots]Analizar el tráfico humano y sugerir objetivos de conversión de alto valor, con justificación

Gestión de sitios

sites listListar todos los sitios
sites add <domain>Agregar un nuevo sitio — inicia sesión en el panel; una clave API no puede crear sitios
sites remove <siteId>Eliminar un sitio — inicia sesión en el panel; una clave API no puede eliminar sitios
sites info <siteId>Mostrar detalles del sitio y código de rastreo
sites update <siteId> --currency <code>Establecer la moneda de visualización (código ISO 4217, CAD por defecto)
install <siteId>Obtener código de rastreo para un sitio

Gestión de equipo

members list -s <siteId>Listar miembros del sitio
members add <email>Agregar un miembro (-s, -r viewer|editor|admin, --all-sites)
members remove <id>Eliminar un miembro (-s)
invitation:cancel <id>Cancelar una invitación pendiente (-s), antes de que se acepte
members update-role <id>Actualizar rol de miembro (-s, -r)

Facturación

billingMostrar plan actual, uso e información de facturación (--json)

Opciones

-s, --siterequerido salvo all-sites
string
ID del sitio (dominio). Todos los comandos lo exigen salvo all-sites, que abarca todos los sitios a los que tienes acceso
-r, --range
string
Rango de fechas: today, 7d, 30d, 90d, 12m. Cada preajuste incluye exactamente el número indicado de días naturales. Por defecto: 30d
-l, --limit
number
Máximo de resultados, solo en los comandos de lista. Sin valor por defecto: si lo omites, se aplica el tamaño de página del propio endpoint
--json
flag
Salida JSON sin procesar en lugar de gráficos y tablas visuales