← All craftbooks

Animated Content Slideshow

Media: audio and videoevalv1.1.4released 2026-09-07workflow: build-loop

Turn written content into a real MP4 video and animated GIF with DocBlocks. Locks the story and one message per scene, writes one H1 per scene in slideshow.md, then performs one multi-target conversion, previews the frames, and saves both rendered files in the artifacts drawer — no hand-built HTML player.

Steps

Entry step: outline. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Outline the scenesplannerentry

    Lock the audience, story arc, one message per scene, and media acceptance criteria.

    Show working prompt
    Plan the animated slideshow before authoring it. 1. Identify the audience, viewing context, aspect/orientation, and one takeaway. 2. Draft 6-12 scenes unless the user requests another length: each scene needs a title, one message, 2-4 short on-screen points, and an optional caption line. 3. Mark where an existing image or small table genuinely helps; do not invent or download unapproved assets. 4. Choose landscape or portrait and a restrained motion style. 5. Write acceptance criteria: every outlined scene appears once and in order, text stays readable at video size, source facts remain grounded, frames show a consistent theme, the MP4 plays, the GIF loops, and both real files are saved in artifacts. Write {{workPath}}/outline.md and call write_task_note with scene count, orientation, and takeaway. Do not build HTML or media bytes.
    
    Store `{{workPath}}/outline.md` in the artifacts drawer with `write_artifact`, then verify it with `read_artifact`; do not write this working file to the workspace.
    
    Read an exact workspace DOCX, PPTX, PDF, or XLSX source with `read_doc_as_markdown`; use `read_file` for text or Markdown. Keep the original file path in citations. Never interpret binary bytes as text or substitute a similarly named file.
  2. Write the Markdown slideshowcopywriter

    Write {{sourceOutputPath}} with one H1 heading per scene.

    Show working prompt
    Write {{sourceOutputPath}} following {{workPath}}/outline.md. 1. Use exactly one `#` level-one heading per scene; each H1 is a deliberate scene boundary. Do not add `---` separators unless a visible horizontal rule is intended. 2. Under each H1, use 2-4 short bullet phrases, a compact table, or a brief caption—not paragraphs. 3. Bold the load-bearing fact or phrase. 4. Use only source-grounded facts and existing workspace assets with meaningful alt text. 5. Keep the first scene a title/setup and the final scene the takeaway or next action. 6. On loop-back, repair only the frames the reviewer names. Call write_task_note with the path and H1 scene count. Do not create HTML, JavaScript, MP4, GIF, or base64.
    
    Open `{{workPath}}/outline.md` from the artifacts drawer with `read_artifact` before working. Use the explicit content layout on every scene that has body content: `# Scene title {[content]}`. This keeps lists and tables visible in the native video export; an unannotated metrics-table scene can become a title-only card even when its Markdown preview contains the table. Prefer short before/after bullets for small screens; use a compact table only when it remains readable. Do not remove source facts to make a layout fit.
  3. Publish the video and GIFdesigner

    Convert the approved source, inspect and preview it, and save the real binary deliverables with review evidence.

    Show working prompt
    Publish the approved Markdown as real GIF and MP4 files. First call `list_roots` and read the approved `{{sourceOutputPath}}` with `read_file`; read `{{workPath}}/outline.md` with `read_artifact`. Use the read-enabled workspace root for the source and write-enabled artifacts root for outputs. Inspect the Markdown source with `inspect_document` and preview its scenes in batches of at most four.
    
    Render the two formats in SEPARATE `convert_document` calls so each has its own operation budget. Use source { "kind": "file", "rootId": <workspace root id>, "path": "{{sourceOutputPath}}" } and autoTemplates: true. For a landscape slideshow, start with targets: [{ "format": "gif", "width": 640, "height": 360, "fps": 6, "animationsEnabled": true, "loop": 0 }] and then targets: [{ "format": "mp4", "width": 960, "height": 540, "fps": 8, "animationsEnabled": true }]. For portrait, swap width and height. These are useful delivery defaults for animated text slides; honor an explicit user resolution/fps request within the tool's stated limits. On a runtime timeout retry the affected format once at lower dimensions/fps, then record the exact blocker. Use only fields listed in the tool schema; orientation is not an aspectRatio string and captions are controlled by captionStyle when requested.
    
    For EACH successful conversion, call `get_conversion_report` with its returned artifactUri, then `preview_document` with source { "kind": "artifact", "uri": <returned URI> } and maxItems: 1. MP4/GIF support native first-frame previews, not document-text import: do not call `inspect_document` on video or GIF bytes. Review scene content/order from the Markdown previews and report first-frame/native metadata separately. A first frame cannot prove full-video timing, motion, looping, or the final scene.
    
    Save the GIF to `{{workPath}}/slideshow.gif` and MP4 to `{{workPath}}/slideshow.mp4` with `save_artifact` in the artifacts root, initially using ifExists: "error". If replacing a previously saved output, use its previously returned saved hash as expectedSha256; if the hash is unavailable, record the blocker instead of guessing. Save each successful artifact before another step/process takes over. Use only current-session artifact URIs; reopen saved media with file sources for later preview. If source content fails, leave precise task notes and route to write; do not rewrite Markdown during publishing. Once BOTH files are saved, note the paths, hashes, diagnostics and playback-review limits, then advance to evaluate. Never substitute HTML, renamed Markdown or fabricated binary files. Before converting, confirm body-bearing scenes use the explicit `{[content]}` heading layout. If a table/list scene lacks it, route that precise authoring repair to write. Source previews and native exports can choose different default layouts, so a source-preview PASS alone does not establish native content survival.
  4. Evaluatereviewer

    Review saved-file integrity and content fidelity; document the limits of reconstructed or first-frame previews.

    Show working prompt
    Read `{{workPath}}/outline.md` with `read_artifact`, read `{{sourceOutputPath}}` with `read_file`, and read publishing notes with `read_task_notes`. Confirm the outlined scene count and order, supplied facts, short on-screen copy, and final next actions. Use `list_roots` and `inspect_document` on the Markdown source, with source previews when helpful. Reopen the saved `{{workPath}}/slideshow.mp4` and `{{workPath}}/slideshow.gif` using file sources from the artifacts root and `preview_document`; do not import media bytes through `inspect_document`. These native-extracted images show the first frame only. Check the recorded conversion options and save hashes, and distinguish source scene coverage from actual full playback. First-frame-only verification is a disclosed limitation, not by itself a content failure. Use `write_task_note` for the review, with explicit PASS/FAIL criteria, evidence, and any unverified playback properties. Route content defects to write and missing/corrupt outputs to publish. Advance only when the requested files exist and the supported checks pass; do not claim full animation or loop playback was visually reviewed. On PASS, call `advance_task_step` with next: "finish". Use next: "write" only for an identified source-content failure, or next: "publish" for an identified conversion/save failure.
  5. Finishdesigner

    Deliver the saved files with the recorded review evidence and limits.

    Show working prompt
    Read the review evidence with `read_task_notes`. Write a concise DONE summary naming the editable Markdown source `{{sourceOutputPath}}` and the saved deliverables `{{workPath}}/slideshow.gif`, `{{workPath}}/slideshow.mp4`. Include available native counts and the preview basis, and carry forward any native-layout or playback properties that remain unverified. Do not open binary files with `read_artifact` or claim an unavailable check passed.

Triggers

Phrases that suggest this craftbook to a crew.

Toolsets

Source

View this craftbook on GitHub · MIT license