Outils CLI

Une commande. Une URL. Votre capture.
En local, dans un pipeline CI/CD ou dans vos scripts d'automatisation.

~/projets · shotbot
$ shotbot capture --url=https://www.shotbot.fr
✓ captured in 2s
✓ saved www.shotbot.fr-ab1c2d3e.jpg (412 KB)
$ _

Mêmes options. Mêmes codes de sortie. Même structure de config.
Passez de PHP à Python ou Node.js sans réécrire vos scripts.

Le CLI lui-même est en anglais, sur tous les systèmes. Chaque client stocke sa clé API et ses défauts dans son propre ~/.shotbot-<langue>-cli/config.json | les trois peuvent cohabiter sans conflit.

Zéro dépendance d'exécution. Pas de Composer.
PHP, Python et Node.js, chacun tient en un seul fichier, open source, sous licence MIT. Choisissez le runtime que vous avez déjà.

Installation

Python | pip
pip install shotbot
Node.js | npm
npm install -g shotbot
PHP | curl | requiert PHP 8.0+ et php-curl
curl -fsSL https://api.shotbot.net/cli/php/shotbot -o shotbot \
  && chmod +x shotbot \
  && sudo mv shotbot /usr/local/bin/
Python | curl | requiert Python 3.8+, zéro dépendance
curl -fsSL https://api.shotbot.net/cli/python/shotbot -o shotbot \
  && chmod +x shotbot \
  && sudo mv shotbot /usr/local/bin/
Node.js | curl | requiert Node.js 18+, zéro dépendance
curl -fsSL https://api.shotbot.net/cli/node/shotbot -o shotbot \
  && chmod +x shotbot \
  && sudo mv shotbot /usr/local/bin/

Pour rendre la commande globale : sudo mv shotbot /usr/local/bin/. Au premier appel, le CLI vous demande votre clé API et l'enregistre sous ~/.shotbot-<langue>-cli/config.json (un dossier de config par client, chmod 600), les trois peuvent donc cohabiter.

Clients disponibles

PHP version actuelle : 0.3.0

PHP 8.0+ et php-curl. Linux, macOS, BSD, Windows (via WSL ou PHP natif).

Télécharger

Python version actuelle : 0.3.0

Python 3.8+, bibliothèque standard uniquement. Linux, macOS, BSD, Windows (si Python est installé).

Télécharger

Node.js version actuelle : 0.3.0

Node.js 18+, sans dépendances tierces (utilise fetch intégré). Linux, macOS, BSD, Windows (si Node est installé).

Télécharger

Première capture

capture basique (enregistre un fichier dans le dossier courant)
shotbot capture --url=https://www.shotbot.fr/
choisir le nom ou le dossier du fichier
shotbot capture --url=https://www.shotbot.fr/ --output=screenshot.jpg
page entière, format PDF
shotbot capture --url=https://www.shotbot.fr/ --full-page --format=pdf
récupérer le token JSON pour traitement
shotbot capture --url=https://www.shotbot.fr/ --json | jq .token

Privé par défaut

Chaque capture du CLI est privée et enregistrée dans le dossier courant, sauf demande contraire. Le résultat n'est jamais publié sur le CDN : il reste dans un espace non public côté serveur, le CLI le télécharge pour vous, et la copie serveur est purgée automatiquement après une courte période. Ajoutez --cdn pour obtenir une URL publique permanente (sans fichier local).

Le privé par défaut est pratique pour les pages sensibles (intranet, dashboards, données client). Voir la FAQ pour le détail technique.

Options de capture

Compte Gratuit

OptionValeursDéfaut
--urlURL http(s), requise|
--formatjpg | png | webp | avif | pdfjpg
--viewport390/768/1280 (free) | 280-3840 (Pro)1280
--output-size120..1920 px (resize du résultat)viewport
--wait0..30 secondes après chargement5
--ratio16:9, 4:3, 1:1, 9:16, etc.16:9
--full-pagecapture la page entièreoff
--nojsdésactive JavaScriptoff
--color-schemedark | light|
--hidpiDPR ×2 (écrans Retina)off

Shotbot Pro

