Skip to content

T04 — A recorded briefing to a story, a picture, a voice and posts in three languages

A science magazine’s website gets the recording of a briefing: NASA’s Administrator and three astronauts on the Artemis programme, six minutes, in English. By the evening the editor wants a story, a picture to go with it, posts for the social channels in the magazine’s three languages and a short audio version for the newsletter — and every quotation exactly as it was said. This workflow makes the whole package in one run.

The workflow in three stages. 1, listen once: the briefing, six minutes of interviews with four speakers, 6; Transcribe once, Speech to Text with lines and speakers, 108 lines and 4 voices; All that was said, every line joined for checking, one running text. 2, write the package: Write the package, AI with the story, the quotations, the posts, a script and a picture idea, one JSON; Package complete, a JSON Schema on every part, the lengths and no quotation marks, valid; Each quotation, found, Replace counts it in what was said and a Filter keeps it, 3 of 3 found. 3, deliver: Posts in three languages, LinkedIn and X in English, Italian and Spanish, 6 posts; Header and voice, Text to Image at 16 and Text to Speech, 1376×768 and 44 seconds; The story, Markdown with headline, body and the quotations found, about 400 words.

The briefing:

The reference run — 10.76 credits:

Delivered What is in it
The story Markdown: headline, standfirst, six paragraphs, In their words with three quotations, the source
Header picture 1376×768, an editorial illustration of the Moon
Audio summary MP3, 44 s, from a 102-word script
Posts LinkedIn and X, in English, Italian and Spanish
Quotations checked each quotation, who said it, and how many times it was found
Transcript 108 lines with their times and four speakers

The header picture: a painterly lunar landscape in cold light, mountains and deep craters, a small lander on the surface and a spacecraft above it.

The story begins:

Artemis Sets Its Sights on a Sustainable Moon and Mars

NASA describes Artemis as a return to the Moon that could test reusable systems, use lunar resources and prepare astronauts for eventual journeys to Mars.

NASA’s Administrator says the Artemis program is intended to build on Apollo while pursuing a different kind of lunar return. …

and ends with the quotations, each found in what was said:

“So what we’re doing is we’re going to Mars, and the moon is the way to get to Mars.”

— NASA’s Administrator, on the Moon as a step to Mars

The posts on X, in three languages:

en — Artemis aims to make the Moon a proving ground: for reusable spacecraft, lunar resources, sustained operations and the technologies needed for Mars.

it — Artemis vuole trasformare la Luna in un banco di prova: per veicoli riutilizzabili, risorse lunari, operazioni durature e tecnologie dirette verso Marte.

es — Artemis quiere convertir la Luna en un campo de pruebas: para naves reutilizables, recursos lunares, operaciones sostenidas y tecnologías rumbo a Marte.

The recording is NASA’s Artemis Media Resource — Interview Soundbites (2019, public domain; NASA does not endorse this example), cut as for the dubbing example: the Administrator from 0:02 to 3:00, then three astronauts, one at a time. NASA’s material does not name them, so the workflow does not either: the brief says NASA’s Administrator, then three NASA astronauts, and the story attributes by role. The magazine, Orbit Weekly, is fictional.

Input Who provides it Example
The briefing the recording, as a video 6 min 13 s, 640×360
The editor’s brief the editor: the publication, its readers, who speaks, the source line one JSON object
  • Listen once. Speech to Text (ElevenLabs Scribe V2) transcribes the six minutes in one pass, with a speaker label per voice: 108 lines, four speakers. Everything else reads that transcript. See Transcription and captions.
  • One step writes the whole package. Text Generation reads the brief and the transcript and returns one JSON object: headline, standfirst, the story, three quotations with who said them and what about, the posts in English, Italian and Spanish, a script for the voice, and an idea for the picture. A schema checks every part, its length, and that the story and the posts contain no quotation marks — the only words in quotation marks are the ones the workflow checks. See Structured answers.
  • A quotation is printed only if it was said. For each quotation a Replace Text counts it in the transcript, a Predicate asks for at least one, and a Filter lets it into the story. A quotation that was not said word for word — a paraphrase, a tidied sentence, two remarks run together — is left out and listed in Quotations left out. The story’s last line says so: Every quotation was found word for word in the transcript.
  • Check against what was said, not line by line. The transcription cuts speech into lines, and one sentence can fall across two: And by doing that, / we create a better life here on Earth. Checked line by line, that true quotation was not found. The check now reads all that was said — every line joined into one running text with Concatenate Text (aggregate/concat_text) — and finds it.
  • The words are the model’s; the picture and the voice follow them. The picture’s idea goes through a Text Template that adds the magazine’s direction — editorial illustration, deep blues and warm light, no people, no text, no logos — before Text to Image; the script is read by Text to Speech. See Prompts for AI steps.

