docs: add archive_folder and OpenAI provider to README
All checks were successful
Continuous Integration / Build Package (push) Successful in 1m37s
Continuous Integration / Lint, Check & Test (push) Successful in 2m39s

This commit is contained in:
Konstantin Fickel 2026-02-20 16:55:53 +01:00
parent 0294252c2e
commit a28cc97aed
Signed by: kfickel
GPG key ID: A793722F9933C1A5

View file

@ -2,7 +2,7 @@
A build tool for AI-generated artifacts. Define image and text targets in a YAML config, and bulkgen handles dependency resolution, incremental builds, and parallel execution. A build tool for AI-generated artifacts. Define image and text targets in a YAML config, and bulkgen handles dependency resolution, incremental builds, and parallel execution.
Uses [Mistral](https://mistral.ai) for text generation and [BlackForestLabs](https://blackforestlabs.ai) (FLUX) for image generation. Uses [Mistral](https://mistral.ai) and [OpenAI](https://openai.com) for text generation, and [BlackForestLabs](https://blackforestlabs.ai) (FLUX) and [OpenAI](https://openai.com) for image generation.
## Installation ## Installation
@ -25,6 +25,7 @@ uv sync
```bash ```bash
export MISTRAL_API_KEY="your-key" export MISTRAL_API_KEY="your-key"
export BFL_API_KEY="your-key" export BFL_API_KEY="your-key"
export OPENAI_API_KEY="your-key"
``` ```
2. Create a config file (e.g. `my-project.bulkgen.yaml`): 2. Create a config file (e.g. `my-project.bulkgen.yaml`):
@ -62,6 +63,7 @@ The config file must be named `<anything>.bulkgen.yaml` and placed in your proje
| Field | Description | | Field | Description |
|---|---| |---|---|
| `defaults` | Default model names (optional) | | `defaults` | Default model names (optional) |
| `archive_folder` | Directory to move previous outputs into before rebuilding (optional) |
| `targets` | Map of output filenames to their configuration | | `targets` | Map of output filenames to their configuration |
### Defaults ### Defaults
@ -127,6 +129,20 @@ targets:
bulkgen resolves dependencies automatically. If you build a single target, its transitive dependencies are included. bulkgen resolves dependencies automatically. If you build a single target, its transitive dependencies are included.
### Archiving previous outputs
Set `archive_folder` at the top level to preserve previous versions of generated files. When a target is rebuilt, the existing output is moved to the archive folder with an incrementing numeric suffix:
```yaml
archive_folder: archive
targets:
hero.png:
prompt: "A dramatic sunset over mountains"
```
On each rebuild of `hero.png`, the previous file is archived as `archive/hero.01.png`, `archive/hero.02.png`, etc. The archive directory is created automatically if it doesn't exist.
## CLI ## CLI
### `bulkgen build [target]` ### `bulkgen build [target]`
@ -201,5 +217,6 @@ The flake also exposes:
| Variable | Required for | | Variable | Required for |
|---|---| |---|---|
| `MISTRAL_API_KEY` | Text targets (`.md`, `.txt`) | | `MISTRAL_API_KEY` | Text targets via Mistral models |
| `BFL_API_KEY` | Image targets (`.png`, `.jpg`, `.jpeg`, `.webp`) | | `BFL_API_KEY` | Image targets via FLUX models |
| `OPENAI_API_KEY` | Text and image targets via OpenAI models |