| name | dm-presentation |
| description | Applies Doppelmayr's official brand colors and typography to any sort of artifact that may benefit from having Doppelmayr's corporate look-and-feel. Use it when Doppelmayr brand colors or style guidelines, visual formatting, or company design standards apply. Keywords include Doppelmayr branding, corporate identity, seilbahn, ropeway, cable car styling. |
| license | Complete terms in LICENSE.txt |
Doppelmayr Brand Styling
⚠️ Wichtig: Workspace-Regel
NIEMALS temporäre Dateien im Skills-Verzeichnis ablegen!
Alle generierten Dateien (Bilder, Scripts, Präsentationen) müssen im Content-Verzeichnis gespeichert werden:
| Dateityp | Speicherort | Beispiel |
|---|
| Heruntergeladene Bilder | <content-dir>/images/ | /project/docs/images/ |
| Generierte PowerPoints | <content-dir>/ | /project/docs/Presentation.pptx |
| Erstellte Scripts | <content-dir>/ | /project/docs/create_presentation.py |
skills/dm-presentation/my_slides/
skills/dm-presentation/output.pptx
/path/to/project/output/
/path/to/project/output/presentation.pptx
Overview
To access Doppelmayr's official brand identity and style resources, use this skill.
Keywords: branding, corporate identity, visual identity, post-processing, styling, brand colors, typography, Doppelmayr brand, visual formatting, visual design, seilbahn, ropeway, cable car
Source: Based on analysis of https://www.doppelmayr.com/en/ (January 2026)
⚠️ PFLICHT: PowerPoint-Erstellung ausschließlich via python-pptx
Alle PowerPoint-Präsentationen MÜSSEN:
- Mit
python-pptx als Python-Script generiert werden
- Das MasterTemplateDE.pptx als Vorlage verwenden (IMMER)
- Die Farben aus dem Template-Theme nutzen (siehe unten)
- Die vordefinierten Slide-Layouts und Placeholder verwenden
KEIN HTML-Zwischenschritt, KEINE manuelle PPTX-Erstellung, KEINE anderen Tools.
Master Template Pfad
Das Template befindet sich im Assets-Ordner dieses Skills:
from pathlib import Path
SKILL_DIR = Path(__file__).parent
MASTER_TEMPLATE = SKILL_DIR / ".agents" / "skills" / "dm-presentation" / "assets" / "MasterTemplateDE.pptx"
Alternativ über Environment-Variable:
export DM_MASTER_TEMPLATE=/path/to/.agents/skills/dm-presentation/assets/MasterTemplateDE.pptx
Template-Dimensionen
- Breite: 13.33 in (33.87 cm) — Widescreen 16:9
- Höhe: 7.50 in (19.05 cm)
Slide Layouts & Placeholder-Referenz
Das MasterTemplateDE.pptx enthält 27 Layouts (Index 0–26). Jedes Layout hat vordefinierte Placeholder mit festen Indizes.
Layout-Übersicht mit Placeholder-Indizes
| Index | Layout Name | Placeholder (idx → Zweck) |
|---|
| 0 | Titel 1 | 0=Titel, 1=Untertitel |
| 1 | Titel 2 | 0=Titel, 1=Untertitel |
| 2 | Agenda | 0=Titel, 1=Inhalt |
| 3 | Kapiteltrenner | 1=Inhalt (kein Titel-PH!) |
| 4 | Text 1-spaltig | 0=Titel, 1=Inhalt, 13=Subheadline, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 5 | Text 1-spaltig 2 | 0=Titel, 1=Inhalt, 13=Subheadline, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 6 | Text 2-spaltig | 0=Titel, 1=Spalte1, 14=Spalte2, 13=Sub1, 15=Sub2, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 7 | Text 3-spaltig | 0=Titel, 1=Sp1, 14=Sp2, 16=Sp3, 13/15/17=Subs, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 8 | Text + Bild | 0=Titel, 1=Inhalt, 14=Bild, 13=Subheadline, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 9 | Bild vollflächig | 0=Titel, 14=Bild, 15=SmartArt, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 10 | Bild + Subheadline | 0=Titel, 14=Bild, 13=Subheadline, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 11 | 2 Bilder | 0=Titel, 14=Bild1, 16=Bild2, 15=SmartArt, 10=Datum, 11=Fußzeile, 12=Foliennr. |
| 12 | 3 Bilder | 0=Titel, 14=Bild1, 16=Bild2, 17=Bild3, 15=SmartArt |
| 13 | 4 Bilder | 0=Titel, 14–18=Bilder, 15=SmartArt |
| 14 | 3 Bilder + Texte | 0=Titel, 1/14/16=Texte, 17/18/19=Bilder |
| 15 | Statement + Bild 1 | 0=Titel, 1=Statement, 13=Bild |
| 16 | Statement + Bild 2 | 0=Titel, 1=Statement, 13=Bild |
| 17 | Statement 1 | 0=Titel, 1=Statement |
| 18 | Statement 2 | 0=Titel, 1=Statement |
| 19 | Statement 3 | 0=Titel, 1=Statement |
| 20 | Logo 4 | (keine Placeholder) |
| 21 | Danke 1 | 0=Titel, 1=Inhalt |
| 22 | Danke 2 | 0=Titel, 1=Inhalt |
| 23 | Logo 1 | (keine Placeholder) |
| 24 | Logo 2 | (keine Placeholder) |
| 25 | Logo 3 | (keine Placeholder) |
| 26 | Nur Headline | 0=Titel, 10=Datum, 11=Fußzeile, 12=Foliennr. |
Empfohlene Layout-Zuordnung nach Folienart
| Folienart | Empfohlenes Layout | Index |
|---|
| Titelfolie | Titel 1 | 0 |
| Agenda/Überblick | Agenda | 2 |
| Kapitelübergang | Kapiteltrenner | 3 |
| Text mit Bullets | Text 1-spaltig | 4 |
| Text mit Bild | Text + Bild | 8 |
| Vollbild (Diagramm) | Bild vollflächig | 9 |
| Vergleich 2 Spalten | Text 2-spaltig | 6 |
| Vergleich 3 Spalten | Text 3-spaltig | 7 |
| Zitat/Statement | Statement 1–3 | 17–19 |
| Abschlussfolie | Danke 1 | 21 |
Brand Guidelines — Farben aus dem Template-Theme
Die Farben sind direkt aus dem Theme des MasterTemplateDE.pptx extrahiert und MÜSSEN konsistent verwendet werden.
Theme Color Scheme: "Doppelmayr"
| Theme-Rolle | Hex | RGB | Verwendung |
|---|
| dk1 (Dark 1) | #051E6E | (5, 30, 110) | Primärtext, Überschriften, dunkle Hintergründe |
| lt1 (Light 1) | #FFFFFF | (255, 255, 255) | Helle Hintergründe, Text auf dunklem Grund |
| dk2 (Dark 2) | #051E6E | (5, 30, 110) | Sekundärer dunkler Text |
| lt2 (Light 2) | #0555FA | (5, 85, 250) | Primärer Akzent, Links, interaktive Elemente |
| accent1 | #051E6E | (5, 30, 110) | Primärfarbe für Shapes |
| accent2 | #0555FA | (5, 85, 250) | Sekundärer Akzent |
| accent3 | #8BB0FB | (139, 176, 251) | Tertiärer Akzent, Highlights |
| accent4 | #EBF0F5 | (235, 240, 245) | Dezente Hintergründe, Cards |
| accent5 | #C8CCD0 | (200, 204, 208) | Rahmen, Trennlinien, Captions |
| accent6 | #FF6E5A | (255, 110, 90) | CTA-Highlights, Betonung |
| hlink | #051E6E | (5, 30, 110) | Hyperlinks |
| folHlink | #051E6E | (5, 30, 110) | Besuchte Hyperlinks |
Farb-Kurzreferenz für Scripts
from pptx.dml.color import RGBColor
DM_DARK_BLUE = RGBColor(0x05, 0x1E, 0x6E)
DM_PRIMARY_BLUE = RGBColor(0x05, 0x55, 0xFA)
DM_LIGHT_BLUE = RGBColor(0x8B, 0xB0, 0xFB)
DM_LIGHT_GRAY = RGBColor(0xEB, 0xF0, 0xF5)
DM_GRAY = RGBColor(0xC8, 0xCC, 0xD0)
DM_CORAL = RGBColor(0xFF, 0x6E, 0x5A)
DM_WHITE = RGBColor(0xFF, 0xFF, 0xFF)
Farbverwendung
- Überschriften & Navigation: Dark Blue
#051E6E
- Primäre Buttons & Links: Primary Blue
#0555FA
- CTA-Elemente (sparsam!): Coral
#FF6E5A
- Cards & Hintergründe: Light Gray-Blue
#EBF0F5
- Rahmen & Trennlinien: Gray
#C8CCD0
- Sekundäre Akzente: Light Blue
#8BB0FB
- Text auf dunklem Grund: White
#FFFFFF
Typography — aus dem Template-Theme
Font Scheme: "Doppelmayr"
| Rolle | Schriftart | Fallback |
|---|
| Major (Überschriften) | Graphik Wide Semibold | Arial |
| Minor (Fließtext) | Graphik Regular | Arial |
Typography-Hierarchie für Folien
| Element | Font | Größe | Farbe |
|---|
| Folientitel (H1) | Graphik Wide Semibold | 28–36pt | #FFFFFF auf dunkel, #051E6E auf hell |
| Untertitel | Graphik Wide Semibold | 18–22pt | #8BB0FB oder #051E6E |
| Body Text | Graphik Regular | 14–16pt | #051E6E |
| Bullet Points | Graphik Regular | 14pt | #051E6E |
| Fußzeile/Caption | Graphik Regular | 10–11pt | #C8CCD0 |
PowerPoint-Generierung mit python-pptx — Pflicht-Workflow
Voraussetzungen
pip install python-pptx
pip install Pillow
Standard-Script-Struktur
Jedes Präsentations-Script MUSS diesem Muster folgen:
"""
Erstellt eine [THEMA] Präsentation im Doppelmayr Layout.
Verwendet das MasterTemplateDE.pptx als Vorlage.
"""
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pathlib import Path
MASTER_TEMPLATE = Path(__file__).parent / "path" / "to" / "MasterTemplateDE.pptx"
import os
if not MASTER_TEMPLATE.exists():
env_path = os.environ.get("DM_MASTER_TEMPLATE")
if env_path:
MASTER_TEMPLATE = Path(env_path)
OUTPUT_FILE = Path(__file__).parent / "Presentation_Output.pptx"
IMAGES_DIR = Path(__file__).parent / "images"
DM_DARK_BLUE = RGBColor(0x05, 0x1E, 0x6E)
DM_PRIMARY_BLUE = RGBColor(0x05, 0x55, 0xFA)
DM_LIGHT_BLUE = RGBColor(0x8B, 0xB0, 0xFB)
DM_LIGHT_GRAY = RGBColor(0xEB, 0xF0, 0xF5)
DM_GRAY = RGBColor(0xC8, 0xCC, 0xD0)
DM_CORAL = RGBColor(0xFF, 0x6E, 0x5A)
DM_WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LAYOUT_TITEL_1 = 0
LAYOUT_TITEL_2 = 1
LAYOUT_AGENDA = 2
LAYOUT_KAPITELTRENNER = 3
LAYOUT_TEXT_1SP = 4
LAYOUT_TEXT_1SP_2 = 5
LAYOUT_TEXT_2SP = 6
LAYOUT_TEXT_3SP = 7
LAYOUT_TEXT_BILD = 8
LAYOUT_BILD_VOLL = 9
LAYOUT_BILD_SUB = 10
LAYOUT_2_BILDER = 11
LAYOUT_3_BILDER = 12
LAYOUT_4_BILDER = 13
LAYOUT_3_BILDER_TEXT = 14
LAYOUT_STATEMENT_B1 = 15
LAYOUT_STATEMENT_B2 = 16
LAYOUT_STATEMENT_1 = 17
LAYOUT_STATEMENT_2 = 18
LAYOUT_STATEMENT_3 = 19
LAYOUT_LOGO_4 = 20
LAYOUT_DANKE_1 = 21
LAYOUT_DANKE_2 = 22
LAYOUT_LOGO_1 = 23
LAYOUT_LOGO_2 = 24
LAYOUT_LOGO_3 = 25
LAYOUT_NUR_HEADLINE = 26
def remove_example_slides(prs):
"""Entfernt alle Beispielfolien aus dem geladenen Template."""
while len(prs.slides) > 0:
rId = prs.slides._sldIdLst[0].rId
prs.part.drop_rel(rId)
del prs.slides._sldIdLst[0]
def get_placeholder(slide, idx):
"""Gibt den Placeholder mit dem gegebenen Index zurück oder None."""
for ph in slide.placeholders:
if ph.placeholder_format.idx == idx:
return ph
return None
def set_text(slide, idx, text):
"""Setzt den Text eines Placeholders."""
ph = get_placeholder(slide, idx)
if ph is not None:
ph.text = text
def set_bullets(slide, idx, items):
"""Setzt Bullet-Points in einen Placeholder."""
ph = get_placeholder(slide, idx)
if ph is None:
return
tf = ph.text_frame
tf.clear()
for i, item in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = item
p.level = 0
def add_title_slide(prs, title, subtitle, layout_idx=LAYOUT_TITEL_1):
"""Fügt eine Titelfolie hinzu."""
slide = prs.slides.add_slide(prs.slide_layouts[layout_idx])
set_text(slide, 0, title)
set_text(slide, 1, subtitle)
return slide
def add_chapter_slide(prs, title):
"""Fügt einen Kapiteltrenner hinzu."""
slide = prs.slides.add_slide(prs.slide_layouts[LAYOUT_KAPITELTRENNER])
set_text(slide, 1, title)
return slide
def add_text_slide(prs, title, content, layout_idx=LAYOUT_TEXT_1SP):
"""Fügt eine Textfolie hinzu. content kann str oder list sein."""
slide = prs.slides.add_slide(prs.slide_layouts[layout_idx])
set_text(slide, 0, title)
if isinstance(content, list):
set_bullets(slide, 1, content)
else:
set_text(slide, 1, content)
return slide
def add_text_image_slide(prs, title, content, image_path=None):
"""Fügt eine Text+Bild-Folie hinzu (Layout 8)."""
slide = prs.slides.add_slide(prs.slide_layouts[LAYOUT_TEXT_BILD])
set_text(slide, 0, title)
if isinstance(content, list):
set_bullets(slide, 1, content)
else:
set_text(slide, 1, content)
if image_path and Path(image_path).exists():
ph = get_placeholder(slide, 14)
if ph is not None:
ph.insert_picture(str(image_path))
return slide
def add_agenda_slide(prs, title, items):
"""Fügt eine Agenda-Folie hinzu."""
slide = prs.slides.add_slide(prs.slide_layouts[LAYOUT_AGENDA])
set_text(slide, 0, title)
set_bullets(slide, 1, items)
return slide
def add_end_slide(prs, title="Vielen Dank!", subtitle=""):
"""Fügt eine Abschlussfolie hinzu."""
slide = prs.slides.add_slide(prs.slide_layouts[LAYOUT_DANKE_1])
set_text(slide, 0, title)
set_text(slide, 1, subtitle)
return slide
def create_presentation():
"""Erstellt die Präsentation."""
print(f"📂 Template: {MASTER_TEMPLATE}")
print(f"📂 Output: {OUTPUT_FILE}")
prs = Presentation(str(MASTER_TEMPLATE))
remove_example_slides(prs)
add_title_slide(prs, "Präsentationstitel", "Untertitel der Präsentation")
add_agenda_slide(prs, "Agenda", [
"1. Erstes Thema",
"2. Zweites Thema",
"3. Zusammenfassung",
])
add_chapter_slide(prs, "Kapitel 1")
add_text_slide(prs, "Folientitel", [
"Erster Bullet-Point",
"Zweiter Bullet-Point",
"Dritter Bullet-Point",
])
add_text_slide(prs, "Fließtext-Folie",
"Hier steht ein längerer Absatz mit Fließtext, "
"der den Inhalt der Folie beschreibt."
)
add_text_image_slide(prs, "Titel mit Bild", [
"Punkt 1 neben dem Bild",
"Punkt 2 neben dem Bild",
], IMAGES_DIR / "example.jpg")
add_end_slide(prs, "Vielen Dank!", "Fragen?")
OUTPUT_FILE.parent.mkdir(parents=True, exist_ok=True)
prs.save(str(OUTPUT_FILE))
print(f"✅ Erstellt: {OUTPUT_FILE} ({len(prs.slides)} Folien)")
if __name__ == "__main__":
create_presentation()
Wichtige Regeln für Script-Erstellung
- IMMER
Presentation(str(MASTER_TEMPLATE)) verwenden — nie Presentation() ohne Template
- IMMER
remove_example_slides(prs) nach dem Laden aufrufen
- Placeholder-Indizes gemäß Layout-Referenz verwenden (nicht raten!)
- Bilder über
ph.insert_picture() in Bild-Placeholder (idx=14, 16, 17, 18, 19) einfügen
- Schriften werden automatisch vom Template-Theme übernommen — manuelles Setzen nur bei Bedarf
- Farben nur aus der Theme-Palette verwenden (siehe oben)
- Output-Pfad MUSS außerhalb des Skills-Verzeichnisses liegen
Brand Voice & Messaging
Taglines & Slogans
- Primary: "Mobility on the next level"
- Company Vision: "Movement. Progress. Mobility."
- Culture: "Shaping the future together"
Key Brand Messages
- World market leader for rope-propelled mobility
- 130+ years of pioneering spirit
- Innovative transport systems with maximum comfort and safety
- Solutions for mountain tourism, urban transport, and material handling
- 3,000+ employees in 50 countries
- 14,800+ installations worldwide
Content Tone
- Professional and technical yet accessible
- Innovation-focused and forward-looking
- Emphasizing quality, safety, and reliability
- Customer-centric ("customized solutions")
- Sustainability-conscious ("sustainable technology for generations")
Assets
Master Template
Das MasterTemplateDE.pptx in assets/ ist die einzige zulässige Vorlage für alle PowerPoint-Präsentationen.
Inhalt:
- 27 vordefinierte Slide-Layouts mit Doppelmayr-Branding
- Theme mit Farbschema "Doppelmayr" und Font-Schema "Doppelmayr"
- Graphik Wide Semibold (Überschriften) / Graphik Regular (Body)
- 16 Beispielfolien (werden beim Laden entfernt)
Example Presentations
Der examples/-Ordner enthält vollständige, funktionierende Beispiel-Scripts:
| Datei | Beschreibung |
|---|
create_ea_frameworks_presentation.py | Enterprise Architecture Frameworks |
create_ea_ki_presentation.py | Enterprise Architecture & AI |
create_time_presentation.py | Gartner TIME Model |
ea_frameworks_images/ | Stock-Bilder für EA Frameworks |
ea_ki_images/ | Stock-Bilder für EA & KI |
Social Media & Digital Presence
- Facebook: facebook.com/doppelmayrgaraventa
- LinkedIn: linkedin.com/company/doppelmayr-seilbahnen-gmbh
- YouTube: youtube.com/@DoppelmayrGroup
- Instagram: instagram.com/doppelmayr.official
- Website: doppelmayr.com
The Doppelmayr Group Brands
- Doppelmayr: Ropeways in separate operation, material handling, automated people movers
- Garaventa: Funicular ropeways, aerial tramways, special ropeways
- CWA: Swiss cabin design (OMEGA, ATRIA cabins)
- Frey Stans: Swiss control technology for ropeway construction
- Carvatech: Engineering & bodymaking for custom solutions
- Gassner: Chair and steel structures for ropeway construction
- Input: Project development for experience concepts
- LTW: High-performance intralogistics systems