Outils CLI
Une commande. Une URL. Votre capture.
En local, dans un pipeline CI/CD ou dans vos scripts d'automatisation.
$ 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.
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
pip install shotbot
npm install -g shotbot
php-curl
curl -fsSL https://api.shotbot.net/cli/php/shotbot -o shotbot \
&& chmod +x shotbot \
&& sudo mv shotbot /usr/local/bin/
curl -fsSL https://api.shotbot.net/cli/python/shotbot -o shotbot \
&& chmod +x shotbot \
&& sudo mv shotbot /usr/local/bin/
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).
Python version actuelle : 0.3.0
Python 3.8+, bibliothèque standard uniquement. Linux, macOS, BSD, Windows (si Python est installé).
TéléchargerNode.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é).
Première capture
shotbot capture --url=https://www.shotbot.fr/
shotbot capture --url=https://www.shotbot.fr/ --output=screenshot.jpg
shotbot capture --url=https://www.shotbot.fr/ --full-page --format=pdf
shotbot capture --url=https://www.shotbot.fr/ --json | jq .token
Privé par défaut
--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
| Option | Valeurs | Défaut |
|---|---|---|
--url | URL http(s), requise | | |
--format | jpg | png | webp | avif | pdf | jpg |
--viewport | 390/768/1280 (free) | 280-3840 (Pro) | 1280 |
--output-size | 120..1920 px (resize du résultat) | viewport |
--wait | 0..30 secondes après chargement | 5 |
--ratio | 16:9, 4:3, 1:1, 9:16, etc. | 16:9 |
--full-page | capture la page entière | off |
--nojs | désactive JavaScript | off |
--color-scheme | dark | light | | |
--hidpi | DPR ×2 (écrans Retina) | off |
Shotbot Pro
| Option | Valeurs |
|---|---|
--dismiss-cookies | accept | reject (gestion auto des bannières cookies) |
--scroll | scroll avant capture (déclenche le lazy-load) |
--block-ads | bloque les requêtes publicitaires |
--crop-height | 10..20000 px (rogne en hauteur, prime sur --ratio) |
--selector | sélecteur CSS (ne capture que cet élément) |
--http-auth-user / --http-auth-pass | authentification HTTP Basic |
--option render_region=X | fr-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)
| Option | Valeurs | Défaut |
|---|---|---|
--pdf-page-size | A4, A3, A5, Letter, Legal, Tabloid | A4 |
--pdf-margin | 0..50 mm | 10 |
--pdf-scale | 0.10..2.00 | 1.00 |
--pdf-landscape | orientation paysage | off |
Options CLI
| Option | Description |
|---|---|
--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. |
--cdn | Publie 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). |
--json | Affiche la réponse API complète en JSON (aucun fichier enregistré). |
--timeout=N | Dé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.
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.
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
| Variable | Effet |
|---|---|
SHOTBOT_API_KEY | Surcharge la clé enregistrée. Indispensable en CI. |
SHOTBOT_API_BASE | Surcharge l'URL de base (par défaut https://api.shotbot.net). |
NO_COLOR | Désactive les codes ANSI dans la sortie. |
Codes de sortie
| Code | Signification |
|---|---|
0 | Succès. |
2 | Mauvaise invocation (arguments manquants, configuration invalide). |
3 | Erreur réseau. |
4 | L'API a renvoyé une erreur (clé invalide, options non Pro, URL refusée…). |
5 | Mise en file d'attente (quota mensuel atteint). |
6 | Échec côté serveur (page injoignable, plantage du navigateur). |
7 | Délai de polling dépassé (utiliser --timeout=N). |
Autres commandes
| Commande | Effet |
|---|---|
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 config | Affiche le chemin du fichier de configuration. |
shotbot reset | Efface la clé API enregistrée. |
shotbot version | Affiche la version. |
shotbot help | Affiche l'aide complète. |
Ressources
Documentation API
L'API REST sous-jacente, paramètres, formats, callbacks.
Exemples d'intégration
PHP, Python, Node.js, Go, cURL, Ruby. Pour aller plus loin que le CLI.
FAQ | catégorie CLI
Configuration, captures privées, défauts, utilisation en CI.
Captures avec Claude Code
Le serveur MCP Shotbot : demandez vos captures à Claude Code en langage naturel.
Télécharger le CLI PHP
Fichier unique, ~30 Ko. Licence MIT.
Télécharger le CLI Python
Fichier unique, ~30 Ko. Stdlib uniquement. Licence MIT.
Télécharger le CLI Node.js
Fichier unique, ~30 Ko. fetch intégré, zéro dépendance. Licence MIT.