Bird plates that JoeBird frames have
already generated, so yours does not have to. When a frame hears a species it
cannot draw it looks here first; a hit is downloaded, its hash checked against
index.json, and installed - no OpenAI token spent. Only then does it generate
its own.
Every image here is AI-generated, in one consistent style: a single adult bird
in side profile, drawn as a nineteenth-century natural-history plate, cut out
with an ivory halo ready for the frame's paper. Nothing is a scan, a photograph
or anyone's artwork. See ATTRIBUTION.md for what that means.
birds/<key>.png the plates, named by BirdNET's scientific name, -2 -3 for variants
birds/<key>.json optional, beside a plate: its manifest entry (model, etc.)
index.json species key -> files, with sha256 - what a frame reads; generated
manifest.json per-file record, the same shape the frame keeps; generated
tools/ build_index.py rebuilds the two generated files; a workflow runs it on merge
LICENSE CC0 1.0
A frame points at this repository's raw URL by default:
BIRDART_LIBRARY=https://raw.githubusercontent.com/skyjoe66/joebird-library/main
Any repository with the same layout works in its place.
Your frame already made it; put it where the next frame can find it. There are two ways, and they end in the same place: a pull request here, which the library's owner looks at and merges.
Open your frame's gallery - http://<pi>/birdart/gallery - and press
Send to library under the plate. The bot adds the file, its manifest line
and a rebuilt index.json on a branch and opens the pull request under your
GitHub account. It needs GitHub's gh on the Pi, logged in once:
sudo apt install gh # Raspberry Pi OS / Debian; other systems: github.com/cli/cli#installation
gh auth login # GitHub.com -> SSH -> "Login with a web browser": enter the code it showsIf you can push to this repository the branch goes here; otherwise gh forks
it under your account and the branch goes there. Either way the gallery shows
the pull request's link afterwards, and in the shared library once it is
merged. A plate the library already has offers no button.
No gh, no terminal, no clone - a browser and a GitHub account.
- Get the picture off your frame. Open the gallery,
http://<pi>/birdart/gallery, right-click the plate and Save image. It saves under its proper name, e.g.agelaius-phoeniceus.png. Keep that name. - Fork this repository - the Fork button at the top of this page - and
in your fork open the
birdsfolder. Choose Add file -> Upload files, drop the PNG in, and commit. (If the species is already there, name yours<key>-2.png,-3.png- the next free number.) - Open a pull request from your fork to this repository's
main- GitHub offers the button as soon as your fork is ahead. Say which bird it is.
That is all. manifest.json and index.json are rebuilt automatically when
the pull request is merged (tools/build_index.py, run by the index
workflow), so a contribution never edits a file another contribution might be
editing too.
Every pull request notifies the owner. It shows the plate itself - GitHub
renders the image in the diff - and a one-line description. The owner checks
that it is the right species, whole, with both legs, and in the style, then
merges or closes it. On merge the index workflow rebuilds index.json;
within an hour every JoeBird frame reads it, and the next frame to hear that
bird downloads your plate instead of generating its own.
By opening a pull request, either way, you confirm the image was generated by your JoeBird - not scanned, not drawn by hand, not taken from anywhere - and you dedicate it to the public domain under CC0, the same as everything here.
A plate that does not look like the others, or whose bird is wrong, will be turned down; the point of a shared library is that every frame can trust what it gets.
CC0 1.0 - the full text is
in LICENSE. Use them for anything, no credit required.