OptionValeurs
--dismiss-cookiesaccept | reject (gestion auto des bannières cookies)
--scrollscroll avant capture (déclenche le lazy-load)
--block-adsbloque les requêtes publicitaires
--crop-height10..20000 px (rogne en hauteur, prime sur --ratio)
--selectorsélecteur CSS (ne capture que cet élément)
--http-auth-user / --http-auth-passauthentification HTTP Basic
--option render_region=Xfr-paris (défaut) | ca-montreal | sg-singapore | au-sydney | vn-hanoi | captures géolocalisées

Le CLI ne filtre rien côté client : c'est l'API qui contrôle l'éligibilité. Sans Shotbot Pro, ces options renvoient 403 pro_required et le CLI sort en code 4.

PDF (uniquement avec --format=pdf)

OptionValeursDéfaut
--pdf-page-sizeA4, A3, A5, Letter, Legal, TabloidA4
--pdf-margin0..50 mm10
--pdf-scale0.10..2.001.00
--pdf-landscapeorientation paysageoff

Options CLI

OptionDescription
--output[=CHEMIN] Choisit où enregistrer (par défaut : dossier courant, nom auto host-token.jpg). Avec / final : dans ce dossier, nom auto.
Sinon : chemin exact.
--cdnPublie sur le CDN public et renvoie une URL permanente (aucun fichier local). Sans cette option, la capture reste privée et enregistrée localement (voir plus haut).
--jsonAffiche la réponse API complète en JSON (aucun fichier enregistré).
--timeout=NDélai maximum de polling en secondes (défaut : 180).

Défauts persistants

Configurez une fois, capturez ensuite sans réécrire vos options. Les options passées sur la ligne de commande gardent toujours la priorité sur les défauts.

enregistrer ses préférences
shotbot set viewport 1440         # toujours 1440 px
shotbot set full-page             # toujours page entière
shotbot set output ./shots/       # toujours enregistrer dans ./shots/
shotbot set cdn true              # toujours publier sur le CDN public
shotbot set format webp           # toujours WebP

shotbot defaults                  # voir ce qui est stocké
shotbot defaults --keys           # liste des clés modifiables
shotbot unset full-page           # oublier ce défaut

Les défauts vivent dans le même ~/.shotbot-<langue>-cli/config.json que la clé API.

Utilisation en CI/CD | GitHub Actions, GitLab CI, Makefile

Passez SHOTBOT_API_KEY en variable d'environnement pour éviter l'invite interactive, NO_COLOR=1 pour une sortie sans ANSI, et testez le code de sortie - le code 5 (quota/file d'attente) n'est pas un échec dur.

github actions / gitlab ci / bash
export SHOTBOT_API_KEY="$SHOTBOT_KEY"   # évite l'invite interactive
export NO_COLOR=1                       # désactive l'ANSI

shotbot capture \
  --url=https://staging.example.com \
  --viewport=1440 --full-page \
  --output=artifacts/staging.jpg \
  --timeout=120

case $? in
  0) echo "OK" ;;
  5) echo "Quota épuisé"; exit 0 ;;        # waitlist, pas un échec dur
  *) echo "Capture échouée (code $?)"; exit 1 ;;
esac

Variables d'environnement

VariableEffet
SHOTBOT_API_KEYSurcharge la clé enregistrée. Indispensable en CI.
SHOTBOT_API_BASESurcharge l'URL de base (par défaut https://api.shotbot.net).
NO_COLORDésactive les codes ANSI dans la sortie.

Codes de sortie

CodeSignification
0Succès.
2Mauvaise invocation (arguments manquants, configuration invalide).
3Erreur réseau.
4L'API a renvoyé une erreur (clé invalide, options non Pro, URL refusée…).
5Mise en file d'attente (quota mensuel atteint).
6Échec côté serveur (page injoignable, plantage du navigateur).
7Délai de polling dépassé (utiliser --timeout=N).

Autres commandes

CommandeEffet
shotbot status [--json]Affiche le plan, les crédits, le quota mensuel et les captures en cours. --json retourne le JSON brut.
shotbot set <clé> [valeur]Persiste un défaut.
shotbot unset <clé>Supprime un défaut.
shotbot defaults [--keys]Liste les défauts ou les clés modifiables.
shotbot configAffiche le chemin du fichier de configuration.
shotbot resetEfface la clé API enregistrée.
shotbot versionAffiche la version.
shotbot helpAffiche l'aide complète.

Ressources