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.3

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.3
File Size Uploaded
griot-0.0.3.tar.gz 83.6 kB Details

Built distribution (wheel)

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

Total release size: 181.9 kB

Release files / griot-0.0.3.tar.gz

Download URL griot-0.0.3.tar.gz
Size 83.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c8c12133a75d3b458299358b1c1b098075f792b04c6b8c0dc2b1dbe3a94555c7
BLAKE2b-256 checksum
How to use checksums
c43c726bd7e9b3bf85ff6603932c518d2b5e7bb673a4ce05747a717ed2be17ee
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.3-py3-none-any.whl

Download URL griot-0.0.3-py3-none-any.whl
Size 98.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6690f4509afe02bf2378369d994b23e97cfd8733065c4f359837308131af6d37
BLAKE2b-256 checksum
How to use checksums
28d1692e99ce05bc02803e94e7c4aac83a053d9a9fe39ae4f3fe3e2e4e147bd6
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

0.0.4

2 release files

This release

0.0.3 This release

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