#185 Video Animationen für Wardley Maps
Worum geht es in diesem Artikel?
Der Blog Post zeigt die Grundzüge eines Wardley Maps Animator Programm in python das mit o1pro entwickelt wurde
Der WardleyMapAnimator: Eine dynamische Visualisierungslösung für strategisches Denken
Das WardleyMapAnimator-Programm ist eine innovative Softwarelösung, die Wardley Maps in dynamische, narrative Videosequenzen verwandelt. Es verbindet die Kraft von Wardley Mapping mit audiovisueller Präsentation und schafft damit ein einzigartiges Werkzeug für strategische Kommunikation.
Das Grundkonzept
Wardley Maps sind an sich schon ein mächtiges strategisches Werkzeug. Der WardleyMapAnimator geht jedoch einen Schritt weiter: Er verwandelt statische Maps in dynamische Geschichten. Das Programm baut die Map Schritt für Schritt auf, unterlegt sie mit gesprochenem Text und schafft so ein immersives Lernerlebnis.
Didaktische Vorteile
Der größte didaktische Mehrwert des Programms liegt in seinem schrittweisen, narrativen Ansatz:
- Schrittweise Komplexitätserhöhung: Anstatt den Betrachter mit einer fertigen, komplexen Map zu überfordern, wird die Karte Komponente für Komponente aufgebaut. Dies ermöglicht es dem Zuschauer, die Zusammenhänge organisch zu verstehen.
- Multimodale Vermittlung: Durch die Kombination von visuellen Elementen und gesprochenem Text werden verschiedene Lernkanäle angesprochen. Dies unterstützt unterschiedliche Lerntypen und verbessert die Informationsaufnahme.
- Geführte Exploration: Das Programm lenkt die Aufmerksamkeit des Betrachters gezielt durch die Map. Jede neue Komponente wird mit einer erklärenden Frage eingeführt, was das Verständnis der strategischen Zusammenhänge erleichtert.
Technische Besonderheiten
Der WardleyMapAnimator besticht durch mehrere innovative Features:
1. Dynamische Visualisierung
- Animierte „Wave“ am unteren Rand der Karte
- Farbkodierte Komponenten
- Evolutionspfeile für strategische Entwicklungen
- Anpassbare Übergangszeiten und Animationsgeschwindigkeiten
2. Audio-Integration
- Integration der ElevenLabs Text-to-Speech API
- Intelligentes Audio-Caching zur Ressourcenoptimierung
- Synchronisierte Sprache und visuelle Elemente
3. Konfigurierbarkeit
- YAML-basierte Konfiguration für einfache Anpassungen
- Flexibles Styling-System
- Anpassbare Timing-Parameter
- 9:16 Videoformat-Optimierung für mobile Endgeräte
Problemlösung und Einsatzszenarien
Der WardleyMapAnimator löst mehrere zentrale Herausforderungen:
- Komplexitätsreduktion: Wardley Maps können für Neulinge überwältigend sein. Die schrittweise Animation macht sie zugänglicher.
- Aufmerksamkeitssteuerung: In Präsentationen ist es oft schwierig, den Fokus der Zuhörer zu lenken. Die dynamische Darstellung führt das Publikum gezielt durch die Map.
- Skalierbarkeit: Durch das Videoformat können strategische Erklärungen einfach geteilt und wiederholt angesehen werden.
- Konsistente Kommunikation: Die automatisierte Erstellung gewährleistet, dass komplexe strategische Zusammenhänge immer auf die gleiche, verständliche Weise erklärt werden.
Besondere Merkmale
Was den WardleyMapAnimator besonders macht:
- Die Wave-Animation: Die subtile Wellenbewegung am unteren Rand der Karte symbolisiert den evolutionären Charakter von Wardley Maps und verleiht der Visualisierung eine zusätzliche dynamische Dimension.
- Intelligentes Frage-System: Jede Komponente wird durch eine spezifische Frage eingeführt, was das analytische Denken fördert und die Zuschauer aktiv einbindet.
- Modularer Aufbau: Das Programm ist hochgradig modular aufgebaut, was Erweiterungen und Anpassungen erleichtert.
- Optimierte Videoproduktion: Die Integration von moviepy ermöglicht hochqualitative Videoausgaben mit synchronisiertem Audio.
Module des Scripts
import os
import math
import yaml
import textwrap
import numpy as np
import hashlib
import argparse
import matplotlib.pyplot as plt
Fazit
Der WardleyMapAnimator ist mehr als nur ein Visualisierungstool – er ist ein durchdachtes didaktisches Werkzeug, das komplexe strategische Zusammenhänge verständlich macht. Die Kombination aus schrittweisem Aufbau, sprachlicher Erklärung und visueller Animation schafft ein einzigartiges Lernerlebnis, das sowohl für Einsteiger als auch für erfahrene Strategen wertvoll ist. Die technische Umsetzung mit Python, die durchdachte Konfigurierbarkeit und die Integration moderner Text-to-Speech-Technologie machen das Programm zu einem zukunftsweisenden Werkzeug für strategische Kommunikation.
Programmierung des Scripts
Ich habe angefangen das Python Programm in ein paar Stunden mit Windsurf zu entwickeln, das war sehr mühselig. Auf Grund positiver Berichte, habe ich o1pro ausprobiert und das klappte in ca. 20 Minuten. Man muss aber sehr aufpassen, denn o1pro versucht gerne abzukürzen und hartnäckig auf den ganzen Code zu bestehen.
Hier lohnt sich Mckay Wrigley @mckaywrigley auf X zu folgen, denn Mackay zeigt wie er mit dem Modell arbeitet. Der Umgang mit Difftools ist noch was ungeübt für mich. Das wäre der nächste Schritt.
Steuerung des WardleyMapAnimators über YAML: Ein detaillierter Einblick
Die YAML-Konfigurationsdatei ist das Herzstück des WardleyMapAnimators und ermöglicht eine flexible und präzise Steuerung der Visualisierung. Hier ist eine ausführliche Analyse der wichtigsten Steuerungsmöglichkeiten:
Zeit- und Animations-Parameter
# --------------------------------------------------------------------
timing:
question_duration: 3 # Sekunden für jede Frage
component_duration: 2 # Sekunden, bis eine Komponente eingeblendet wird
connection_delay: 1 # Wartezeit bis Verbindung sichtbar wird
fps: 24 # Frames pro Sekunde
# --------------------------------------------------------------------
# Text-Stil
# --------------------------------------------------------------------
text_style:
title:
font_family: "Arial"
font_size: 24
font_weight: "bold"
color: "#2C3E50"
pad: 20 # Abstand vom oberen Rand
questions:
font_family: "Arial"
font_size: 16
font_weight: "normal"
color: "#2C3E50"
wrap_width: 50
box_style:
background_color: "#F8F9FA"
alpha: 0.95
edge_color: "#DEE2E6"
box_style: "round4"
pad: 1.0
position:
x: 0.5
y: 0.85
horizontal_alignment: "center"
vertical_alignment: "top"
component_labels:
font_family: "Arial"
font_size: 12
font_weight: "bold"
color: "#2C3E50"
default_offset:
x: 8
y: 8
# --------------------------------------------------------------------
# Video-Format (9:16)
# --------------------------------------------------------------------
video:
dimensions:
width: 1080 # Breite
height: 1920 # Höhe
format: "mp4"
# --------------------------------------------------------------------
# Map-Stil (Farben, Achsen, etc.)
# --------------------------------------------------------------------
map_style:
figure:
width: 9 # Matplotlib-Einheiten im Verhältnis 9:16
height: 16
background_color: "#FFFFFF"
axes:
position:
left: 0.2
bottom: 0.1
width: 0.6
height: 0.8
x_axis:
ticks: [0, 0.25, 0.5, 0.75, 1]
labels: ["Genesis", "Custom-Built", "Product", "Commodity", "Evolution"]
y_axis:
label: "Value Chain →"
color: "#95A5A6"
alpha: 0.3
grid_alpha: 0.15
label_color: "#34495E"
label_size: 14
label_pad: 15
arrows:
width: 0.005
head_width: 0.02
head_length: 0.02
components:
dot_color: "blue"
dot_zorder: 3
connection_color: "black"
connection_alpha: 0.5
connection_zorder: 1
evolve_arrow:
color: "red"
style: "--"
head_width: 0.02
head_length: 0.02
zorder: 1
marker_size: 12
label_offset: 8
colors: ["#3498DB", "#E74C3C", "#2ECC71", "#F1C40F", "#9B59B6", "#1ABC9C"]
# --------------------------------------------------------------------
# Animierte Welle unten
# --------------------------------------------------------------------
wave_style:
height: 0.15
frequency: 2.0
amplitude: 0.05
speed: 1.0
color: "blue"
alpha: 0.3
num_points: 100
position:
bottom: 0.0
height_ratio: 0.15 # 15% des Diagramms unten
# --------------------------------------------------------------------
# Audio-Konfiguration (ElevenLabs)
# --------------------------------------------------------------------
audio:
language: "de-DE"
elevenlabs:
# Bitte trage hier deinen eigenen ElevenLabs-Key ein
api_key: ""
voices:
# Wir nehmen nur eine Voice "my_voice"
my_voice:
voice_id: ""
stability: 0.75
similarity_boost: 0.75
style: 1.0
use_speaker_boost: true
loudness_boost: 1.0
audio_settings:
model_id: "eleven_multilingual_v2"
optimize_streaming_latency: 0
language: "de-DE"
cache_dir: "audio_cache"
timing:
pause_after_question: 0.5
fade_duration: 0.5
background_music:
enabled: false
file_path: ""
# --------------------------------------------------------------------
# Wardley Map
#
# ACHTUNG: Koordinatenformat = (y, x)
# --------------------------------------------------------------------
wardley_map:
title: "Tea Shop"
# Hook-/Initial-Frage (optional)
initial_question: "Warum ist Tee für unser Geschäft strategisch bedeutsam?"
# Komponenten: anchors + components
# Erstes Koordinatenfeld = y, zweites = x
components:
- name: "Business"
y: 0.95
x: 0.63
question: "Welche langfristige Rolle spielt unser Business?"
label_offset_y: 0
label_offset_x: 0
- name: "Public"
y: 0.95
x: 0.78
question: "Wie beeinflusst die Öffentlichkeit unsere Strategie?"
label_offset_y: 0
label_offset_x: 0
- name: "Cup of Tea"
y: 0.79
x: 0.61
question: "Welche Bedeutung hat der Cup of Tea für die Kunden?"
label_offset_y: -85.48
label_offset_x: 3.78
- name: "Cup"
y: 0.73
x: 0.78
question: "Welche Rolle spielt der Cup für die Teezubereitung?"
- name: "Tea"
y: 0.63
x: 0.81
question: "Warum ist Tee selbst ein zentraler Werttreiber?"
- name: "Hot Water"
y: 0.52
x: 0.80
question: "Welche Anforderungen stellt heißes Wasser in der Kette?"
- name: "Water"
y: 0.38
x: 0.82
question: "Wieso ist Wasser elementar für jede Teezubereitung?"
- name: "Kettle"
y: 0.43
x: 0.35
question: "Wie wichtig ist der Kessel in unserem Prozess?"
label_offset_y: -57
label_offset_x: 4
- name: "Power"
y: 0.10
x: 0.70
question: "Wieso benötigen wir Strom als Grundlage?"
label_offset_y: -27
label_offset_x: 20
# Verbindungen
connections:
- from: "Business"
to: "Cup of Tea"
question: "Welche Wechselwirkung zwischen Business und Cup of Tea?"
- from: "Public"
to: "Cup of Tea"
question: "Wie beeinflusst Public unseren Cup of Tea?"
- from: "Cup of Tea"
to: "Cup"
question: "Warum gehört Cup zur Teezubereitung?"
- from: "Cup of Tea"
to: "Tea"
question: "Wieso braucht Cup of Tea den eigentlichen Tee?"
- from: "Cup of Tea"
to: "Hot Water"
question: "Woher kommt heißes Wasser?"
- from: "Hot Water"
to: "Water"
question: "Warum ist Wasser nötig, um heißes Wasser zu erzeugen?"
- from: "Hot Water"
to: "Kettle"
question: "Wie hängt heißes Wasser vom Kessel ab?"
label: "limited by"
- from: "Kettle"
to: "Power"
question: "Wieso brauchen wir Strom für den Kessel?"
# Evolutions-Pfeile
evolve_arrows:
- from: "Kettle"
to: "Electric Kettle"
# z. B. evolution_x: 0.62
label_offset_y: 16
label_offset_x: 5
- from: "Power"
to: "Power Evolved"
# z. B. evolution_x: 0.89
label_offset_y: -12
label_offset_x: 21
1. Timing und Animation
timing:
question_duration: 3
component_duration: 2
connection_delay: 1
fps: 24
Diese Parameter steuern den zeitlichen Ablauf der Animation:
- Die Fragedauer bestimmt, wie lange jede erklärende Frage eingeblendet wird
- Die Komponentendauer definiert die Einblendezeit neuer Elemente
- Der Connection-Delay schafft eine natürliche Pause vor dem Aufbau von Verbindungen
- Die FPS-Rate gewährleistet flüssige Animationen
2. Visuelle Gestaltung
Text-Styling
text_style:
title:
font_family: "Arial"
font_size: 24
font_weight: "bold"
color: "#2C3E50"
Die Typografie ist vollständig konfigurierbar:
- Schriftarten und -größen für verschiedene Textelemente
- Farbschemata zur visuellen Hierarchiebildung
- Abstände und Positionierung für optimale Lesbarkeit
Map-Design
map_style:
figure:
width: 9
height: 16
components:
colors: ["#3498DB", "#E74C3C", ...]
Das Layout der Wardley Map kann präzise gesteuert werden:
- Anpassbare Dimensionen für verschiedene Ausgabeformate
- Flexibles Farbschema für Komponenten
- Konfigurierbare Achsen und Raster
3. Innovative Wave-Animation
wave_style:
height: 0.15
frequency: 2.0
amplitude: 0.05
speed: 1.0
Die charakteristische Wellenanimation lässt sich feinjustieren:
- Höhe und Frequenz der Wellenbewegung
- Geschwindigkeit und Amplitude für unterschiedliche visuelle Effekte
- Transparenz und Farbgebung
4. Audio-Integration
audio:
elevenlabs:
api_key: ""
voices:
my_voice:
stability: 0.75
similarity_boost: 0.75
Die Sprachausgabe kann detailliert konfiguriert werden:
- Integration verschiedener Stimmen
- Anpassung von Sprachparametern
- Caching-Strategien für optimale Performance
5. Inhaltliche Struktur
Komponenten-Definition
components:
- name: "Business"
y: 0.95
x: 0.63
question: "Welche langfristige Rolle spielt unser Business?"
Jede Komponente wird präzise definiert:
- Position im Koordinatensystem
- Zugehörige erklärende Frage
- Optionale Label-Verschiebungen
Verbindungen und Evolution
connections:
- from: "Business"
to: "Cup of Tea"
question: "Welche Wechselwirkung zwischen Business und Cup of Tea?"
Die Beziehungen zwischen Komponenten werden strukturiert erfasst:
- Klare Definition von Start- und Endpunkten
- Erklärende Fragen für jede Verbindung
- Evolution-Pfeile für strategische Entwicklungen
Vorteile dieser Konfigurationsstruktur
- Wartbarkeit: Die klare YAML-Struktur macht Änderungen einfach und übersichtlich
- Wiederverwendbarkeit: Templates können für verschiedene Maps wiederverwendet werden
- Versionierung: Die textbasierte Konfiguration ermöglicht effizientes Versionsmanagement
- Flexibilität: Alle Aspekte der Visualisierung können ohne Codeänderungen angepasst werden
- Konsistenz: Einheitliche Darstellung über verschiedene Maps hinweg
Praktische Anwendung
- Erstellen Sie eine Kopie der YAML-Datei als Template
- Passen Sie die grundlegenden Stilparameter an Ihr Corporate Design an
- Definieren Sie Ihre Map-Komponenten und deren Beziehungen
- Formulieren Sie die erklärenden Fragen für jeden Schritt
- Justieren Sie Timing und Animation nach Bedarf
- Testen und iterieren Sie, bis das gewünschte Ergebnis erreicht ist
Diese umfangreiche Konfigurierbarkeit macht den WardleyMapAnimator zu einem flexiblen Werkzeug für verschiedenste Anwendungsfälle in der strategischen Kommunikation.