Building it taught three things the workflow now does:

  • A long answer needs room. The package is one long JSON answer. With Max Tokens left at the default, the model spent the whole budget reasoning and returned nothing (AI_RESPONSE_INCOMPLETE); the node now has Max Tokens 8000 and Reasoning Effort low. See Writing with a model.
  • The schema must allow what is true. A real, short quotation was under the first minimum of 40 characters and stopped the run; the minimum is now 20.
  • Say what you want, down to the case. on The Moon as Mars preparation became on the Moon as a step to Mars once the brief asked for the topic in lower case, with an example.

The figure above tells the workflow as stages; the exact graph is the workflow (as a diagram), node by node in the table.

Node Type Why
The briefing / The editor’s brief input/video, input/json_value The recording; the publication, its readers, who speaks, the source
The speech / Transcribe, in one pass video/extract_audio (speech), ai/speech_to_text (Scribe V2, lines, speakers) The transcript with its speakers
The transcript as text text/format json The transcript for the writer, with the speaker labels
Each line of speech / What was said, as one text enumerate/json on cues, aggregate/concat_text Every line joined, for the check
Publication, Audience, Who speaks, Source utility/extract ×4 The brief’s fields
Brief for the writer / Write the package text/template, ai/text_generation JSON mode, Max Tokens 8000, Reasoning Effort low The story, the quotations, the posts, the script, the picture’s idea
The package is complete utility/json_schema_validate, fail Every part; lengths; no quotation marks in the story and the posts
Headline, Standfirst, Body, Social, Audio script, Image idea, Quotes utility/extract ×7 The parts
Each quotation / Find it in the transcript / Found word for word enumerate/json, text/replace (count), utility/predicate (≥ 1) Each quotation counted in what was said
The quotation, set / Only a quotation that was said / A quotation not in the transcript text/template, utility/filter, utility/filter inverted The quotation in Markdown, kept or listed
The quotations that were said / Quotations checked / Quotations left out aggregate/concat_text, aggregate/json ×2 The block for the story; the report
The story, in Markdown text/template Headline, standfirst, body, In their words, the source
Direction for the picture / Paint the header text/template, ai/text_to_image 16:9 The header picture
Read the summary aloud ai/text_to_speech (ElevenLabs Turbo v2.5) The audio summary
Outputs output/text ×2, output/image, output/audio, output/json ×4 The story, the script, the picture, the voice, the posts, the quotations checked and left out, the transcript

Reading a run: Quotations checked gives, for each quotation, how many times it was found in what was said; a 0 means it was left out of the story and appears in Quotations left out.

Cost: 3.5 credits to transcribe six minutes (0.5 a started minute), 0.21 to write the package, 5 for the picture, 2.06 for 44 seconds of voice — 10.76 in all. Without the picture, under 6.

The example installs into your workspace with an API key, through the public API only — see Installing an example. It uploads the briefing:

Terminal window
node madoo-install-example.mjs t04-briefing-to-story --api <your Madoo API URL> --key <key.json> --run

--run makes the package (about 11 credits). To make your own, run the workflow with your recording and your brief.

  • Names: when the speakers are known, the brief can name them — Jane Doe, the mayor, speaks first — and the writer attributes by name. Keep the names in the brief, not in the model’s memory.
  • Your languages: the posts’ languages are keys in the writer’s brief and its schema: add fr or de, or post only in one.
  • A longer recording: an hour transcribes in one pass; past that, cut it into segments and join the transcript, as in Long recordings.
  • No picture: disconnect Paint the header and use a frame of the video or a photo of your own; the run costs under 6 credits.
  • A newsletter instead of a story: change the writer’s brief; the check on quotations stays as it is.

manifest · workflow · the complete graph · the brief · the briefing