Aller au contenu
03

Suivi CLI

Suivez comment les développeurs utilisent votre outil CLI. Voyez quelles commandes sont populaires, combien de temps elles prennent et quelles erreurs surviennent -- sans collecter de données personnelles.

Installation
npm install @bettermeter/node
Suivi automatique avec 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());
Suivi manuel
bm.trackCommand({
  command: "deploy",
  subcommand: "preview",
  flags: ["--prod", "--verbose"],
  version: "2.1.0",
  durationMs: 4500,
  exitCode: 0,
  isCi: !!process.env.CI,
});

Ce qui est suivi

Uniquement les noms de commandes et de drapeaux. Les valeurs des drapeaux, les arguments et les chemins de fichiers ne sont jamais envoyés. Le SDK capture le système d'exploitation et l'architecture pour les analyses d'environnement.

07

Référence CLI

Le CLI BetterMeter vous permet d'interroger les analyses depuis le terminal avec un affichage visuel élégant. Toutes les commandes acceptent -r/--range et --json, et toutes sauf all-sites acceptent aussi -s/--site — celle-ci porte sur tout le compte et ne prend aucun site. -l/--limit ne s'applique qu'aux commandes qui renvoient une liste classée.

Installation et authentification
npm install -g bettermeter
bettermeter login -t <apiKey> -u https://bettermeter.com

Formats de sortie

Par défaut, le CLI affiche un rendu visuel riche avec des graphiques ASCII, du texte coloré, des sparklines et des cartes de statistiques. Toute la sortie utilise des caractères Unicode compatibles avec tous les terminaux modernes. Les couleurs détectent automatiquement les capacités du terminal et respectent la variable d'environnement NO_COLOR.

Par défaut (visuel)Graphiques linéaires, barres horizontales, sparklines, tableaux stylisés avec couleurs
--jsonDonnées JSON brutes -- idéal pour le scripting, le piping vers jq ou l'utilisation programmatique

La sortie visuelle inclut :

  • Graphiques linéaires pour les données temporelles (visiteurs quotidiens, invocations)
  • Barres horizontales pour les listes classées (pages, sources, pays)
  • Sparklines intégrées aux statistiques d'ensemble pour une visualisation rapide des tendances
  • Cartes de statistiques avec indicateurs de variation colorés pour les vues d'ensemble
  • Tableaux stylisés avec bordures pour les données détaillées
Exemple : visuel ou JSON
# Visual output (default)
bettermeter stats -s example.com

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

Authentification

login -t <key> -u <url>S'authentifier avec une clé API et l'URL du tableau de bord
logoutSupprimer les identifiants enregistrés
whoamiAfficher l'utilisateur actuellement authentifié

Temps réel

live -s <siteId> [--activity] [--cursor <cursor>] [--json]Nombre de visiteurs en direct; ajoutez --activity pour le fil récent d’événements humains et --cursor pour l’interrogation incrémentielle (--json pour la sortie brute)
live:screen -s <siteId> [--json]Affiche l’URL authentifiée Grand écran pour la visualisation rembobinable des visiteurs et sa chronologie d’activité de 30 minutes (--json pour une sortie structurée)

Portefeuille de sites

all-sites [-r <range>] [--json]Le trafic de tous les sites auxquels vous avez accès, côte à côte : visiteurs, pages vues, sessions et événements personnalisés par site, la variation du nombre de visiteurs d'une période à l'autre pour chaque site, et les totaux du compte. Ne prend pas -s/--site

Analytique web

Les commandes de trafic humain excluent par défaut les robots connus, l’automatisation sans navigateur et les cohortes de scrapers détectées avec une forte confiance. Ajoutez --include-bots à stats, pages, sources, timeseries, ai-traffic, countries, devices, browsers, sessions, session-stats, channels, goals, goal:show ou goals:suggest pour les inclure.

-l/--limit est accepté par les commandes qui renvoient une liste classée : pages, sources, bots, countries, browsers, visitors, sessions, events, campaigns, conversions, keywords, campaign:visitors, export, cli-commands, mcp-tools, mcp-clients et api-endpoints. Il n'a pas de valeur par défaut propre : si vous l'omettez, la commande renvoie la page par défaut du point de terminaison, qui varie selon le jeu de données — aujourd'hui visitors renvoie 50 lignes là où pages en renvoie 10 — et le drapeau sert à demander un nombre précis. Les commandes de synthèse, de tendance et de détail ne l'acceptent pas — stats, ai-traffic, timeseries, devices, channels, marketing, ads, campaign, event, ainsi que les commandes overview et timeseries de cli, mcp et api. Sur sources --filter et bots --category, la limite est appliquée avant le filtre : un résultat filtré peut donc contenir moins de lignes que la limite.

