An API. Give it a YouTube URL. It returns what was on screen, what was said, how it was said, and what was pointed at.
Free. No account. The first three minutes of any public YouTube video.

Fig. A.1 — Left, the video. Right, what was seen, said, and pointed at, in sync.
A transcript keeps the words and drops the rest. The slide behind the speaker. The line of code on screen. The URL in the address bar. What “this” meant when someone pointed at it. Which word was stressed, and where the pause fell. On an 8-minute podcast, a language model answered 62.9% of 31 verified questions from the transcript alone. From the Screensay document, 96.8%.
The transcript
Everything it left out
Fig. A.2 — One minute of video. The transcript, then everything it left out.
Screensay returns one document per video. The text on screen, exact. Slides, interfaces, code. The words spoken and the tone they were spoken in. What the speaker pointed at. The moments worth remembering, and chapters. Every entry carries a timestamp, so screen and speech line up. Two forms: JSON for your code, and a screenplay, a script-like text that language models read naturally.
{
"id": "utt_0028",
"t0": 193.4, "t1": 201.7,
"spk": "spk_01",
"text": "Well, it was until I started using
today's sponsor more, Clerk. …",
"delivery": { "read": "promotional",
"contour": "rising" }
}
{
"id": "pt_0011", "t": 194.8,
"phrase": "today's sponsor",
"target": "txt_0301",
"target_text": "clerk",
"how": "screen_match"
}
Fig. A.3 — One video, two forms. JSON for code, screenplay for models. Same timestamps.
It was never written down. Text, they read. Code, they read. A video is an hour of screen, speech, and gesture that only makes sense together, and its one written record has been the transcript. So models have treated video as speech with a thumbnail. Whatever lived on screen, and whatever was carried by how a thing was said, never reached the answer. When a video becomes a document, that ends. A model can quote the slide. It can find the minute the demo broke. It can say what “this” was. What the viewer knew is on the page, and a page can be searched.
One call, one video, one document back. For agents there is an MCP server for Claude Code, Claude Desktop, and Cursor. Its tools include watch_video, which returns the whole document, and ask_video, which takes a question about a video and returns an answer. Webhooks send the finished document to your system when it is ready. Your agent does not have to poll.
You
Today
Screensay
Fig. A.4 — An agent in Claude Code calls ask_video and reads the answer.
Give Screensay a YouTube channel and it keeps watching. Every new upload arrives as a document, with the same screen text, speech, tone, and timestamps as a single request. Nothing to schedule. Nothing to fetch. A research team can follow a conference channel. A support team can index every product walkthrough without anyone pasting a URL. The archive writes itself, one upload at a time.
Each document delivered to your webhook the minute it was ready. Nothing pasted, nothing polled.
Fig. A.5 — A channel under watch. Three new uploads, three new documents.
Today Screensay takes a YouTube URL. That is the product, and it is what the preview, the API, the MCP server, and channel monitoring all run on. Uploads and private video are coming. Meeting and screen recordings are coming. Live streams are coming. We do not promise dates. Until one ships, it is a plan, not a product, and this page will say which is which.
Public videos by URL. The preview, the API, the MCP server and channel monitoring all run on it.
Public videos by URL. The preview, the API, the MCP server and channel monitoring all run on it.
Fig. A.6 — Four sources. YouTube is built. The other three are plans.
Paste a YouTube URL. The first three minutes come back as a document.