CommunitySchreiben & Editierengithub.com

TimeCraker/ppt

Generiert professionelle Präsentationen/Decks mit python-pptx-Code, wiederholbar und versionierbar.

Was ist ppt?

Dieses Skill ermöglicht es einem KI-Agenten, auf Basis von python-pptx professionelle PowerPoint-Präsentationen, Slides und Decks zu generieren. Der Fokus liegt auf Code-gestützter, wiederholbarer Erstellung – ideal für Entwicklerteams, die Präsentationen versionieren, automatisiert generieren oder gezielt nach Daten aus dem eigenen Repository befüllen möchten. Der Skill arbeitet in fünf Schritten: Er beginnt mit einer strikten Recherche-Phase (Step 1), in der echte Projektdaten genutzt werden und keine erfundenen Fakten oder unspezifizierten Zahlen in die Folien gelangen. Eine durchgängige narrative Struktur wird vor dem Layout festgelegt. Danach folgt das Designsystem (Step 2) mit festen Farbpaletten, Schriftgrößen und Rastern. Die Code-Generierung (Step 3) erfolgt über python-pptx – mit automatischen Animationen, Professionalität und Wiederholbarkeit. Ein mehrstufiges Prüfverfahren (Step 4) stellt die Qualität der visuellen Darstellung sicher. Zum Schluss wird die Ausgabe als .pptx und ggf. PDF bereitgestellt (Step 5).

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/TimeCraker/vibe-studio/tree/HEAD/skills/ppt

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

ppt — Professionelle Präsentationen per Code generieren

Präsentationen mit Code, nicht per Drag & Drop: Wiederholbar (Daten ändern, Skript erneut ausführen), versionierbar in Git, millimetergenaue Positionierung (0.01 Zoll); kein WYSIWYG – die visuelle Prüfung in Schritt 4 dient als Sicherheitsnetz.

Schritt 1 · Recherche & Text (keine Erfindungen)

Vor dem Schreiben drei Zielgruppen-Fragen klären: Für wen? (Laien / Fachleute / Kunden)? Was weiß das Publikum bereits über das Projekt? Welche drei Kernaussagen soll der Zuhörer nach der Präsentation wiedergeben können? Die Antworten stehen am Anfang der Textentwürfe – alle folgenden Entscheidungen werden an ihnen gemessen.

Quellenmaterial nur aus echten Projektdaten (README / CLAUDE.md / docs / Daten-Backend – je nach Typ). Zahlen ohne Quelle gehören nicht in die Präsentation; Fakten, die das Publikum nicht braucht, nicht in den Haupttext – interne Metriken (Funktionsanzahl, API-Konstanten, interne Codenamen) sind standardmäßig ausgeschlossen, nur bei fachkundigem Publikum behalten.

Inhalte ausgraben, nicht nur Schlagworte sammeln: Reine Zahlen und Funktionsnamen sind noch keine Recherche. Nach Präsentationstyp vorgehen: Technik/Produkt: Designentscheidungen + Wirksamkeitsvergleich; Portfolio: Details & Abwägungen; Datenbericht: Messmethode & Basislinie; Narrativ/Marke: Personen, Szenen, Wendepunkte.

Gliederung vor Einzelfolie: Nach der Recherche zuerst eine narrative Gliederung schreiben – ein roter Faden (die gesamte Präsentation argumentiert eine Sache) + drei Antworten zur Einleitung (Was / Für wen / Welches Problem löst es?) + jede Folie erklärt ihre Rolle in der Argumentationskette (Woran knüpft sie an? Wofür bereitet sie vor?). Konzepte zuerst erklären, dann verwenden – keine Vorwärtsverweise. Zwei aufeinanderfolgende Folien ohne inhaltlichen Anschluss = umstellen. Der Seiten-Textentwurf (Titel + Punkte + Sprechertext; Sprechertext kommt in die notes() (Sprechernotizen), ist die Textquelle für den Erklärvideo-Workflow und die Live-Rede) wird unter der Gliederung geschrieben. Die Titel müssen sich im Verlauf steigern, keine isolierten Slogans.