statsAperçu : visiteurs, pages vues, sessions + % de variation, ou nouvel état de référence si la période précédente est vide
pagesPages les plus visitées par nombre de visiteurs
sourcesSources de trafic (--filter all|ai|traditional)
ai-trafficRépartition des référencements IA par plateforme
botsTrafic robots/crawlers (--category all|ai-crawler|search|monitoring|scraper)
timeseriesTendance quotidienne visiteurs/pages vues
countriesVisiteurs par pays
devicesRépartition par appareil
browsersRépartition par navigateur
visitorsPersonnes avec leur source d'événement (web / CLI / MCP / API / bot) et son détail, ainsi que première source, campagne, visites répétées et cycle de vie
sessionsChaque session avec durée, pages, événements, parcours de l'entrée à la sortie, niveau d'engagement et rebond, sous les totaux de la période
visitor <visitorId>Profil d'une personne, première interaction, sessions et chronologie
visitor:update <visitorId>Définir un identifiant opaque, un nom d'affichage ou le statut visiteur/client
visitor:properties <visitorId>Lister les propriétés clé/valeur stockées sur un visiteur
visitor:tag <visitorId>Définir ou supprimer des propriétés clé/valeur arbitraires sur un visiteur
visitor:findTrouver un visiteur par e-mail, identifiant de contact CRM ou paire clé/valeur exacte
eventsÉvénements personnalisés avec compteurs
event <name>Un événement personnalisé en détail : déclenchements totaux, visiteurs uniques, répartition des valeurs de propriétés, déclenchements récents
campaignsAttribution automatique des URL de campagne (UTM + identifiants de clic)
campaign <name>Rapport détaillé de campagne (qualité, variantes, répartitions)
campaign:visitors <name>Toutes les personnes amenées par une campagne : qui a cliqué, la page d'arrivée, la variante, l'appareil, le pays et ce qu'elles ont fait ensuite
keywordsMots-clés générant du trafic (utm_term, avec qualité des visites)
marketingRapport marketing complet : campagnes, pages d’atterrissage, mix de canaux
screenshot <path>Capturer une page d’atterrissage et l’enregistrer comme image (--site, --output facultatif)
channelsRépartition par canal (Direct, Recherche payante, Organique, etc.)
exportRapport complet (--format json|csv|md)

Analytique CLI

cli-overviewInvocations, appelants, taux de succès, durée moyenne
cli-commandsCommandes les plus utilisées par nombre d'invocations
cli-timeseriesActivité CLI quotidienne

Analytique MCP

mcp-overviewInvocations, appelants, taux de succès, durée moyenne
mcp-toolsOutils MCP les plus utilisés par nombre d'invocations
mcp-clientsRépartition par client (Claude, Cursor, etc.)
mcp-timeseriesActivité MCP quotidienne

Analytique API

api-overviewInvocations, appelants, taux d'erreur, durée moyenne
api-endpointsEndpoints les plus sollicités par nombre d'invocations
api-timeseriesActivité API quotidienne

Builder

dashboardsLister les mises en page de dashboards enregistrées affichées dans la navigation latérale
dashboard:createCréer un dashboard personnalisé, y compris le widget Meta paidPerformance réservé aux Éditeurs et Administrateurs
dashboard:update -i <id>Modifier une mise en page de dashboard personnalisée (seuls les indicateurs passés changent)
dashboard:deleteSupprimer une mise en page de dashboard personnalisée
reportsLister les modèles de rapport enregistrés
report:createCréer un modèle de rapport, y compris la section paidMedia réservée aux Éditeurs et Administrateurs
report:previewPrévisualiser un rapport avec la diffusion Meta en direct lorsque paidMedia est activé
report:update -i <id>Modifier un modèle de rapport (seuls les indicateurs passés changent)
report:deleteSupprimer un modèle de rapport

Pulse AI

