Four-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, then create new presentations that match your documented patterns. Includes an 88-entry Presentation Patterns taxonomy for scoring, brainstorming, and go-live preparation.
96
93%
Does it follow best practices?
Impact
97%
1.21xAverage score across 30 eval scenarios
Advisory
Suggest reviewing before use
Triggered separately — days or weeks after delivery. Not part of the linear Phase 0-6 flow. The talk has been given, the recording exists, and the speaker wants a YouTube thumbnail and/or to update shownotes with the video.
Before ANY Phase 7 action, load these files. If any is missing, STOP and ask.
speaker-profile.json — thumbnail preferences, video publishing configsecrets.json — API keys (Gemini for thumbnail generation)presentation-spec.md — talk slug, metadata (source of truth)presentation-outline.md — the outline (slide references, illustration references)If shownotes don't exist and the speaker wants Step 7.2, STOP and ask — either run Phase 6 Step 6.1 first, or get the shownotes URL manually.
Generate a thumbnail that competes for clicks in YouTube search results and suggested videos. The thumbnail combines a slide visual, the speaker's face, and a short hook title.
Scan the outline for high-impact slides. Suggest 3-5 candidates ranked by visual engagement:
Avoid: bio slides, shownotes URL slides, bullet-heavy slides, generic titles.
Present candidates to the speaker with slide numbers and brief descriptions. The speaker picks one — never auto-select.
Get the slide image using this resolution chain:
illustrations/ directory for
slide-{NN}.* matching the chosen slide. These are already high-quality.python3 skills/presentation-creator/scripts/generate-thumbnail.py \
--extract-slide deck.pptx 15 --output slide-15.pngResolution order:
publishing_process.thumbnail.speaker_photo_path from speaker profileThe photo must be a real photograph — never AI-generated. Expression should convey engagement and energy, not a neutral corporate headshot.
This is NOT the full talk title. It's a 3-5 word hook designed for thumbnail readability at small sizes.
Use the thumbnail generation script:
python3 skills/presentation-creator/scripts/generate-thumbnail.py \
--slide-image illustrations/slide-15.png \
--speaker-photo ~/photos/headshot.jpg \
--title "JUDGMENT DAY" \
--subtitle "DevNexus 2026" \
--vault ~/.claude/rhetoric-knowledge-vault \
--style slide_dominant \
--title-position top \
--brand-colors "#5B2C6F,#C0392B"Apply speaker preferences from publishing_process.thumbnail:
style_preference → --styletitle_position → --title-positionbrand_colors → --brand-colorsThe script:
thumbnail.png in illustrations dir)Present the generated thumbnail for approval. If rejected:
Common revision requests:
Add to thumbnails[] in tracking-database.json:
{
"talk_slug": "judgment-day",
"youtube_url": "https://youtube.com/watch?v=...",
"source_slide_num": 15,
"speaker_photo_used": "/path/to/headshot.jpg",
"thumbnail_path": "illustrations/thumbnail.png",
"dimensions": "1280x720",
"file_size_kb": 185,
"created_at": "2026-04-20",
"approved": true
}Also set thumbnail_generated: true on the talk's entry in talks[].
Update the existing shownotes page with the video recording link.
Check that shownotes were published in Phase 6 Step 6.1. Look for:
tracking-database.json for this talkspeaker.shownotes_url_pattern + talk slugIf shownotes don't exist, STOP and ask the speaker. Options:
Read publishing_process.video_publishing from speaker profile:
enabled — if false, skip this stepembed_method — youtube_embed, link_only, or bothshownotes_video_section — where/how the video section goes in shownotesvideo_description_template — template for YouTube video descriptionIf video_publishing is not configured, ask interactively:
Create the video section content based on embed_method:
Include the video title, conference name, and year from the presentation spec.
Use the same publishing method as Phase 6 Step 6.1:
Set video_added_to_shownotes: true on the talk's entry in talks[].
Add the YouTube URL to the talk entry if not already present.
POST-EVENT REPORT — {talk title}
==================================
[DONE/SKIP] Thumbnail: {path, dimensions, size}
[DONE/SKIP] Video to shownotes: {shownotes URL, embed method}
[INFO] YouTube URL: {url}
==================================evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
rules
skills
presentation-creator
references
patterns
build
deliver
prepare
scripts
vault-clarification
vault-ingress
vault-profile