Define your screenshots once, update them forever with one command
npm install heroshot👆 This hero shot of heroshot.sh is taken by heroshot ⚡️
Your app changes constantly. New features, design tweaks, bug fixes. Meanwhile, the screenshots in your README and docs quietly become lies.
The manual fix is tedious: open browser, navigate, log in, screenshot, crop, save, commit. Now do that for every image. Now do it again next month.
Heroshot fixes this. Define your screenshots once - point and click, no CSS selectors - and regenerate them with one command whenever you need.
``bash`
npx heroshot
First run opens a browser with a visual picker. Click what you want, name it, done. Screenshots land in heroshots/, config saves to .heroshot/config.json. Next run regenerates everything headlessly.
https://github.com/user-attachments/assets/f35600a6-9220-4bd2-a8c6-a6b4ee8a33d9
VitePress · Full guide
`ts`
// .vitepress/config.ts
import { heroshot } from 'heroshot/plugins/vite';
export default defineConfig({ vite: { plugins: [heroshot()] } });
`vue
`
Docusaurus · Full guide
`js`
// docusaurus.config.js
plugins: [['heroshot/plugins/docusaurus', {}]];
`tsx`
import { Heroshot } from 'heroshot/docusaurus';
MkDocs · Full guide
`yaml`mkdocs.yml
plugins:
- macros:
modules: [heroshot]
`jinja``
{{ heroshot("dashboard", "Dashboard overview") }}
One component/macro, all variants - light/dark mode switches automatically, responsive sizes via srcset.
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
6 screenshots from one config entry - always in sync with the live site.
| | |
| ------------------- | --------------------------------------------------------------------- |
| Documentation | heroshot.sh |
| Getting Started | Quick start guide |
| Configuration | Config options |
| CI/CD Setup | Automated updates |
| CLI Reference | All commands & flags |
This is a community project aiming to solve screenshot automation end-to-end and any feedback is valuable. Open an issue for bugs, questions, or feature requests. Pull requests are more than welcome.
If you like it, give the repo a ⭐
MIT