Automation and scraping · Edition No. 3 · 28 Aug 2026

simonw/shot-scraper

One YAML file regenerates every screenshot on the site — and since v1.10 it records WebM demo clips too.

← Automation and scrapingRead the whole edition →
02

simonw/shot-scraper

💎 hidden gem

2.6k stars · Apache-2.0 · 1.11 (2026-07-12)

One YAML file regenerates every screenshot on the site — and since v1.10 it records WebM demo clips too.

Repo detailsthe review · specs · pros & cons · install

What it is

A command-line tool that drives a headless browser to take screenshots of web pages, from a single URL or from a YAML file describing dozens of shots. Version 1.10 added video recording, so the same file can also produce short WebM clips of a scripted interaction.

Why it matters

Every marketing site quietly rots: you ship a UI change and the screenshots on your landing page, your docs and your README are suddenly of software that no longer exists. Nobody hand-fixes twenty screenshots, so they simply stay wrong, and a stale screenshot reads as an abandoned product to a first-time visitor. Describe the shots once in a YAML file and regenerating all of them is one command — which means it can run automatically whenever you deploy. It is also the cheapest way to get bilingual assets: point the same shot list at ?lang=ru and you have a complete Russian screenshot set for free.

Stars2.6k
LicenceApache-2.0
Latest1.11 (2026-07-12)checked 7 Sep 2026
Written inPython
RunsLocally, on your own machine
Setup effort
2 / 5
Payoff
4 / 5
Good
  • Apache-2.0, pure Python — drops into the venv beside FastAPI with no new runtime
  • Runs unattended in CI, so screenshots refresh on every deploy instead of never
  • Can log in first and shoot authenticated pages — which is where Grasppy's good screens are
Watch for
  • Needs Playwright plus a headless Chromium download — a few hundred MB before the first shot
  • Chromium is memory-hungry; run it on your Mac or in CI, not on the VPS serving users
  • Getting a login-protected shot right takes a fiddly first hour of scripting
Install
source venv/bin/activate
pip install shot-scraper
shot-scraper install          # downloads headless Chromium, once
shot-scraper multi shots.yml  # regenerate every screenshot
Screenshots
simonw/shot-scraper: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.