Skip to main content

griot

Research a subject, then write the spoken commentary about it — reusable, parametrized writers for braidio productions.

A griot knows the record and performs it. griot does the two halves that come before a production is voiced: research (free, tokenless fetchers that turn a topic into a dossier of sourced evidence) and writing (named writers that turn the dossier into a gated braidio.Script, plus one picture hint per beat for the film that goes over it).

pip install griot
import griot

w = griot.get_writer("song")  # general | technical | song
dossier = griot.research(
    "The Sound of Silence by Simon & Garfunkel", researchers=w.researchers
)
q = griot.quote(w, dossier, minutes=3)  # priced before anything runs
draft = griot.write(
    w, dossier, minutes=3
)  # one LLM call (+ one gated revision), cached
draft.script  # a braidio.Script — voice it with braidio.weave_project
draft.picture_hints  # one per beat, with why
draft.ok, draft.report  # the gates' verdict and findings

Or from the shell: python -m griot write "Trinity Church Manhattan" --writer general --out draft.json (--fake runs the whole path with no key and no spend).

Why writers

Three commentary films were written by a frontier model in a session, from Genius annotations, Wikipedia and LRCLIB timings, and rewritten after two complaints that each came with a measurement: too many designed turns of phrase reads as machine-written (kitsch), too few [audio tags] reads as flat (somniferous). A writer here is that craft, made reusable: a brief, a braidio format's own scripting guidance, two to four critic voices blended from a style library, the anti-platitude checklist, the house rules, and gates that send a draft back once before it is voiced.

writer for researchers
general any subject — a book, a film, a place, a person, an idea wikipedia
technical how a mechanism, method or result works wikipedia
song one song: what it says, how it is built, the recording's story genius, wikipedia, lrclib

A fourth writer is one Markdown file in griot/data/writers/, or griot.register_writer(griot.Writer(...)).

Research

Every fact carries its source URL. What could not be found is recorded and the writer is told — it never substitutes the nearest match. wikipedia needs nothing; lrclib needs "<song> by <artist>"; genius works through the official API when GENIUS_ACCESS_TOKEN is set and records a miss otherwise (its tokenless public API is refused by Cloudflare as of 2026-09-25 — lyrics then come from LRCLIB, annotations are unavailable).

Cost

quote() composes the exact falaw plan write() runs, so the price is known before the call, an unpriced model reads as unknown rather than free, and the call is content-cached — the same inputs never bill twice.

Where it sits

griot → braidio.Script → braidio voices it → illustration finds the pictures the hints ask for → braidio's picture track cuts the film → reelee runs all of it as one job from the studio. griot imports braidio and falaw; nothing imports griot but the application layer.

Release files for griot 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for griot 0.0.4
File Size Uploaded
griot-0.0.4.tar.gz 84.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for griot 0.0.4
File Interpreter ABI Platform
griot-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 182.4 kB

Release files / griot-0.0.4.tar.gz

Download URL griot-0.0.4.tar.gz
Size 84.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dae631f944a8114be36234041ffa8f61ed19cfacaf4af5ba627bbad70bdbfe59
BLAKE2b-256 checksum
How to use checksums
9b80198c212da17744223619d36c1a2033af88f8f0039d734716d73a0461f10a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / griot-0.0.4-py3-none-any.whl

Download URL griot-0.0.4-py3-none-any.whl
Size 98.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c982510bc73e17c8f0992df6f6cb91327835a230f64aafb50b7d5e247be5d26
BLAKE2b-256 checksum
How to use checksums
83a028c37ca1cae0f8bf3b7c5be41a3132947505dc18deea82161be8033425ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page