Zwei Durchgänge: Erster Durchgang ausführlich – vollständige Sätze, als ob das Publikum null Vorwissen hat, erkläre gründlich „Was, für wen, welches Problem?“, Länge erlaubt. Zweiter Durchgang erst verfeinern – zuerst mit dem Humanizer, dann nach den vier untenstehenden Regeln kürzen. Der Humanizer ist ein Verfeinerungswerkzeug, keine Erstentwurf-Vorlage – nach seinen Standards schreiben produziert nur dünne, hüpfende Texte, die noch nichts erklärt haben, bevor sie mit Slogans loslegen.

  1. Keine leeren Punkte: Jeder Aufzählungspunkt braucht Details (Funktion mit Design-Grund oder Effekt, Daten mit Messmethode). Bloße Substantiv-Aufzählungen löschen.
  2. Zahlen brauchen Kontext: Wert + Messmethode + Zusammensetzung oder Vergleich, und zwar für das Publikum relevante Zahlen. Zahlen ohne Kontext nicht als Hauptvisual.
  3. Jede Folie ≥ 3 nachvollziehbare, konkrete Fakten; das Layout verdecken und nur den Text lesen – die Folie erzählt, sie listet nicht auf.
  4. Platzierungsregel: Große Textplätze (Titel auf der Deckfolie, große Schrift auf der Schlussfolie, Kapitelüberschriften) nur für Thesen oder Identitätsaussagen (mit Standpunkt, klingt wie ein Slogan). Domainnamen, Versionen, Daten, Statistiken immer in Untertitel oder Metainformationen verschieben.

Null Toleranz für Phrasen – zwei Ebenen: Geschäftsfloskeln („ermöglichen“, „End-to-End“, „Ökosystem“, „Hebel“, „Synergie“ etc.) direkt löschen; Fachjargon (API-Konstanten, interne Funktionsnamen, Systemcodename, Implementierungsdetails) nach Publikum filtern – bei Laien-Präsentationen entweder löschen oder auf der Folie in Laiensprache erklären. Zahlen sind besser als Adjektive; Titel drücken Standpunkte aus, keine Substantivphrasen; Gedankenstriche (deutsch/englisch) verboten. Bei wichtigen Projekten den Textentwurf zuerst dem Benutzer vorlegen, bevor Layout erstellt wird.

Schritt 2 · Designsystem (vor dem Code festlegen, während des gesamten Prozesses unverändert)

DimensionRegel
FarbpaletteAus der Designsprache des Projekts extrahieren (README visuelles Kapitel / Site-Hauptfarbe / Marken-VI); Wenn keine vorhanden: use_theme('warm' / 'tech' / 'forest'). 7+1 geschlossenes System (7 Rollen + Papierweiß), während des Prozesses keine Farben hinzufügen; Kleiner Text mindestens 4,5:1 Kontrast zum Hintergrund
Raster16:9 (13.333 × 7.5 Zoll) · Rand 0.55 · Seitenzahl (12.35, 7.02) · oben coral-farbener kurzer Balken + Kapitel-Label
Schriftgröße54 Deckblatt / 40 große Zahlen / 30 Folientitel / 19 Karten-Überschrift / 13 Fließtext / 11 Nebensächlich / 9 Anmerkungen, Zwischenwerte verboten
SchriftartChinesisch: Microsoft YaHei; Code / Domain / Zahlen / Versionsnummern immer Consolas
DichtePro Folie eine Aussage; Text > 3 Zeilen auf mehrere Folien aufteilen, Tabelle > 6 Zeilen kürzen

Schritt 3 · Generierung

  1. pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple (erstmalig)
  2. templates/primitives.py + animate.py in das scripts/-Verzeichnis des Zielprojekts kopieren, gen-<name>-deck.py schreiben
  3. Koordinaten mit Ausdrücken berechnen (z.B. Inches(0.55 + i * 3.13)), keine magischen Zahlen; vor dem Einfügen von Text check_fit() zur Vorprüfung verwenden, bei [FIT-WARN] Zeilen oder Folien aufteilen

Animationen (optional; Windows + MS Office + pywin32). Standardmäßig erledigt auto_deck() alles (Deck: Kaskade / Karten: float_up / Zahlen: zoom / Verbindungen: wipe / Tabellenzeilen: 0,06s schnelle Kaskade / Kapitelnummern: wipe up). Nur manuelle Feineinstellung:

