Data-driven thumbnail batch exporter for Krita templates.
Thumbforge turns a saved .kra design into a reusable thumbnail template. Map Krita vector text shapes to variables, paste or import spreadsheet rows, preview a row, and export a whole batch while preserving Krita's native rendering and layer effects.
- Detect vector text shapes from the active
.kradocument - Map each text shape by layer name and shape name for stable exports
- Support multiple text shapes in the same vector layer
- Refresh mappings from the current document while preserving variable names
- Save/load mappings, rows, filename pattern, and export settings inside the
.krafile - Guard exports when the active template has unsaved changes
- Import/export CSV variable rows
- Paste rows directly from Excel, Google Sheets, or any tab-separated clipboard data
- Add/remove variable columns in the docker
- Generate default rows for episode/text variables
- Import filenames as rows for title/filename-driven batches
- Validate missing mapped values and highlight problem cells
- Preview the selected row through Krita's real renderer
- Export current, selected, or all rows
- Progress dialog with cancel support
- Final export report with successes and per-row failures
- Filename patterns with variables, subfolders, sanitization, and duplicate suffixes
- PNG presets for YouTube, small files, and transparent output
- PNG, JPEG, and WebP export support
- Optional resize on export, including 1280x720 YouTube output
- Activity and error log at
%APPDATA%\krita\thumbforge.log
Download the latest thumbforge-krita-plugin-vX.Y.Z.zip from GitHub Releases.
In Krita:
- Open
Tools > Scripts > Import Python Plugin... - Select the downloaded zip
- Restart Krita
- Open
Settings > Configure Krita > Python Plugin Manager - Enable
Thumbforge - Restart Krita again
- Open
Settings > Dockers > Thumbforge
Extract the release zip into Krita's pykrita resource folder so it contains:
pykrita/
thumbforge_krita.desktop
thumbforge_krita/
On Windows this is usually:
%APPDATA%\krita\pykrita
For local development on Windows:
.\scripts\install-krita-plugin.ps1- Open a saved
.kratemplate in Krita. - Open
Settings > Dockers > Thumbforge. - Click
Detect Text. - Rename variables in the mappings table if needed.
- Import CSV, paste rows, generate rows, or add rows manually.
- Configure filename pattern and export settings.
- Click
Save Setupto persist the setup in the.kra. - Use
Preview Row,Export Current,Export Selected, orExport All.
Example filename patterns:
| Pattern | Output |
|---|---|
thumb_{episode} |
thumb_1.png |
{series}/thumb_{episode} |
my-series/thumb_1.png |
{title} |
Some_Title.png |
| Setting | Notes |
|---|---|
| Format | png, jpg, or webp |
| Preset | YouTube PNG, Small PNG, Transparent PNG |
| Compression | PNG compression level, 0-9 |
| Quality | JPEG/WebP quality, 1-100 |
| Alpha | Preserve transparency where supported |
| sRGB / ICC | Color export hints for Krita |
| Resize | 0 x 0 keeps original size; use 1280 x 720 for YouTube thumbnails |
Run tests:
.\venv\Scripts\python.exe -m pytestPackage the plugin zip:
.\scripts\package-krita-plugin.ps1Install into the local Krita profile:
.\scripts\install-krita-plugin.ps1Releases are published from version tags or by manually running the Release workflow.
- Use Conventional Commits:
feat: ...,fix: ...,refactor: ...,docs: ... - Bump
pyproject.toml, open a PR, merge it, then create/push a tag such asv0.1.1 - The release workflow publishes
thumbforge-krita-plugin-vX.Y.Z.zip - The zip is ready for Krita's
Import Python Plugin...action
- Docker is not visible — restart Krita after enabling the plugin, then check
Settings > Dockers > Thumbforge. - Plugin zip does not import — make sure the zip contains
thumbforge_krita.desktopand thethumbforge_krita/folder at the root. - Export uses old template state — save the
.kraor accept the save prompt before exporting. - Krita shows an export error — check
%APPDATA%\krita\thumbforge.log. - Text does not change — click
Refresh Text, verify the mapping row points to the right layer and shape, then save setup.
PRs are welcome. Please:
- Keep commits small and conventional.
- Run
python -m pytestbefore submitting. - Avoid copying GPL plugin code into this MIT project; use architecture ideas only unless licensing changes are intentional.
MIT © saitatter