From daida-ai
A skill that auto-generates presentation materials for talks (from LTs to 30-min talks). From a theme, it creates an outline, generates PowerPoint/ODP slides, writes talk scripts (speaker notes), synthesizes speech, embeds audio, and exports MP4 video — all in one pipeline. Use cases: (1) Generate a full presentation from a talk theme, (2) Create slides from an existing outline, (3) Add talk scripts to slides, (4) Synthesize speech from scripts and embed into slides, (5) Export the presentation as a video. Triggers: LT, lightning talk, presentation, slides, talk script, relief pitcher, speech synthesis, lecture, video, MP4, 代打, プレゼン作成, スライド作成, 登壇, ライトニングトーク, 音声合成, 講演, 動画。
How this skill is triggered — by the user, by Claude, or both
Slash command
/daida-ai:relief-pitcher-aiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Executes the full pipeline from theme input to a finished presentation.
assets/pronunciation_dict.tsvassets/templates/casual.pptxassets/templates/formal.pptxassets/templates/tech.pptxreferences/pptx-guide.mdreferences/talk-styles.mdreferences/tts-plugins.mdscripts/convert_format.pyscripts/create_slides.pyscripts/create_templates.pyscripts/embed_audio.pyscripts/enrich_outline.pyscripts/export_tts_script.pyscripts/generate_image.pyscripts/generate_outline.pyscripts/lib/__init__.pyscripts/make_slideshow.pyscripts/make_video.pyscripts/run.shscripts/setup.shExecutes the full pipeline from theme input to a finished presentation. Up through Step 6 (slideshow configuration), the output is a complete PPTX. Step 7 can additionally export as an MP4 video, but requires extra external tools (LibreOffice, ffmpeg). Since many users do not need video, after completing Step 6, confirm whether video is needed; if not, skip Step 7.
When the user asks "help", "how to use", "show me the workflow", etc., display the following pipeline diagram:
╔══════════════════════════════════════════════════════════════╗
║ Relief Pitcher AI Pipeline ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ Step 1 Theme → Outline (Markdown) ║
║ │ ║
║ Step 1.5 Outline → Slide Spec (JSON) ║
║ │ ║
║ Step 1.7 Image Generation (SVG / Gemini) ── Optional ║
║ │ ║
║ Step 2 Slide Spec → PPTX Generation ║
║ │ ↕ User can review & edit the PPTX ║
║ Step 3 Talk Script Update ──────────── Optional ║
║ │ ║
║ Step 4 Dict → TTS Script → Speech Synthesis ║
║ │ ↕ User can review & edit pronunciation ║
║ Step 5 Audio Files → Embed into PPTX ║
║ │ ║
║ Step 6 Slideshow Auto-Play Configuration ║
║ │ ║
║ ▼ ║
║ Done! presentation_final.pptx ║
║ │ ║
║ Step 7 MP4 Video Export ───────────── Optional ║
║ │ (with automatic validation) ║
║ ▼ ║
║ Video! presentation.mp4 ║
║ ║
╠══════════════════════════════════════════════════════════════╣
║ Templates: tech / casual / formal ║
║ TTS: edge (default) / voicevox ║
║ Output: PPTX / ODP (conversion option) / MP4 (video option) ║
╚══════════════════════════════════════════════════════════════╝
Additional notes (display alongside the pipeline diagram when showing help):
↕ allow the user to manually edit and go backOn first run, execute the setup:
bash ${CLAUDE_SKILL_DIR}/scripts/setup.sh
setup.sh installs Python dependencies and then automatically checks availability of video generation tools (LibreOffice, ffmpeg, pdftoppm).
If any tools show [--] in the output, and the user wants video output, guide them through installation.
If video is confirmed unnecessary, the tool-not-found warnings can be ignored.
All Python scripts are run via the run.sh wrapper (automatic venv resolution):
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh <script_name.py> [args...]
Confirm with the user:
Confirm the output directory with the user (default: ./output/)
At the start of the workflow, confirm whether MP4 video is also needed. If the AskUserQuestion tool is available, always use it to confirm.
After the PPTX is complete, you can also export it as an MP4 video (Step 7). Video export requires LibreOffice and ffmpeg to be installed. Would you like to create a video as well? (We can skip it if not needed.)
setup.shAfter the user edits intermediate files (PPTX, TTS scripts, etc.), the workflow can be resumed from a specified step.
When the user says "I want to redo from Step N":
| Resume Step | Required Input | Typical Use Case |
|---|---|---|
| Step 1 | Theme (verbal) | Start over from scratch |
| Step 1.5 | output/outline.md | Manually edited the outline |
| Step 1.7 | output/slide_spec.json | Manually edited the JSON spec |
| Step 2 | output/slide_spec.json | Manually edited the JSON spec |
| Step 3 | output/presentation.pptx | Manually edited the PPTX |
| Step 4 | output/presentation.pptx | Changed scripts / want to fix pronunciation |
| Step 5 | output/presentation.pptx + output/audio/ | Replaced audio files |
| Step 6 | output/presentation_with_audio.pptx | Edited the audio-embedded PPTX |
| Step 7 | output/presentation_final.pptx + output/audio/ | Want to regenerate the video |
Common interruption patterns:
--script)--engine)Gather the following from the user:
Generate a Markdown outline with the following structure:
# Presentation Title
## Introduction
- Point 1
- Point 2
## Main Topic 1: Section Name
- Point
- Point
## Main Topic 2: Section Name
- Point
- Point
## Summary
- Point
Guidelines:
Save the generated Markdown to a file, then pass it to the script:
# First save the outline Markdown to a file (using the Write tool)
# Then use the script to save to the designated path
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh generate_outline.py output/outline.md --stdin < output/outline_draft.md
Read the outline generated in Step 1 and create a slide spec JSON following these guidelines:
Enrichment guidelines:
two_content layout when there are comparisons or contraststitle_only + code block in the notetitle_slidesection_header for section dividersConfirm with the user:
tech (default) / casual / formallow / medium (default) / highAdjust the proportion of slides with an image field according to the density level.
| Density | % of slides with image | Guideline |
|---|---|---|
| Low | ~20% (1-2 out of 10) | Key diagrams only. Primarily text and bullet points |
| Medium | ~40% (3-4 out of 10) | One diagram per section. Moderate use of flowcharts and comparison charts |
| High | ~60% (5-6 out of 10) | Visual elements on nearly every slide. Actively use architecture diagrams, charts, and illustrations |
Default density by template (determined in Step 1.5):
| Template | Default Density |
|---|---|
tech | Medium |
casual | Medium |
formal | Low |
If the user explicitly specifies a density, use that. Otherwise, use the template default.
Reference: Talk style and recommended density (selected in Step 3):
| Talk Style | Recommended Density |
|---|---|
casual | Medium |
keynote | High |
formal | Low |
humorous | Medium |
Talk style is selected in Step 3, so at the Step 1.5 stage, use the template default. Templates and talk styles that share a name (casual, formal) correspond to the same density.
{
"metadata": {
"title": "Presentation Title",
"subtitle": "Speaker Name",
"event": "Event Name",
"template": "tech"
},
"slides": [
{
"layout": "title_slide",
"title": "Presentation Title",
"subtitle": "2026/03/10 @ Event Name - Speaker Name",
"note": "Hello everyone. Today I'll be talking about X."
},
{
"layout": "section_header",
"title": "Section Name",
"note": "Let's start by looking at X."
},
{
"layout": "title_and_content",
"title": "Slide Title",
"body": ["Point 1", "Point 2", "Point 3"],
"note": "Talk script (speaker notes)"
},
{
"layout": "two_content",
"title": "Comparison Title",
"left": {"heading": "Left Heading", "body": ["Item 1", "Item 2"]},
"right": {"heading": "Right Heading", "body": ["Item 1", "Item 2"]},
"note": "Talk script"
},
{
"layout": "title_only",
"title": "Diagram / Code Slide",
"note": "Explanation for this slide"
},
{
"layout": "title_only",
"title": "Architecture Diagram",
"image": "images/architecture.png",
"note": "This diagram shows the overall system architecture"
},
{
"layout": "blank",
"image": "images/fullscreen_photo.jpg",
"note": "This photo shows the project results"
}
]
}
Available layouts: title_slide, section_header, title_and_content, two_content, title_only, blank
Image insertion: Specify an image file path in the image field to insert an image into the slide.
output/slide_spec.json, then images/foo.png resolves to output/images/foo.png)title_only (title + diagram), blank (fullscreen diagram)Important: All slides must include a talk script (speaker notes) in the note field (including title_slide and section_header). Slides without notes will have no audio generated and will advance quickly (3 seconds) during the slideshow. Notes can be updated in Step 3, but generate a first draft here.
Save the generated JSON to a file, then pass it to the script (piping via echo may fail for large JSON):
# First save the slide spec JSON to a file (using the Write tool)
# Then run the script for validation & saving (specify duration with --duration)
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh enrich_outline.py output/slide_spec.json --stdin --duration 5 < output/slide_spec_draft.json
For a 15-minute talk:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh enrich_outline.py output/slide_spec.json --stdin --duration 15 < output/slide_spec_draft.json
--duration automatically adjusts the slide count limit and estimated speaking time limit.
Generate images when you want to include diagrams or illustrations in slides.
Follow this flowchart to decide the method:
1. Is GEMINI_API_KEY set?
├─ No → Generate everything as SVG (see "SVG Generation" section below)
└─ Yes → Go to 2
2. What is the image content?
├─ SVG-suited (see list below) → Go to "SVG Generation" section
└─ Nano Banana-suited (see list below) → Go to "Nano Banana" section
Use SVG for images matching the following. No API key needed, instant generation, editable.
Use Nano Banana for images matching the following. Requires GEMINI_API_KEY.
When in doubt, use SVG. SVG can be generated instantly and is easy to edit. Use Nano Banana only when you need "realism that SVG cannot express."
16:9 / 4:3 / 1:1), resolution (1K / 2K / 4K)Prerequisites: GEMINI_API_KEY environment variable
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh generate_image.py \
--prompt "A professional conference stage with spotlight, modern tech event atmosphere" \
--output output/images/slide1_background.png \
--aspect-ratio 16:9 \
--size 1K \
--model pro
| Alias | Model ID | Use Case |
|---|---|---|
pro | gemini-3-pro-image-preview | High quality, complex prompts, text rendering |
flash | gemini-3.1-flash-image-preview | Fast generation, bulk generation |
legacy | gemini-2.5-flash-image | Legacy model |
After generation, show the image to the user with the Read tool and adjust the prompt as needed.
You (Claude) generate SVG code directly.
SVG files can be specified directly in the slide spec JSON image field (automatically converted to PNG at build time).
Prerequisites: cairosvg must be installed (auto-installed if setup.sh has been run). If not installed:
pip install cairosvg
output/images/ using the Write toolimage fieldcreate_slides.py runs in Step 2Manual conversion is not needed. However, if you want to preview beforehand:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh svg_to_png.py input.svg output.png
| Use | viewBox | Description |
|---|---|---|
| Full slide | 0 0 1920 1080 | 16:9, suited for blank layout |
| Content area | 0 0 1200 900 | 4:3, suited for title_only layout |
| Icon / Logo | 0 0 400 400 | 1:1 |
SVG font-size is in px units within the viewBox coordinate system, but when embedded in PPTX, the image is scaled down, so the actual display size is determined by:
rendered_pt = f_svg × display_w_emu / (viewBox_w × 12700)
display_w_emu = min(max_w, max_h × viewBox_w / viewBox_h)max_w = slide_w − 2 × 457200 (left/right margins)max_h = slide_h − img_top − 457200 (title_only: img_top=1600200, blank: img_top=457200)12700 = EMU per 1pt (OOXML standard)Minimum standard for presentation materials: 12pt. Follow these minimum SVG font-size values:
| viewBox | Layout | Min font-size | Recommended body | Recommended heading |
|---|---|---|---|---|
1920×1080 | title_only | 35 px | 40 px | 56 px |
1920×1080 | blank | 28 px | 32 px | 48 px |
1200×900 | title_only | 29 px | 32 px | 48 px |
1200×900 | blank | 24 px | 28 px | 40 px |
Note: Font sizes in SVGs are automatically validated when
create_slides.pyruns. A warning will be output if any text falls below the minimum.
| Template | Background | Accent 1 | Accent 2 | Text |
|---|---|---|---|---|
| tech | #1E293B | #38BDF8 | #818CF8 | #E2E8F0 |
| casual | #FFF8F0 | #FF6B35 | #06D6A0 | #2D3748 |
| formal | #FFFFFF | #1B2D45 | #C49B66 | #1B2D45 |
Note: Always specify font-family="sans-serif" for fonts. cairosvg automatically injects a Japanese font fallback, so Japanese text will not display as tofu (□). If font-family already contains Hiragino / Yu Gothic / Noto Sans CJK JP, injection is skipped.
Flowchart (3 steps):
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 1080">
<rect width="1920" height="1080" fill="#1E293B"/>
<defs>
<marker id="arr" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0,10 3.5,0 7" fill="#818CF8"/>
</marker>
</defs>
<!-- Step 1 -->
<rect x="160" y="420" width="400" height="160" rx="16" fill="#38BDF8"/>
<text x="360" y="510" text-anchor="middle" fill="#1E293B"
font-size="40" font-family="sans-serif" font-weight="bold">Step 1</text>
<!-- Arrow 1→2 -->
<line x1="560" y1="500" x2="720" y2="500" stroke="#818CF8" stroke-width="4" marker-end="url(#arr)"/>
<!-- Step 2 -->
<rect x="760" y="420" width="400" height="160" rx="16" fill="#38BDF8"/>
<text x="960" y="510" text-anchor="middle" fill="#1E293B"
font-size="40" font-family="sans-serif" font-weight="bold">Step 2</text>
<!-- Arrow 2→3 -->
<line x1="1160" y1="500" x2="1320" y2="500" stroke="#818CF8" stroke-width="4" marker-end="url(#arr)"/>
<!-- Step 3 -->
<rect x="1360" y="420" width="400" height="160" rx="16" fill="#38BDF8"/>
<text x="1560" y="510" text-anchor="middle" fill="#1E293B"
font-size="40" font-family="sans-serif" font-weight="bold">Step 3</text>
</svg>
Comparison Chart (Before / After):
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 1080">
<rect width="1920" height="1080" fill="#1E293B"/>
<!-- Before -->
<rect x="80" y="120" width="840" height="840" rx="20" fill="#334155" stroke="#475569" stroke-width="2"/>
<text x="500" y="200" text-anchor="middle" fill="#EF4444"
font-size="56" font-family="sans-serif" font-weight="bold">Before</text>
<text x="500" y="400" text-anchor="middle" fill="#94A3B8"
font-size="40" font-family="sans-serif">3 hours manual</text>
<text x="500" y="460" text-anchor="middle" fill="#94A3B8"
font-size="40" font-family="sans-serif">Error-prone</text>
<text x="500" y="520" text-anchor="middle" fill="#94A3B8"
font-size="40" font-family="sans-serif">Person-dependent</text>
<!-- After -->
<rect x="1000" y="120" width="840" height="840" rx="20" fill="#334155" stroke="#38BDF8" stroke-width="2"/>
<text x="1420" y="200" text-anchor="middle" fill="#38BDF8"
font-size="56" font-family="sans-serif" font-weight="bold">After</text>
<text x="1420" y="400" text-anchor="middle" fill="#E2E8F0"
font-size="40" font-family="sans-serif">5 min automated</text>
<text x="1420" y="460" text-anchor="middle" fill="#E2E8F0"
font-size="40" font-family="sans-serif">Consistent quality</text>
<text x="1420" y="520" text-anchor="middle" fill="#E2E8F0"
font-size="40" font-family="sans-serif">Anyone can run it</text>
</svg>
Architecture Diagram (3 layers):
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 1080">
<rect width="1920" height="1080" fill="#1E293B"/>
<defs>
<marker id="arr" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0,10 3.5,0 7" fill="#818CF8"/>
</marker>
</defs>
<!-- Frontend -->
<rect x="660" y="80" width="600" height="140" rx="16" fill="#38BDF8"/>
<text x="960" y="160" text-anchor="middle" fill="#1E293B"
font-size="40" font-family="sans-serif" font-weight="bold">Frontend</text>
<!-- Arrow -->
<line x1="960" y1="220" x2="960" y2="360" stroke="#818CF8" stroke-width="4" marker-end="url(#arr)"/>
<!-- API -->
<rect x="660" y="380" width="600" height="140" rx="16" fill="#818CF8"/>
<text x="960" y="460" text-anchor="middle" fill="#FFFFFF"
font-size="40" font-family="sans-serif" font-weight="bold">API Server</text>
<!-- Arrow -->
<line x1="960" y1="520" x2="960" y2="660" stroke="#818CF8" stroke-width="4" marker-end="url(#arr)"/>
<!-- Database -->
<rect x="660" y="680" width="600" height="140" rx="16" fill="#334155" stroke="#38BDF8" stroke-width="2"/>
<text x="960" y="760" text-anchor="middle" fill="#38BDF8"
font-size="40" font-family="sans-serif" font-weight="bold">Database</text>
</svg>
image field
.png path.svg path (auto-converted)bash ${CLAUDE_SKILL_DIR}/scripts/run.sh create_slides.py output/slide_spec.json output/presentation.pptx
To use a custom template:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh create_slides.py output/slide_spec.json output/presentation.pptx --template path/to/template.pptx
After generation, ask the user to review the PPTX.
If notes are already included from Step 1.5, this step can be skipped. Execute when the user wants to change the writing style or regenerate scripts.
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh write_talk_script.py output/presentation.pptx --read
Refer to references/talk-styles.md and regenerate scripts for all slides in the user's preferred style
casual (default) / keynote / formal / humorousSave as a JSON array and write to the PPTX:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh write_talk_script.py output/presentation.pptx --notes-json output/notes.json --output output/presentation.pptx
edge (default) / voicevoxja-JP-NanamiNeural (edge), 1 = Zundamon (voicevox)Export speaker notes as a text file for text-to-speech.
When a pronunciation dictionary (--dict) is specified, common mispronunciation patterns are automatically replaced.
With pronunciation dictionary (recommended):
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh export_tts_script.py output/presentation.pptx output/tts_script.txt --dict ${CLAUDE_SKILL_DIR}/assets/pronunciation_dict.tsv
Without pronunciation dictionary:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh export_tts_script.py output/presentation.pptx output/tts_script.txt
Present the exported script file contents to the user. Prompt them to check for items not auto-corrected by the dictionary, or project-specific terminology.
Examples auto-corrected by dictionary:
Cases requiring manual correction:
If the user decides no corrections are needed, proceed to Step 4c (synthesize without --script, as before).
If entries should be added to the dictionary, update pronunciation_dict.tsv.
With a corrected script file (--script):
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh synthesize_audio.py output/presentation.pptx output/audio/ --engine edge --script output/tts_script.txt
Without corrections (synthesize directly from PPTX notes, as before):
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh synthesize_audio.py output/presentation.pptx output/audio/ --engine edge
When using VOICEVOX (VOICEVOX Engine must be running beforehand):
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh synthesize_audio.py output/presentation.pptx output/audio/ --engine voicevox --script output/tts_script.txt
If the TTS API fails for some or all slides, failed slides are skipped and audio files are generated only for successful ones (partial success).
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh embed_audio.py output/presentation.pptx output/audio/ output/presentation_with_audio.pptx
Configures auto-advance and audio auto-play on the audio-embedded PPTX. In PowerPoint (Windows / macOS), starting the slideshow plays it fully automatically to the end. In LibreOffice Impress, auto-advance does not work, so slides must be advanced manually (see "Cross-Platform Compatibility Notes" for details).
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh make_slideshow.py output/presentation_with_audio.pptx output/presentation_final.pptx
To adjust display timing:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh make_slideshow.py output/presentation_with_audio.pptx output/presentation_final.pptx --silent-duration 5000 --audio-buffer 2000
After completing the slideshow configuration, always communicate the following notes to the user:
Pre-Slideshow Checklist
For PowerPoint (Windows / macOS): Verify that "Use Timings" is checked in the slideshow settings.
- Windows: "Slide Show" tab → "Set Up Slide Show" → Check "Use Timings"
- macOS: "Slide Show" menu → "Set Up Show..." → "Options" → Check "Use Timings"
If this is unchecked, auto-advance and audio auto-play will not work.
For LibreOffice Impress: Auto-advance does not work. Please advance slides manually during the slideshow (click or arrow keys). Audio will auto-play on each slide.
Following the Step 6 guidance, always confirm the following:
This presentation can also be exported as an MP4 video. This is useful for posting to YouTube or sharing in environments where PowerPoint is not available. However, additional tools (LibreOffice, ffmpeg) need to be installed. If you don't need video, the process is complete here. Would you like to create a video as well?
If the user responds with "Not needed", "No thanks", etc., skip Step 7 and end the pipeline.
Generate an MP4 video from the PPTX and audio files. Execute when you want to distribute or share the slideshow as a video.
When the user responds "Create the video" to the Step 7 guidance, confirm the following:
Video generation requires additional tools. Availability is shown during setup.sh execution.
| Tool | Purpose | Required |
|---|---|---|
| LibreOffice | PPTX → PDF → PNG rendering | Yes |
| ffmpeg | Video clip generation & concatenation | Yes |
| pdftoppm (poppler-utils) | PDF → PNG conversion (high quality) | Recommended (ffmpeg can substitute) |
If not installed:
# Ubuntu/Debian
sudo apt install libreoffice ffmpeg poppler-utils
# macOS
brew install libreoffice ffmpeg poppler
Note on snap version of LibreOffice: Use an output directory under $HOME.
Writing to /tmp etc. may fail due to sandbox restrictions.
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh make_video.py output/presentation_final.pptx output/audio output/presentation.mp4
With options:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh make_video.py output/presentation_final.pptx output/audio output/presentation.mp4 --fps 30 --silent-duration 3.0
After generation, the following checks are automatically performed:
| Check Item | Details |
|---|---|
| File existence | MP4 file exists and size > 0 |
| ffprobe read | File is not corrupted |
| Codecs | Video: H.264 / Audio: AAC |
| Resolution | Width and height are even numbers (libx264 compatible) |
| Duration | Positive value |
If validation fails, error details are displayed. Use --skip-validation to disable.
After video generation is complete, communicate the following:
About the Video Output
presentation.mp4has been generated- Display time for each slide is based on the actual audio file duration
- Slides without audio display for 3 seconds by default
- Playable with common video players (VLC, QuickTime, etc.)
If ODP format is needed:
bash ${CLAUDE_SKILL_DIR}/scripts/run.sh convert_format.py output/presentation.pptx --outdir output/
Prerequisite: LibreOffice must be installed.
PPTX files generated by Relief Pitcher AI work on both macOS and Windows PowerPoint as well as LibreOffice Impress. Note the following technical constraints.
| Method | macOS | Windows | LibreOffice |
|---|---|---|---|
p:cmd type="call" cmd="playFrom(0)" | Yes | Yes | Yes |
p:audio > p:cMediaNode | No (treated as corrupt) | Yes | Yes |
p:audio > p:cMediaNode (OOXML media node method) as a corrupted filep:cmd type="call" cmd="playFrom(0)" (command animation method)nodeType="afterEffect" + grpId="0" for "auto-execute after previous animation"| Icon | macOS | Windows |
|---|---|---|
| 32x32 visible icon | Yes, displayed | Yes, displayed |
| 1x1 transparent PNG | No, invisible | Yes, auto-replaced with speaker icon |
| Method | macOS | Windows | LibreOffice |
|---|---|---|---|
p:transition advTm | Yes | Yes | No (not supported) |
advTm, mainSeq.dur) correctly configured in the PPTX, LibreOffice ignores them — this is a known limitation (Bug 101527)references/pptx-guide.md: Details on layouts and placeholdersreferences/talk-styles.md: Talk script style definitionsreferences/tts-plugins.md: How to add TTS pluginsnpx claudepluginhub hawkymisc/daida-ai --plugin daida-aiGenerates AI presentations from text, documents, or reference images via the 2slides API. Supports slide creation, style matching, summarization, voice narration, and PDF/PNG/WAV export.
Orchestrates presentation outlines with per-page media decisions and runs a post-render QA loop. Use before generating PPT/HTML slides from raw material.
Generates slide deck images from content with configurable styles, slide counts, and audience targeting. Can output outlines, prompts, images, or merge into PDF/PPTX.