# Slide notes to lessons and quizzes

Web page: https://academy.memberpress.ai/courses/slides-to-course/l3/

Lesson 3 of 3 in [From Slides to a Course](https://academy.memberpress.ai/courses/slides-to-course/), 10 min.

Your speaker notes are the closest thing you have to a lesson script: they're what you actually say. But they're written for you, in shorthand, with the examples living in your head. A learner needs them spelled out, and that's a first draft Claude is good at.

**One slide at a time**

Give Claude the same three things every time: who the course is for, the lesson's one outcome from your outline, and the slide with its notes. Ask for two things back: a short script in your voice that teaches that outcome, and three quiz questions that check it.

```python
"""One slide and its notes to a lesson script and a quiz.

Gives Claude the same three things every time: who the
course is for, the lesson's one outcome, and the slide
with its speaker notes. It asks for a short script in the
speaker's voice and three quiz questions on the outcome.

    python3 lesson.py workshop.pptx 5 "You can add one
    good example to a prompt in place of a paragraph of rules."
"""
import sys

import anthropic
from pptx import Presentation

BRIEF = """Course: for people who use Claude at work but get uneven results.
Lesson outcome: {outcome}

From the slide and speaker notes below, write:
SCRIPT: a lesson script of about 120 words, in the speaker's voice, that teaches the outcome.
Include one concrete example.
QUIZ: three questions that check the learner can do it, each with the answer.
Plain text, no markdown."""

if __name__ == "__main__":
    path, number, outcome = sys.argv[1], int(sys.argv[2]), sys.argv[3]
    slide = Presentation(path).slides[number - 1]
    text = " / ".join(s.text_frame.text for s in slide.shapes
                      if s.has_text_frame and s.text_frame.text)
    notes = slide.notes_slide.notes_text_frame.text
    print(f"Slide {number}: {text}\nNotes: {notes}\n")
    response = anthropic.Anthropic().messages.create(
        model="claude-sonnet-5-5",
        max_tokens=4000,
        messages=[{"role": "user", "content": BRIEF.format(outcome=outcome) + f"\n\n<slide>\n{text}\nNotes: {notes}\n</slide>"}],
    )
    print("".join(b.text for b in response.content if b.type == "text"))
```

**Then the part that's yours**

- Read the script out loud.
- Swap in your own example wherever Claude made one up. In our run, Claude's script described an email to "Dana" that nobody sent. Your examples are why people want your course and not a general one.
- Check every quiz answer yourself. A quiz with a wrong answer marked right does more harm than no quiz at all.

**The common mistake**

Running the whole deck through at once and publishing what comes out. You'll get a pile of lessons that all sound the same, and none of them sound like you. Do one slide, fix it, and use what you fixed to sharpen the brief for the next one.

## Try these prompts

- Here is one slide and its speaker notes, and the lesson's outcome. Write a lesson script of about 120 words in my voice with one concrete example, then three quiz questions that check the learner can do it, with answers.
- Check these quiz answers. Flag any that are wrong, ambiguous, or that only test whether someone remembers a phrase.
