Transform thousands of wedding photos and hours of footage into an immersive 3D Gaussian Splatting experience with theatre mode replay, face-clustered guest roster, and AI-curated best photos
Scanned 5/29/2026
Install via CLI
openskills install curiositech/some_claude_skills---
name: wedding-immortalist
description: Transform thousands of wedding photos and hours of footage into an immersive 3D Gaussian Splatting experience with theatre mode replay, face-clustered guest roster, and AI-curated best photos
per person. Expert in 3DGS pipelines, face clustering, aesthetic scoring, and adaptive design matching the couple's wedding theme (disco, rustic, modern, LGBTQ+ celebrations). Activate on "wedding photos",
"wedding video", "3D wedding", "Gaussian Splatting wedding", "wedding memory", "wedding immortalize", "face clustering wedding", "best wedding photos". NOT for general photo editing (use native-app-designer),
non-wedding 3DGS (use drone-inspection-specialist), or event planning (not a wedding planner).
allowed-tools: Read,Write,Edit,Bash,Grep,Glob,WebFetch
metadata:
category: AI & Machine Learning
pairs-with:
- skill: photo-content-recognition-curation-expert
reason: Curate wedding photos
- skill: event-detection-temporal-intelligence-expert
reason: Detect wedding events
tags:
- wedding
- 3dgs
- gaussian-splatting
- face-clustering
- memories
---
# Wedding Immortalist
Transform wedding photos and video into an eternal, immersive 3D experience. Create living memories that let couples and guests relive the magic forever.
## When to Use This Skill
**Use for:**
- Processing thousands of wedding photos into 3DGS scenes
- Creating theatre-mode experiences where ceremony/reception moments play in-place
- Building face-clustered guest rosters with best-photo selection
- Matching design aesthetics to wedding themes (disco, rustic, beach, modern, queer celebrations)
- AI-curated photo selection per guest with aesthetic scoring
**NOT for:**
- General photo editing → use native-app-designer
- Non-wedding 3DGS → use drone-inspection-specialist
- Event planning → not a wedding planner
- Video editing without 3D reconstruction
## Core Pipeline
```
┌─────────────────────────────────────────────────────────────────┐
│ WEDDING IMMORTALIST PIPELINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. INGEST 2. RECONSTRUCT 3. CLUSTER │
│ ├─ Photos (1000s) ├─ COLMAP SfM ├─ Face detect │
│ ├─ Video (hours) ├─ 3DGS training ├─ Embeddings │
│ └─ Audio/speeches └─ Scene merge └─ Identity link │
│ │
│ 4. CURATE 5. DESIGN 6. PRESENT │
│ ├─ Aesthetic score ├─ Theme extract ├─ Web viewer │
│ ├─ Per-person best ├─ Color palette ├─ Theatre mode │
│ └─ Moment detect └─ Typography └─ Guest roster │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## Theme-Adaptive Design
### Theme Detection & Matching
Every wedding has a unique aesthetic. Extract and honor it:
| Theme Type | Color Palette | Typography | UI Elements |
|------------|---------------|------------|-------------|
| **70s Disco** | Gold, orange, burnt sienna, deep purple | Groovy script, bold sans | Mirror balls, starbursts, warm gradients |
| **Rustic/Barn** | Earth tones, sage, cream, wood | Serif, hand-lettered | Burlap textures, wildflower accents |
| **Beach/Coastal** | Ocean blues, sand, coral, seafoam | Light sans, script | Shell motifs, wave patterns |
| **Modern Minimal** | Black, white, metallics | Clean geometric sans | Sharp lines, negative space |
| **Queer Joy** | Rainbow spectrums, bold colors | Expressive, varied | Pride elements, celebration maximalism |
| **Cultural Fusion** | Per tradition | Traditional + modern | Cultural motifs, heritage patterns |
### Extracting Theme from Photos
```python
# Theme extraction signals
THEME_SIGNALS = {
'color_palette': 'Dominant colors from venue, florals, attire',
'lighting_mood': 'Warm/cool, natural/dramatic, string lights/chandeliers',
'decor_elements': 'Rustic/modern/vintage/eclectic',
'attire_style': 'Traditional/non-traditional, formal/casual',
'cultural_markers': 'Religious symbols, cultural traditions',
'era_aesthetic': '70s disco, 20s gatsby, etc.'
}
```
## 3D Gaussian Splatting Pipeline
### Photo/Video Ingestion
```
Optimal Input Strategy:
├── Video: Extract 2-3 fps (80% overlap minimum)
├── Photos: Include ALL photographer shots
├── Phone photos: Guest uploads (georeferenced bonus)
└── Coverage: Ceremony + reception + all spaces
Quality Thresholds:
├── Minimum images per space: 50-100
├── Overlap requirement: 60-80%
├── Blur rejection: Laplacian variance < 100 = skip
└── Exposure: Reject severe over/underexposure
```
### COLMAP Structure from Motion
```bash
# Feature extraction
colmap feature_extractor \
--database_path database.db \
--image_path images/ \
--ImageReader.single_camera 0 \
--SiftExtraction.max_image_size 3200
# Exhaustive matching for comprehensive coverage
colmap exhaustive_matcher \
--database_path database.db \
--SiftMatching.guided_matching 1
# Sparse reconstruction
colmap mapper \
--database_path database.db \
--image_path images/ \
--output_path sparse/
# Dense reconstruction (optional, for mesh)
colmap image_undistorter ...
colmap patch_match_stereo ...
```
### 3DGS Training
```python
# Wedding-optimized 3DGS settings
WEDDING_3DGS_CONFIG = {
'iterations': 50_000, # High quality for permanent archive
'densify_from_iter': 500,
'densify_until_iter': 15_000,
'densification_interval': 100,
'opacity_reset_interval': 3000,
'sh_degree': 3, # Full spherical harmonics for lighting
'percent_dense': 0.01,
'densify_grad_threshold': 0.0002,
}
# Multi-space merge strategy
SPACES = ['ceremony', 'cocktail_hour', 'reception', 'photo_booth', 'dance_floor']
# Train each separately, then create unified navigation
```
## Face Clustering System
### Pipeline
```
┌────────────────────────────────────────────────────────┐
│ FACE CLUSTERING PIPELINE │
├────────────────────────────────────────────────────────┤
│ 1. Detection (RetinaFace/MTCNN) │
│ └─ All faces in all photos │
│ 2. Alignment (5-point landmark) │
│ └─ Standardize for embedding │
│ 3. Embedding (ArcFace/AdaFace) │
│ └─ 512-dim identity vector per face │
│ 4. Clustering (HDBSCAN) │
│ └─ Group by identity, handle edge cases │
│ 5. Identity Linking │
│ └─ Match to couple, wedding party, family, guests │
│ 6. Best Photo Selection │
│ └─ Aesthetic scoring per cluster │
└────────────────────────────────────────────────────────┘
```
### Clustering Parameters
```python
CLUSTERING_CONFIG = {
'min_cluster_size': 3, # At least 3 photos to form identity
'min_samples': 2,
'metric': 'cosine',
'cluster_selection_epsilon': 0.3,
'cluster_selection_method': 'eom',
}
# Identity priority for naming
IDENTITY_PRIORITY = [
'couple_1', 'couple_2', # The married couple
'wedding_party', # Bridesmaids, groomspeople
'parents', # Parents of the couple
'grandparents',
'siblings',
'extended_family',
'friends',
'vendors', # Photographer, DJ, etc.
]
```
### Identity Linking Workflow
1. **Couple identification**: User tags couple in 2-3 photos
2. **Wedding party**: User identifies key people
3. **Auto-propagation**: Embeddings match across all photos
4. **Guest matching**: Optional guest list import for name assignment
5. **Manual corrections**: UI for fixing mismatches
## Aesthetic Scoring
### Per-Photo Quality Metrics
```python
AESTHETIC_FEATURES = {
# Technical quality
'sharpness': 'Laplacian variance, MTF analysis',
'exposure': 'Histogram analysis, dynamic range',
'noise': 'High-ISO detection, grain analysis',
# Composition
'rule_of_thirds': 'Subject placement scoring',
'symmetry': 'For venue/group shots',
'framing': 'Negative space, balance',
# Face-specific
'expression': 'Smile detection, eye openness',
'blink_detection': 'Eyes closed penalty',
'gaze_direction': 'Looking at camera vs. candid',
'face_occlusion': 'Nothing blocking the face',
'face_lighting': 'Even illumination, no harsh shadows',
# Emotional
'genuine_smile': 'Duchenne marker detection',
'moment_quality': 'Laughter, tears, embraces',
}
```
### Best Photo Selection Per Person
```python
def select_best_photos(cluster_photos, n=5):
"""Select top N photos for a person across all their appearances."""
scores = []
for photo in cluster_photos:
score = (
0.25 * technical_quality(photo) +
0.25 * composition_score(photo) +
0.30 * expression_quality(photo) +
0.20 * context_diversity(photo, scores) # Avoid all similar shots
)
scores.append((photo, score))
# Select top N with diversity constraint
return diverse_top_n(scores, n, diversity_threshold=0.7)
```
## Theatre Mode
### Moment Detection & Playback
```
KEY MOMENTS (auto-detected + user-tagged):
├── Ceremony
│ ├── Processional
│ ├── Vows exchange
│ ├── Ring ceremony
│ ├── First kiss
│ └── Recessional
├── Reception
│ ├── Grand entrance
│ ├── First dance
│ ├── Parent dances
│ ├── Toasts/speeches
│ ├── Cake cutting
│ └── Bouquet/garter
├── Party
│ ├── Dance floor highlights
│ └── Exit/sendoff
└── Candids
├── Emotional moments (tears, laughter)
└── Spontaneous joy
```
### In-Scene Video Projection
```
Theatre Mode Rendering:
1. User navigates 3DGS scene freely
2. Approaches "moment marker" (glowing orb/frame)
3. Video/slideshow plays IN the 3D space
├── On walls where projector was
├── Floating frames in dance floor area
└── Photo booth backdrop location
4. Spatial audio for speeches/music
5. User can pause, scrub, exit to continue exploring
```
## Web Viewer Architecture
```javascript
// Wedding Immortalist Viewer Components
const VIEWER_FEATURES = {
// 3DGS Navigation
gaussianSplatting: {
renderer: 'three-gaussian-splat',
navigation: 'orbit + first-person',
qualityLevels: ['preview', 'standard', 'maximum'],
},
// Theatre Mode
theatreMode: {
momentMarkers: true,
videoInScene: true,
spatialAudio: true,
transitionEffects: 'theme-matched',
},
// Guest Roster
guestRoster: {
faceGrid: 'clustered by identity',
photoGallery: 'per-person best shots',
searchByName: true,
shareableLinks: 'per-guest galleries',
},
// Theme
theming: {
colorPalette: 'extracted from wedding',
typography: 'theme-matched',
uiElements: 'aesthetic-consistent',
},
};
```
## Anti-Patterns
### "All Frames, All the Time"
**Wrong**: Extracting every video frame for 3DGS.
**Why**: Redundant data, 10x slower processing, no quality improvement.
**Right**: 2-3 fps extraction with motion-based keyframe selection.
### "One Giant Scene"
**Wrong**: Training single 3DGS for entire venue.
**Why**: Memory explosion, quality degradation, impossible on consumer hardware.
**Right**: Train per-space, create unified navigation with seamless transitions.
### "Default Clustering Threshold"
**Wrong**: Using default HDBSCAN settings.
**Why**: Wedding photos have varying lighting, makeup, angles—need tuning.
**Right**: Tune per-wedding based on photo count and quality variance.
### "Ignoring Theme"
**Wrong**: Generic white/gray viewer UI for disco wedding.
**Why**: Destroys the personality and joy of the event.
**Right**: Extract and honor the couple's aesthetic choices.
### "Photographer Only"
**Wrong**: Using only professional photos.
**Why**: Misses candid moments, guest perspectives, coverage gaps.
**Right**: Merge professional + guest photos for complete coverage.
## Guest Experience Features
### Shareable Guest Galleries
```
Per-Guest Experience:
├── Personalized link: yourwedding.com/guests/aunt-martha
├── Their best photos (AI-curated)
├── Photos with the couple
├── Group photos they appear in
├── Download options (full-res)
└── "Add to my memories" for their own archives
```
### Collaborative Enhancement
```
Guest Contribution Portal:
├── Upload their own photos
├── Tag themselves in unidentified clusters
├── Correct misidentifications
├── Add names to unknown guests
└── Submit video moments they captured
```
## Output Deliverables
```
wedding-immortalist-output/
├── 3dgs-scenes/
│ ├── ceremony/
│ ├── cocktail/
│ ├── reception/
│ └── unified-navigation.json
├── guest-roster/
│ ├── face-clusters/
│ ├── identity-mapping.json
│ └── per-person-galleries/
├── theatre-mode/
│ ├── moment-markers.json
│ ├── video-segments/
│ └── spatial-audio/
├── web-viewer/
│ ├── index.html
│ ├── theme-config.json
│ └── assets/
└── exports/
├── full-resolution-photos/
├── guest-gallery-zips/
└── video-compilations/
```
## Integration Points
- **drone-inspection-specialist**: 3DGS techniques, COLMAP pipeline
- **collage-layout-expert**: Photo arrangement, aesthetic composition
- **color-theory-palette-harmony-expert**: Theme color extraction
- **clip-aware-embeddings**: Photo-text matching for search
- **photo-composition-critic**: Aesthetic quality scoring
---
**Core Philosophy**: A wedding happens once. The memories should live forever. This skill transforms ephemeral moments into an eternal, explorable experience that honors the couple's unique celebration—whether it's a disco dance party, a rustic barn gathering, or two grooms celebrating their love with chosen family.
No comments yet. Be the first to comment!