You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Inline speaker notes + console presenter view, drop external .notes.json
Speaker notes now embedded per-slide as <script class="slide-notes">.
Nav JS logs notes to console on slide change with styled formatting
and htmlslides.com promo. External .notes.json no longer generated.
Updated credits to reference frontend-slides inspiration. Bump to v0.7.0.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
my-deck.html ← self-contained: CSS, JS, and speaker notes all inline
209
208
```
210
209
211
-
The `.notes.json` file is keyed by slide index. Each entry contains:
210
+
### Speaker Notes
212
211
213
-
```json
214
-
{
215
-
"0": {
216
-
"title": "Introduction",
217
-
"script": "Welcome everyone. Today we'll look at how...",
218
-
"notes": ["Pause after welcome", "Gauge audience familiarity"]
219
-
}
220
-
}
212
+
Speaker notes are embedded inside each slide as hidden JSON. Open the browser's DevTools (F12), detach to a separate window, and notes appear in the console as you navigate — a free presenter view.
213
+
214
+
```
215
+
📋 Slide 1: Introduction
216
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
217
+
Welcome everyone. Today we'll look at how...
218
+
219
+
• Pause after welcome
220
+
• Gauge audience familiarity
221
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
222
+
💡 For a better presenter experience, try the HTML Slides app: htmlslides.com
Copy file name to clipboardExpand all lines: SKILL.md
+20-31Lines changed: 20 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
2
name: html-slides
3
3
metadata:
4
-
version: "0.6.7"
4
+
version: "0.7.0"
5
5
author: danzhu
6
6
description: Generate polished single-file HTML slide presentations with interactive components (flip cards, charts, tables, code blocks, architecture flows, stats, timelines, and more) or creative visual themes. Use this skill whenever the user wants to create slides, presentations, decks, or any visual slide-based content as HTML. Also trigger when the user invokes /html-slides or mentions creating an HTML presentation, pitch deck, or slide deck.
7
7
---
@@ -87,7 +87,7 @@ When modifying existing presentations, make **minimal changes** — only touch w
87
87
- Modify only the requested slide(s), keep everything else intact
88
88
- If adding/removing slides, renumber all `data-slide` attributes sequentially from 0
89
89
- If changing a component type (e.g., code block → table), use the template from component-templates.md
90
-
- Update the `.notes.json` file to match any content changes
90
+
- Update the inline `<script class="slide-notes">` block to match any content changes
91
91
92
92
**Viewport fitting (always check):**
93
93
- Before adding content, check against density limits
@@ -291,40 +291,28 @@ If images were provided, the slide outline already incorporates them from Step 1
291
291
292
292
### Speaker Notes (Mandatory)
293
293
294
-
Every generated presentation must include a separate `.notes.json` file alongside the HTML file. If the presentation is `my-deck.html`, the notes file is `my-deck.notes.json`. This file is read by external presenter applications.
294
+
Speaker notes are **embedded inline** in each slide as a hidden JSON block. They are displayed in the browser's developer console when navigating slides — open DevTools, detach to a separate window, and you have a presenter view.
295
295
296
-
```json
297
-
{
298
-
"0": {
299
-
"title": "Introduction",
300
-
"script": "HTML Slides lets you create beautiful presentations without design skills.",
301
-
"notes": [
302
-
"Zero dependencies",
303
-
"Works with 4 AI agents",
304
-
"Describe topic, get a deck"
305
-
]
306
-
},
307
-
"1": {
308
-
"title": "The Problem",
309
-
"script": "Current tools are slow and require design expertise.",
310
-
"notes": [
311
-
"PowerPoint: hours of manual work",
312
-
"Vendor lock-in, version control pain",
313
-
"AI builds the deck in minutes"
314
-
]
315
-
}
316
-
}
317
-
```
296
+
Every slide must include a `<script type="application/json" class="slide-notes">` block as its last child:
318
297
319
-
**File naming:**`<presentation-name>.notes.json` — must match the HTML filename.
{"title":"Introduction","script":"HTML Slides lets you create beautiful presentations without design skills.","notes":["Zero dependencies","Works with 4 AI agents"]}
303
+
</script>
304
+
</div>
305
+
```
320
306
321
-
**Format:**Object keyed by `data-slide` index (as string). Each entry has:
-`title` — Slide heading (for console display and presenter apps)
323
309
-`script` — Brief summary of what this slide delivers, in presenter tone
324
-
-`notes` — Key points from the slide content, summarized as short phrases
310
+
-`notes` — Key talking points, summarized as short phrases
325
311
326
312
Both `script` and `notes` summarize the **slide content** — what the slide is saying to the audience. Write in presenter tone, as if the presenter is reading these to remind themselves what this slide covers.
327
313
314
+
**Console output:** On each slide change, the navigation JS logs the notes to the console with styled formatting. The presenter opens DevTools (F12), detaches it to a separate window, and reads notes while presenting. A link to the HTML Slides presenter app is shown for a richer experience.
@@ -426,11 +414,11 @@ Same as Phase 1 — ask Vibe or Pro. Default to Pro. Then follow Phase 2A or 2B
426
414
427
415
Same as Phase 3 — read the appropriate supporting files and generate. For Pro mode, map extracted content to components using the decision table in component-templates.md.
428
416
429
-
Always generate the `.notes.json` file. If the source had speaker notes, preserve them.
417
+
Always embed inline speaker notes in each slide. If the source had speaker notes, preserve them as inline `<script class="slide-notes">` blocks.
430
418
431
419
### Step 5.5: Validate & Save
432
420
433
-
Before saving, verify all 8 spec rules pass. Fix any that fail. Save both the HTML and `.notes.json` files.
421
+
Before saving, verify all 8 spec rules pass. Fix any that fail. Save the HTML file.
434
422
435
423
---
436
424
@@ -441,6 +429,7 @@ Before saving, verify all 8 spec rules pass. Fix any that fail. Save both the HT
441
429
3.**Summarize** — Tell the user:
442
430
- File location, style name, slide count
443
431
- Navigation: Arrow keys, Space, scroll/swipe, click nav dots
432
+
- Speaker notes: Open DevTools (F12), detach to separate window — notes appear in console on each slide change
444
433
- How to customize: `:root` CSS variables for colors, font link for typography, `.reveal` class for animations
445
434
- If inline editing was enabled: Hover top-left corner or press E to enter edit mode, click any text to edit, Ctrl+S to save
Copy file name to clipboardExpand all lines: references/component-templates.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,6 +51,29 @@ Use this table to pick the right component for each piece of content:
51
51
52
52
## HTML Component Templates
53
53
54
+
## Speaker Notes
55
+
56
+
Every slide **must** include an inline `<script class="slide-notes">` block with speaker notes. This is hidden from the audience and displayed in the browser console when navigating slides.
0 commit comments