---
name: seed-species
description: Use when adding species, re-running the curated seed, or curating new image sources. Triggers on "seed", "species", "ingest", "Wikimedia Commons", "iNaturalist", "license", "attribution".
---

# seed-species

## When to fire
Any change to `scripts/seed/`, the curated `species.py` list, or the licence / attribution policy.

## Read first
- [../../../docs/seed-data.md](../../../docs/seed-data.md) — sources, per-record contract, run modes
- [../../../scripts/seed/README.md](../../../scripts/seed/README.md) — how to run

## How to apply
- Every photo record carries `original_url`, `license` (SPDX), and `attribution`. No exceptions.
- Wikimedia is the primary source. iNaturalist (filtered to CC-BY / CC0 / CC-BY-SA) is the fallback. Anything else needs a doc update first.
- A failing photo lookup leaves the species in the catalogue *without* a photo, flagged in `seed-report.json`. It does not block the run.
- Idempotent by design: species matched on `scientific_name`, photos on `original_url`.

## Composes with
- `admin-flow` (the seed authenticates as admin).
- `embedding-sidecar` (every uploaded photo gets embedded; sidecar must be up).
