make-slide 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,11 +74,13 @@ Follow these steps in order:
74
74
  - 30-min talk → 30–40 slides
75
75
  - Identify the target audience and tone (technical, business, casual, academic)
76
76
  - Detect the user's language from the conversation — generate content in that language
77
- - Detect or ask about the desired output format:
78
- - **HTML** (default) Interactive single-file presentation with navigation, animations, and speaker notes
79
- - **PPTX** — PowerPoint file for traditional presentation software (Office, Google Slides, Keynote)
80
- - If the user mentions "PowerPoint", "pptx", "PPT", ".pptx", "Google Slides", or "Keynote" → use PPTX mode
81
- - If unclear, default to HTML and mention PPTX is also available
77
+ - Ask the user about the desired output format (always ask, do not skip):
78
+ > **Which output format would you like?**
79
+ > - **HTML** — Interactive single-file presentation you can open in a browser (navigation, animations, speaker notes built-in)
80
+ > - **PPTX** PowerPoint file for Office, Google Slides, or Keynote
81
+
82
+ - If the user already mentioned "PowerPoint", "pptx", "PPT", ".pptx", "Google Slides", or "Keynote" in their request → skip the question and use PPTX mode
83
+ - Otherwise, always ask explicitly before proceeding
82
84
 
83
85
  ### Step 2: Choose a Theme
84
86
  Present the user with the theme gallery link for browsing:
@@ -110,11 +112,14 @@ Ask the user which image approach they prefer:
110
112
  - **Option A** → Use CSS placeholders matching the theme (emoji, SVG icons, CSS shapes)
111
113
  - **Option B** → Mark image positions in the outline, ask user for URLs, use `<img src>` with `loading="lazy"` and descriptive `alt` text
112
114
  - **Option C** → For each slide that would benefit from an image:
113
- 1. Determine a relevant search query based on the slide content
114
- 2. Search for images using web search (prefer Unsplash, Pexels, or other royalty-free sources)
115
- 3. Select the most relevant, high-quality result
115
+ 1. Determine a relevant English search keyword based on the slide content
116
+ 2. Use Unsplash source URLs which are guaranteed to resolve: `https://source.unsplash.com/featured/1200x800/?{keyword}`
117
+ - Example: `https://source.unsplash.com/featured/1200x800/?technology,ai`
118
+ - Example: `https://source.unsplash.com/featured/1200x800/?teamwork,office`
119
+ 3. Alternatively, search the web for images on Unsplash or Pexels and use the direct image URL (verify the URL returns 200 before inserting)
116
120
  4. Insert as `<img src="URL" alt="description" loading="lazy">`
117
- 5. Note: Inform the user that auto-searched images are from the web and they should verify licensing for commercial use
121
+ 5. NEVER use AI-generated or guessed URLs only use URLs from actual search results or the Unsplash source pattern above
122
+ 6. Inform the user that auto-searched images are royalty-free from Unsplash (Unsplash License)
118
123
 
119
124
  ### Step 4: Generate Outline
120
125
  Create a slide-by-slide outline with:
@@ -156,6 +161,8 @@ Add speaker notes as `data-notes` attributes on each slide's `<div>`:
156
161
  - Expand on the slide text — don't just repeat it
157
162
  - Include transitions between slides (e.g., "Now let's move on to...")
158
163
 
164
+ **Speaker Notes Panel must be a separate popup window** using `window.open()`. Do NOT render notes inline at the bottom of the slide — this breaks the slide layout. The `S` key should toggle a popup window that shows the current slide's notes and auto-updates on slide change. See `references/html-spec.md` for the implementation pattern.
165
+
159
166
  ### Step 8: Generate Script (Mode A and B only)
160
167
  For Mode A and B, also generate a separate `script.md` file containing:
161
168
  - Full speaking script organized by slide
@@ -168,13 +175,8 @@ For Mode C, the user already has a script — skip this step.
168
175
  ### Step 9: Save and Deliver
169
176
  - Save the presentation as `index.html` (or user-specified filename)
170
177
  - Save the script as `script.md` (if generated)
171
- - Offer to start a local server for preview:
172
- ```bash
173
- # Python
174
- python -m http.server 8000
175
- # Node.js
176
- npx serve .
177
- ```
178
+ - Tell the user they can open `index.html` directly in their browser to view the presentation — no server needed
179
+ - The file is fully self-contained (all CSS/JS inlined), so it works by simply double-clicking the file or dragging it into a browser
178
180
 
179
181
  ---
180
182
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "make-slide",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "AI presentation skill — generate single-file HTML slides with 10 themes",
5
5
  "bin": {
6
6
  "make-slide": "./bin/cli.js"