anim = Anim(prs)
Anim.auto_deck()                       # Automatische Anordnung der gesamten Präsentation
anim.fx(footer, 'fade', dur=0.4)       # Einzelelement nachbessern
anim.chart(gf, 'series')               # Native Diagramme: Serie für Serie einblenden
P.set_transition(prs, 'fade')          # Einheitlicher Übergang (morph-Folien werden automatisch übersprungen)
P.auto_show(prs)                       # Sprechnotizen-basierte automatische Seitenwechsel: gesamte Präsentation läuft automatisch ab, Bildschirmaufzeichnung ergibt einen groben Film
prs.save('deck.pptx')
Anim.apply('deck.pptx')                # Muss nach save erfolgen; COM-Schreiben + Rücklese-Selbstverifikation
# Feineinstellung: anim.stagger(P.shape_groups(s, 'card'), 'float_up', step=0.12)
# Narratives Wachstum (morph echte Interpolation, belegt zwei aufeinanderfolgende Folien, auto überspringt automatisch; Verifikation: EntryEffect==3954; 2019+, WPS downgrade zu fade):
P.growth_chart(prs, 6, 'Wachstum', 'Titel', kategorien, werte, highlight=2)   # Säule/Balken
P.growth_line(prs, 8, 'Trend', 'Titel', kategorien, werte, highlight=5)       # Linie
P.growth_donut(prs, 10, 'Mix', 'Titel', kategorien, werte)                    # Anteilsring

Effektliste (COM-getestet): fade / wipe / appear / float_up / float_down / zoom / grow_turn / ease_in / split / wheel / stretch; Retro-Effekte werden nicht unterstützt. Rhythmus > Effekte: Dauer 0,4–0,6s, Kaskadenabstand 0,1–0,2s, pro Folie ≤ 2 Effekte, fixe Seitendekorationen (oberer Balken / Seitenzahl / Fußzeile) nicht animieren; Datencharts immer growth_*, native Charts nur verwenden, wenn die Daten später in PowerPoint geändert werden müssen.

Vorhandene pptx-Dateien ändern (per Skript, nicht manuell, in neue Datei speichern): P.deck_replace(prs, {'Alter Name': 'Neuer Name'}) für globale Ersetzung (inkl. Notizen); P.deck_recolor(prs, dict(zip(P.THEMES['warm'].values(), P.THEMES['tech'].values()))) für gesamtes Theme-Ersetzung.

Folien-Paradigmen (Wörterbuch, keine Checkliste: Nach der narrativen Gliederung in Schritt 1 das Paradigma wählen; kein Inhalt erfinden, um ein Paradigma zu füllen; gleiches Paradigma mehrfach verwenden ist in Ordnung; in einer Präsentation neun verschiedene Paradigmen je einmal zu verwenden ist eine Leistungsschau, keine Narration. Die Dichte wird durch Schritt 1 sichergestellt, nicht durch das Paradigma selbst):

ParadigmaFunktionVerwendung
Deckfolieslide_coverEröffnung: Großer Titel 54 + rechter vertikaler Farbblock
Kapitelfolieslide_sectionNavigation bei 12+ Folien, Magazin-Look (Rahmenlinien + dezent nummerierte Liste + Einträge)
Zeitleisteslide_timelineEntwicklung / Roadmap, hi = aktuelle Position hervorheben
Vergleichsfolieslide_versusA/B, Vorher/Nachher-Vergleich, mittiger VS-Kreis
Zitatfolieslide_quoteEin Satz, der eine ganze Folie verdient (in Präsentationen mit 12+ Folien)
Kartenrasterslide_cardsParallele Funktionen / Module, automatischer Zeilenumbruch
Zahlenwandslide_numbersGleichwertige Metriken auf einen Blick
Bild-Text-Folieslide_mediaScreenshot + Punkte; sidebar= großes Bild 60% + Kreis-Markierungen + Fußnote
Dichte Zonenslide_denseEin Subsystem auf einer Folie erklären: Hauptbereich 60% + Seitenbereich mit Gruppenliste
Echte Tabelleslide_tableAPI / Modell / Checklisten-Vergleiche, 6–9 Zeilen, Spaltenbreiten-Hierarchie
Verbindungsdiagrammslide_chainArchitektur-Fluss, hi = invertierte Farbe + subs-Karten
Doppelspalten-Listeslide_rowsTech-Stack / Konfiguration
Wachstumsdiagrammgrowth_chart / line / donutDatenwachstum mit morph echter Interpolation
Native Diagrammebar / line / donut_chartWenn Daten später in PowerPoint geändert werden müssen
Schlussfolieslide_closingKontaktdaten; slogan= benutzerdefinierte große Schrift (These)

