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

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.2
File Size Uploaded
griot-0.0.2.tar.gz 82.8 kB Details

Built distribution (wheel)

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

Total release size: 180.8 kB

Release files / griot-0.0.2.tar.gz

Download URL griot-0.0.2.tar.gz
Size 82.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9a7ff2f85429d9767d39bf61c32fbc7194cc2e57827c3d5d6431a582e92104ce
BLAKE2b-256 checksum
How to use checksums
f5205791cf4bc199b5b7e1ca3e3a4c2fdd8914506a01017f0a6146b1b1d943d2
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.2-py3-none-any.whl

Download URL griot-0.0.2-py3-none-any.whl
Size 98.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0d05e1701ceb362eea40680babd9fb30b4f70392618e59bf0cdf33d2868ff51e
BLAKE2b-256 checksum
How to use checksums
fd3e13d2fd57643200d0f3442eb899c1da8b726e62eb54bbb4bb71585bb31749
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

0.0.3

2 release files

This release

0.0.2 This release

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