update presentation generatior
This commit is contained in:
@@ -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)
|
## SETUP (run once per session)
|
||||||
|
|
||||||
Before generating, ensure the generator and baseline are available:
|
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 |
|
| `Vier redenen om voor ons te kiezen` | Slide title |
|
||||||
| `Laagste prijs` | Card title line 1 (all 4 cards identical in baseline) |
|
| `Laagste prijs` | Card title line 1 (all 4 cards identical in baseline) |
|
||||||
| `garantie` | Card title line 2 (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) |
|
| `30%` | Card stat (all 4 identical in baseline) |
|
||||||
| `goedkoper dan traditioneel` | Card stat label (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
|
# Card 1
|
||||||
("Laagste prijs", "Armeense lunch", 1),
|
("Laagste prijs", "Armeense lunch", 1),
|
||||||
("garantie", "Tolma & Ghapama", 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
|
# Card 2
|
||||||
("Laagste prijs", "Paas taart", 2),
|
("Laagste prijs", "Paas taart", 2),
|
||||||
("garantie", "van Marte", 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
|
# Card 3
|
||||||
("Laagste prijs", "Chinese snacks", 3),
|
("Laagste prijs", "Chinese snacks", 3),
|
||||||
("garantie", "van Irene", 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
|
# Card 4
|
||||||
("Laagste prijs", "Boek tip", 4),
|
("Laagste prijs", "Boek tip", 4),
|
||||||
("garantie", "van Dennis", 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)
|
# Remove stat elements (replace with empty or relevant values)
|
||||||
("30%", ""),
|
("30%", ""),
|
||||||
("goedkoper dan traditioneel", ""),
|
("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 |
|
| `nodig` | Left stat 3 label |
|
||||||
| `Geautomatiseerd` | Right panel title |
|
| `Geautomatiseerd` | Right panel title |
|
||||||
| `Claude Skills handelen keyword research, copy generation en Contentful publishing af. Mens reviewt alleen het eindresultaat.` | Right panel body |
|
| `Claude Skills handelen keyword research, copy generation en Contentful publishing af. Mens reviewt alleen het eindresultaat.` | Right panel body |
|
||||||
| `15min` | Right stat 1 |
|
| `15min` | Right stat 1 number |
|
||||||
| `500+` | Right stat 2 |
|
| `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 |
|
| `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 |
|
| `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.
|
> Note: `⬤ VOORHEEN` and `⬤ NU MET AI SKILLS` are colored dot labels — best left as-is.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user