pulse askPosez toute question à Pulse, y compris les parcours liés aux visiteurs derrière les conversions récentes
pulse threadsLister vos discussions Pulse enregistrées pour un site
adsDépenses et clics de lien Meta comparés au trafic de campagne compatible suivi
ad-creativeLa publicité à l'origine d'une visite, ou toutes les publicités d'une campagne ; --utm-content identifie une création exacte
ads:syncRécupérer maintenant les dépenses des comptes publicitaires connectés
conversionsFiches CRM portant l'un de nos identifiants de clic, avec les compteurs associés, non associés et en attente d'envoi (--won pour les conclues seulement)
ad-connections -s <siteId>Comptes publicitaires connectés à un site et état de leur synchronisation
crmCRM connectés à un site et état de leur synchronisation
crm:syncRécupérer les conversions CRM maintenant plutôt qu'à la prochaine synchronisation planifiée (--full pour tout relire)
slackCanaux Slack reliés aux alertes Pulse de ce site, avec l'état des envois
slack:connectConnecter un webhook entrant Slack ; un message de test est publié avant l'enregistrement
slack:testPublier maintenant dans un canal connecté, pour prouver que le webhook fonctionne toujours
slack:updateActiver, désactiver, renommer ou changer le seuil d'un canal connecté
slack:removeDéconnecter un canal Slack ; les alertes déjà enregistrées sont conservées
pulse threadRejouer une discussion Pulse sous forme de transcription
pulse thread-deleteSupprimer une discussion Pulse
pulse insightsAnomalies, tendances, jalons et variations de campagnes, canaux, géographie, conversions et engagement
pulse healthScore de santé produit (0-100, note A-F)
pulse briefingBriefing quotidien/hebdomadaire (-p/--period daily|weekly)
pulse forecastPrévision de trafic (-m/--metric, -d/--days)
pulse compareComparer deux périodes (-r/--range, --from2, --to2)
pulse alertsLister les règles d'alerte de surveillance
pulse alerts:createCréer une alerte (-t/--type, -n/--name, -c/--condition)
pulse alerts:deleteSupprimer une alerte (-i/--id)
pulse notificationsNotifications récentes (--unread pour les non lues uniquement)

Classements de recherche et visibilité IA

brand-report <domain>Générer un rapport de classements de recherche (-q/--queries)
brand-config <domain>Voir/mettre à jour la configuration de surveillance de marque
brand-compare <domain>Comparer les classements avec les concurrents (-q, -c)
brand-alerts <domain>Gérer les alertes de classement (-a list|create|delete|enable|disable)
ai-mentions <domain>Mentions de marque par chatbots IA (-q/--queries, -p/--providers)
ai-mentions:history [domain]Analyses de mentions IA enregistrées, les plus récentes d'abord — lit l'historique, ne lance jamais d'analyse payante
backlinks <domain>Profil de backlinks : rang du domaine, domaines référents

Les scans externes payants acceptent 1 à 10 requêtes par demande. La comparaison concurrentielle accepte jusqu'à 10 concurrents.

Objectifs de conversion

goals -s <siteId> [--include-bots]Lister les objectifs de conversion humains, les visiteurs convertis stables, les taux et le momentum
goal:show -s <siteId> -g <goalId> [--include-bots]Comparer l'évolution actuelle et précédente, l'acquisition au premier contact, l'efficacité par visiteur exposé et le momentum
goal:create -s <siteId> -n <name>Créer un objectif de conversion (URL de page vue, événement personnalisé, lien sortant ou téléchargement)
goal:update -s <siteId> -g <goalId>Modifier un objectif de conversion — renommer, recibler, revaloriser ou archiver
goal:delete -s <siteId> -g <goalId>Supprimer un objectif de conversion
goals:suggest -s <siteId> [--include-bots]Analyser le trafic humain et suggérer des cibles de conversion à forte valeur, avec justification

Gestion des sites

sites listLister tous les sites
sites add <domain>Ajouter un nouveau site — connectez-vous au tableau de bord; une clé API ne peut pas créer de site
sites remove <siteId>Supprimer un site — connectez-vous au tableau de bord; une clé API ne peut pas supprimer de site
sites info <siteId>Afficher les détails du site et le code de suivi
sites update <siteId> --currency <code>Définir la devise d’affichage (code ISO 4217, CAD par défaut)
install <siteId>Obtenir le code de suivi pour un site

Gestion de l'équipe

members list -s <siteId>Lister les membres du site
members add <email>Ajouter un membre (-s, -r viewer|editor|admin, --all-sites)
members remove <id>Supprimer un membre (-s)
invitation:cancel <id>Annuler une invitation en attente (-s), avant qu'elle soit acceptée
members update-role <id>Mettre à jour le rôle d'un membre (-s, -r)

Facturation

billingAfficher le forfait actuel, l'utilisation et les informations de facturation (--json)

Options

-s, --siterequis sauf all-sites
string
Identifiant du site (domaine). Toutes les commandes l'exigent, sauf all-sites, qui couvre tous les sites auxquels vous avez accès
-r, --range
string
Plage de dates : today, 7d, 30d, 90d, 12m. Chaque préréglage comprend exactement le nombre de jours civils indiqué. Par défaut : 30d
-l, --limit
number
Nombre maximum de résultats, sur les commandes de liste uniquement. Aucune valeur par défaut — si vous l'omettez, la taille de page du point de terminaison s'applique
--json
flag
Sortie JSON brute au lieu des graphiques et tableaux visuels