An open API service indexing awesome lists of open source software.

https://github.com/omachala/heroshot

Screenshot automation framework. Define once, regenerate forever. Visual picker, multi-viewport, light/dark mode, CI-ready.
https://github.com/omachala/heroshot

automation cli developer-tools documentation docusaurus mkdocs playwright screenshot technical-writing typescript vitepress

Last synced: about 1 month ago
JSON representation

Screenshot automation framework. Define once, regenerate forever. Visual picker, multi-viewport, light/dark mode, CI-ready.

Awesome Lists containing this project

README

          





heroshot



👆 This hero shot of heroshot.sh is taken by heroshot ⚡️


npm version
license
coverage
quality gate
docs

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

## Use in Your Docs

**VitePress** · [Full guide](https://heroshot.sh/docs/integrations/vitepress)

```ts
// .vitepress/config.ts
import { heroshot } from 'heroshot/plugins/vite';
export default defineConfig({ vite: { plugins: [heroshot()] } });
```

```vue

import { Heroshot } from 'heroshot/vue';

```

**Docusaurus** · [Full guide](https://heroshot.sh/docs/integrations/docusaurus)

```js
// docusaurus.config.js
plugins: [['heroshot/plugins/docusaurus', {}]];
```

```tsx
import { Heroshot } from 'heroshot/docusaurus';
;
```

**MkDocs** · [Full guide](https://heroshot.sh/docs/integrations/mkdocs)

```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.

## One Screenshot - All Variants


Desktop Light
Desktop Dark


Tablet Light
Tablet Dark


Mobile Light
Mobile Dark

6 screenshots from one config entry - always in sync with the live site.

## Learn More

| | |
| ------------------- | --------------------------------------------------------------------- |
| **Documentation** | [heroshot.sh](https://heroshot.sh) |
| **Getting Started** | [Quick start guide](https://heroshot.sh/docs/getting-started) |
| **Configuration** | [Config options](https://heroshot.sh/docs/config) |
| **CI/CD Setup** | [Automated updates](https://heroshot.sh/docs/guide/automated-updates) |
| **CLI Reference** | [All commands & flags](https://heroshot.sh/docs/cli) |

## Contributing

This is a community project aiming to solve screenshot automation end-to-end and any feedback is valuable. Open an [issue](https://github.com/omachala/heroshot/issues) for bugs, questions, or feature requests. Pull requests are more than welcome.

If you like it, give the repo a ⭐

## License

MIT