Schritt 4 · Visuelle Prüfung (Pflicht, nicht überspringbar)

Dreistufige Pipeline, Automatisierung bevorzugt, manuelle Prüfung nur für die endgültige Version:

① Automatische Erstprüfung: Office COM in PDF konvertieren (Presentations.Open gefolgt von SaveAs("<output>.pdf", 32)) → python <skill-path>/templates/verify.py <output>.pdf. Prüft: Seitenüberlauf, Platzhalter, Kontrast WCAG (große Dekorationsschrift ≥72pt ausgenommen). Exit-Code 1 = Problem gefunden, Skript ändern und erneut ausführen.

② Visuelle Blindprüfung: pymupdf rendert PNG (fitz + get_pixmap(dpi=100)) → An einen Sub-Agenten ohne Generierungskontext übergeben mit zwei Fragen: Erstens, jede Folie auf vier Punkte prüfen (Überlauf / Zeichensalat / Ausrichtung / Kontrast); Zweitens, Zuhörer-Wiedergabetest – nur die ersten 1/3 der Folien zeigen, „Worum geht es? Für wen? Welches Problem wird gelöst?“. Kann er nicht antworten = Schritt 1 oder die Einleitung sind falsch, Text zurück zur Überarbeitung und neu generieren. Keine Ausnahmen im Blindprüfungs-Prompt voraussetzen (nicht sagen „Das ist beabsichtigt“): Elemente, die vom Seitenrand abgeschnitten werden, riesige, kontrastarme Dekorationsbuchstaben – solche verdächtigen Formen werden ebenfalls als frische Augen als Problem gemeldet. Probleme gefunden? Skript ändern und erneut ausführen, manuelle Bearbeitung der pptx verboten.

Für die visuelle Prüfung absolute Pfade zu den tatsächlichen Bildern verwenden, die aktuelle Version oder den Hash überprüfen; bei Pfadeinschränkungen des konkreten Tools einen kompatiblen Pfad wählen, kein Verzeichnis kopieren erzwingen.

③ Benutzer-Freigabe: Nachdem die ersten beiden Stufen die mechanischen Probleme beseitigt haben, prüft der Benutzer nur noch das Endergebnis.

Schritt 5 · Auslieferung

Bericht: Seitenzahl + Seitenliste / Dateipfad und -größe / Ergebnisse der dreistufigen Prüfung / Anzahl der Sprechnotizen-Seiten / Gesamtdauer der automatischen Wiedergabe / Pfad des Generierungsskripts (wiederholbar). Skript im Git-Repository einreichen (pptx-Dateien nicht in Git aufnehmen).

Grenzen und Fallstricke

  • Kein MS Office → Schritt 4 downgraden auf LibreOffice soffice --convert-to pdf; Beide nicht vorhanden → explizit melden „Keine visuelle Prüfung durchgeführt“
  • GBK-Konsole: print keine Nicht-ASCII-Zeichen verwenden, stattdessen OK
  • nativ Tabellen: Spaltenbreiten außer Kontrolle → Tabellenzeilen immer selbst zeichnen (box + text zeilenweise zusammenbauen)
  • Chinesische Zeichen fehlen → auf Run-Ebene Microsoft YaHei setzen (in primitives bereits erledigt)
  • shape_id wird pro Seite unabhängig nummeriert und ist nicht eindeutig; animate.py verwendet XML-Baum-Lokalisierung; bei Weiterentwicklung nicht global nach id suchen; pywin32: pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • docx / xlsx: Die Grundidee von primitives kann wiederverwendet werden, aber die Folien-Paradigmen-Tabelle gilt nur für pptx

Aktueller Workflow und Archivierung

content-director ist verantwortlich für Zielgruppe, Quellenmaterial und Erzählentwurf; PPT behält das Ziel der lieferbaren, bearbeitbaren Folien. Design bestätigen, dann generieren; Video-Standbildregeln nicht auf PPT anwenden. Generierungsskript, Eingabedaten, benötigte Materialien und deren Hash mit dem Rezept aufbewahren; Lieferliste deklariert PPT/PDF/Deckfolie; vor Archivierung und Wiederherstellungsprüfung nicht aufräumen. Visuelle Prüfung und Benutzer-Freigabe separat melden.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills