mcpField
W
wedding-immortalist

wedding-immortalist

github.com/curiositechクリエイティブ・メディア257179 回インストール2 日前に更新
リポジトリ

wedding-immortalist について

結婚式の写真や動画から、探索できる3D体験を作る人向けのスキルです。3D Gaussian Splattingによる再構成、顔のクラスタリング、テーマに合わせたデザイン、シーン内での重要な瞬間の再生を扱います。

主な機能

  1. 01写真・動画の3DGS再構成
  2. 02顔検出と本人クラスタリング
  3. 03テーマに合わせたビジュアル設計
  4. 04人物ごとの写真選定
  5. 05シーン内での重要な瞬間の再生
  6. 06ゲストギャラリーと共同修正

活用シーン

  1. 01結婚式の写真や動画を探索可能なシーンにする
  2. 02ゲスト向けの個別写真ギャラリーを作成
  3. 03式や披露宴の場面を3Dシーンで振り返る

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/curiositech/some_claude_skills --skill wedding-immortalist

インストール後、Claude Code で/wedding-immortalistを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.claude-plugin/
plugin.json
references/
face-clustering-aesthetics.md
gaussian-splatting-pipeline.md
theme-extraction.md

詳細

ウェディング・イモータリスト

結婚式の写真や動画を、永遠に楽しめる没入型の3D体験に変換します。カップルやゲストがいつまでも結婚式の感動を追体験できる、生きた思い出を作りましょう。

このスキルを使う場面

次の用途に使います:

  • 何千枚もの結婚式の写真を3DGSシーンに処理する
  • 挙式や披露宴の瞬間をその場で再生する、シアターモード体験を作る
  • 顔でクラスタリングしたゲスト一覧を作成し、ベストショットを選ぶ
  • 結婚式のテーマ(ディスコ、ラスティック、ビーチ、モダン、クィアのお祝い)に合わせてデザインの美学を調整する
  • 美的スコアリングに基づき、ゲストごとにAIが写真を選定する

次の用途には使いません:

  • 一般的な写真編集 → native-app-designerを使用してください
  • 結婚式以外の3DGS → drone-inspection-specialistを使用してください
  • イベント企画 → ウェディングプランナーではありません
  • 3D再構築を伴わない動画編集

コアパイプライン

┌─────────────────────────────────────────────────────────────────┐
│                    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  │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

テーマに適応するデザイン

テーマの検出とマッチング

結婚式ごとに独自の美学があります。それを抽出し、尊重しましょう:

テーマの種類カラーパレットタイポグラフィUI要素
70年代ディスコゴールド、オレンジ、バーントシェンナ、ディープパープルグルーヴィーなスクリプト体、太字のサンセリフ体ミラーボール、光条、暖色系グラデーション
ラスティック/バーンアースカラー、セージ、クリーム、木の色セリフ体、手書き風麻布のテクスチャー、野花のアクセント
ビーチ/コースタルオーシャンブルー、サンド、コーラル、シーフォーム細めのサンセリフ体、スクリプト体貝殻のモチーフ、波の模様
モダンミニマル黒、白、メタリックカラーすっきりした幾何学的サンセリフ体シャープな線、余白
クィア・ジョイ虹色の色域、鮮やかな色表現豊かで多様プライドの要素、祝祭感あふれるマキシマリズム
文化の融合伝統に応じた色伝統とモダンの融合文化的モチーフ、伝統的な模様
写真からテーマを抽出する
# 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 パイプライン

写真/動画の取り込み
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
# 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のトレーニング
# 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 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_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.
]
ID連携のワークフロー
  1. カップルの識別:ユーザーが2~3枚の写真でカップルにタグを付けます
  2. ウェディングパーティー:ユーザーが主要な人物を特定します
  3. 自動伝播:埋め込み表現を使って、すべての写真から一致する人物を探します
  4. ゲストの照合:必要に応じてゲストリストをインポートし、名前を割り当てます
  5. 手動修正:不一致を修正するUIを用意します

美的スコアリング

写真ごとの品質指標
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',
}
人物ごとのベストショット選定
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)

シアターモード

瞬間の検出と再生
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
シーン内での動画投影
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ビューアーのアーキテクチャ

// 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',
  },
};

アンチパターン

「常に全フレームを使う」

誤り:動画のすべてのフレームを3DGS用に抽出する。 理由:データが重複し、処理が10倍遅くなるうえ、品質も向上しません。 適切な方法:動きに基づいてキーフレームを選び、1秒あたり2~3フレームを抽出します。

「巨大なシーンを1つ作る」

誤り:会場全体を単一の3DGSとしてトレーニングする。 理由:メモリー使用量が急増し、品質が低下するうえ、一般向けハードウェアでは実行できません。 適切な方法:空間ごとにトレーニングし、シームレスに切り替えられる統一されたナビゲーションを作成します。

「デフォルトのクラスタリング閾値」

誤り:HDBSCANのデフォルト設定を使う。 理由:結婚式の写真は照明、メイク、角度がさまざまなため、調整が必要です。 適切な方法:写真の枚数や品質のばらつきに応じて、結婚式ごとに調整します。

「テーマを無視する」

誤り:ディスコ風の結婚式に、ありきたりな白やグレーのビューアーUIを使う。 理由:イベントの個性や喜びが失われます。 適切な方法:カップルが選んだ美学を抽出し、尊重します。

「プロの写真だけを使う」

誤り:プロの写真だけを使う。 理由:自然な瞬間、ゲストの視点、撮影範囲の不足を補えません。 適切な方法:プロの写真とゲストの写真を組み合わせて、全体を網羅します。

ゲスト体験機能

共有可能なゲストギャラリー
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
共同での充実
Guest Contribution Portal:
├── Upload their own photos
├── Tag themselves in unidentified clusters
├── Correct misidentifications
├── Add names to unknown guests
└── Submit video moments they captured

成果物

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/

統合ポイント

  • drone-inspection-specialist:3DGS 技術、COLMAP パイプライン
  • collage-layout-expert:写真の配置、美的な構成
  • color-theory-palette-harmony-expert:テーマカラーの抽出
  • clip-aware-embeddings:検索用の写真とテキストのマッチング
  • photo-composition-critic:美的品質のスコアリング

基本理念:結婚式は一度きりです。思い出はいつまでも残るべきです。このスキルは、はかない瞬間を、ふたりならではのお祝いを大切にする、永遠に探索できる体験へと変えます。それがディスコダンスパーティーでも、素朴な納屋での集まりでも、選んだ家族と愛を祝う新郎ふたりの結婚式でも変わりません。

コメント