update presentation generatior

This commit is contained in:
2026-04-16 14:09:17 +02:00
parent ffc7dd8162
commit e2550067f3
3 changed files with 60 additions and 8 deletions
+60 -8
View File
@@ -22,6 +22,55 @@ and layouts exactly as designed.
---
## WORKFLOW — ALWAYS FOLLOW THIS PROCESS
Before generating any slides, complete these 3 steps **in order**. Do not skip straight to generating.
### Step 1: Brief the presentation
Ask the user these questions **in a single message** before doing anything else:
1. **Doel** — Wat is het doel van deze presentatie? (informeren / overtuigen / updaten / inspireren)
2. **Kernboodschap** — Als het publiek één ding onthoudt, wat moet dat zijn?
3. **Publiek** — Voor wie is dit? (intern team, MT, externe partner, all-hands)
4. **Taal** — Nederlands of Engels?
5. **Beschikbare bronnen** — Welke databronnen mogen we gebruiken voor de inhoud?
For the last question, check which connectors/MCPs are active and mention them explicitly as options:
- **Slack** → recente updates, team-aankondigingen, discussies ophalen
- **Gmail** → e-mails, klantcommunicatie, recente updates
- **Google Drive** → documenten, rapporten, bestaand materiaal
- **Ahrefs / GSC** → SEO data, keyword performance, traffic metrics
- **Contentful** → productcontent, beschrijvingen
- **Datadog / analytics** → performance data en metrics
### Step 2: Propose a slide structure
Based on the brief, **propose a numbered slide plan** and wait for approval before generating anything. Example format:
```
Voorgestelde opzet:
1. Titelslide
2. Agenda
3. Sectie-divider — Q1 Financiën
4. Big number — Omzethighlight
5. Chart KPI cards — Financieel overzicht
6. Section-divider — AI & Automation
7. Before/after — Contentproductie
8. Impact statement
9. Afsluiting
Klopt deze opzet? Wil je slides toevoegen, weglaten of verplaatsen?
```
**Do not generate until the user approves the structure.**
### Step 3: Generate
Only after approval: set up the generator, build the slide plan, and run `generate()`.
---
## SETUP (run once per session)
Before generating, ensure the generator and baseline are available:
@@ -221,7 +270,7 @@ Light gray background with 4 equal feature/USP cards.
| `Vier redenen om voor ons te kiezen` | Slide title |
| `Laagste prijs` | Card title line 1 (all 4 cards identical in baseline) |
| `garantie` | Card title line 2 (all 4 cards identical in baseline) |
| `All-inclusive prijzen zonder verborgen kosten...` | Card body (all 4 identical in baseline) |
| `All-inclusive prijzen zonder verborgen kosten. Vind je het goedkoper? Wij matchen het.` | Card body (all 4 identical in baseline) |
| `30%` | Card stat (all 4 identical in baseline) |
| `goedkoper dan traditioneel` | Card stat label (all 4 identical in baseline) |
@@ -235,19 +284,19 @@ cards share identical placeholder text, pass `n=1..4` to target each card indivi
# Card 1
("Laagste prijs", "Armeense lunch", 1),
("garantie", "Tolma & Ghapama", 1),
("All-inclusive prijzen zonder verborgen kosten...", "Sona nodigde iedereen uit voor een Armeense lunch op 10 april.", 1),
("All-inclusive prijzen zonder verborgen kosten. Vind je het goedkoper? Wij matchen het.", "Sona nodigde iedereen uit voor een Armeense lunch op 10 april.", 1),
# Card 2
("Laagste prijs", "Paas taart", 2),
("garantie", "van Marte", 2),
("All-inclusive prijzen zonder verborgen kosten...", "Marte verraste het team met een zelfgemaakte paastaart.", 2),
("All-inclusive prijzen zonder verborgen kosten. Vind je het goedkoper? Wij matchen het.", "Marte verraste het team met een zelfgemaakte paastaart.", 2),
# Card 3
("Laagste prijs", "Chinese snacks", 3),
("garantie", "van Irene", 3),
("All-inclusive prijzen zonder verborgen kosten...", "Irene bracht authentieke Chinese snacks mee voor het hele kantoor.", 3),
("All-inclusive prijzen zonder verborgen kosten. Vind je het goedkoper? Wij matchen het.", "Irene bracht authentieke Chinese snacks mee voor het hele kantoor.", 3),
# Card 4
("Laagste prijs", "Boek tip", 4),
("garantie", "van Dennis", 4),
("All-inclusive prijzen zonder verborgen kosten...", "Dennis deelde zijn favoriete boek: Zero to One van Peter Thiel.", 4),
("All-inclusive prijzen zonder verborgen kosten. Vind je het goedkoper? Wij matchen het.", "Dennis deelde zijn favoriete boek: Zero to One van Peter Thiel.", 4),
# Remove stat elements (replace with empty or relevant values)
("30%", ""),
("goedkoper dan traditioneel", ""),
@@ -319,12 +368,15 @@ White slide comparing two states side by side (gray left panel, dark right panel
| `nodig` | Left stat 3 label |
| `Geautomatiseerd` | Right panel title |
| `Claude Skills handelen keyword research, copy generation en Contentful publishing af. Mens reviewt alleen het eindresultaat.` | Right panel body |
| `15min` | Right stat 1 |
| `500+` | Right stat 2 |
| `15min` | Right stat 1 number |
| `per product per markt` | Right stat 1 label (**appears twice** — the global replacement above also covers this) |
| `500+` | Right stat 2 number |
| `producten per week` | Right stat 2 label |
| `0.5 FTE` | Right stat 3 |
| `0.5 FTE` | Right stat 3 number |
| `menselijke review` | Right stat 3 label |
> **Important:** `per product per markt` is used as the label for **both** left stat 1 and right stat 1. A single global replacement `("per product per markt", "your new label")` updates both sides at once. If you want different labels per side, replace right stat 1 first with a unique temporary value, then do the global replacement.
>
> Note: `⬤ VOORHEEN` and `⬤ NU MET AI SKILLS` are colored dot labels — best left as-is.
---