Publishing now fails when a slide has no audio

1 hour ago

If you publish a presentation that another job wrote, a slide without audio used to get narrated at the last moment, inside the publishing job, before anyone could listen to it. Version 1.10 changes that. Writing and narrating stay upstream, and the publishing job now fails when the audio is missing.

Ask about this presentation

Chapters

  1. 0:00Publishing fails without audio
  2. 0:19What changes
  3. 0:38The new flag
  4. 0:57One less download
  5. 1:18What could break
  6. 1:38New example workflow
  7. 2:01Upgrade
Show transcript
  1. If you publish a presentation that another job wrote, a slide without audio used to get narrated at the last moment, inside the publishing job, before anyone could listen to it. Version 1.10 changes that. Writing and narrating stay upstream, and the publishing job now fails when the audio is missing.

    Slide text

    bisque-cloud/presenter · v1.10.0

    Publishing now fails when a slide has no audio

    write → narrate → publish
  2. Here is the difference. Before, the publishing job filled the gap on its own. It synthesized the slide and published whatever it produced. Now the run stops. The failure names every slide whose audio is missing for its text, voice and speed, and it happens before anything is created on Bisque.

    Slide text

    A missing slide is now a failed run

    Before

    The publishing job narrated the gap itself and shipped what it made.

    Now

    The run stops and names every slide whose audio is missing.

    “…before anything is created on Bisque.”

  3. The behavior lives in a new flag on the publish command, and this is what it prints when slides are missing. It lists each slide, then tells you to run narrate again with the same voice and speed after your last edit. You don't have to add the flag yourself. The action passes it whenever you use the presentation input.

    Slide text

    skills/present/scripts/present.mjs

    New: publish --require-audio

    ✗ the failure

    --require-audio: <n> narrated slide(s) have no audio in audio/ for their current text, voice and speed: <slide-02, slide-05>. Run `narrate` with the same --voice and --speed after the last edit.

    The action passes it for you in presentation: mode.

  4. A side effect is a lighter job. In presentation mode, publishing only uploads audio that already exists, so it no longer installs a speech engine. In action.yml, the install step now runs only when the presentation input is empty. That's one less binary to download and run on every publish.

    Slide text

    The publishing job downloads one less binary

    It no longer installs a speech engine.

    action.yml · Install bisque-voice

    - if: steps.proxy.outputs.missing-key != 'true'
    + if: inputs.presentation == '' && steps.proxy.outputs.missing-key != 'true'
  5. This is the part that can break a workflow. A folder with no narration at all used to produce a warning, and the publishing job narrated it. Now it fails the run. If your writing job skipped the narrate step, run it there, in the voice you want, after the last edit. Workflows that don't use the presentation input are not affected.

    Slide text

    Breaking · only workflows that use presentation:

    A folder with no narration now fails

    was · warning

    …so this job narrates.

    now · failure

    …this job publishes only the narration it is given.

    node present.mjs narrate --html index.html --voice kokoro:af_heart
  6. The release also adds an example workflow for teams that use an Anthropic API key. Claude writes the presentation in a read-only job. The folder moves as an artifact, and a separate job with no secrets, pinned to a commit, publishes it. It covers merged pull requests and minor or major releases. The Claude plan setup is unchanged.

    Slide text

    examples/split-explainer-api-key.yml

    Explain releases with an API key, in separate jobs

    write

    contents: read
    ANTHROPIC_API_KEY

    →artifact

    publish

    id-token: write
    no secret · pinned to a commit

  7. The v1 tag now points at this release, so you get it on your next run. To pin it instead, use this commit. One reason to hold off: if your writing job edits slides after it narrates, or publishes in a different voice or speed, the audio no longer matches and publishing will fail. That is the whole change: publishing now fails when a slide has no audio.

    Slide text

    bisque-cloud/presenter@v1 now points at v1.10.0

    Upgrade once narrate is the last thing your writing job runs

    to pin it

    bisque-cloud/presenter@1bcc1ea0f91811ae0a54d9ef70d6d493ad9132a0 # v1.10.0

    Wait if an edit follows narrate, or the voice differs.

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York