{
  "title": "mascot_live",
  "source": "webm only 20260818",
  "updated": "2026-08-31T01:46",
  "fps": 16,
  "default_mode": "alive",
  "asset_version": "mascot-vp9-alpha-20260831_0146",
  "note": "WebM VP9+alpha (yuva420p) only. Black-bg / no-cutout encodes rejected.",
  "behavior": {
    "idle_ms": 30000,
    "idle_clip": "idle",
    "bored_clips": [
      "stand_to_squat",
      "squat_wait",
      "squat_to_stand"
    ],
    "react_clips": [
      "punched"
    ],
    "react_invite_clips": [
      "welcome_invite_a",
      "welcome_invite_b"
    ],
    "click_clip": "punched",
    "hover_sequence": [
      "shoo_mouse"
    ],
    "hover_return_clip": "",
    "hover_away_ms_min": 3000,
    "hover_away_ms_max": 8000,
    "hover_cooldown_ms": 28000,
    "speak_clips": [
      "lip_loop",
      "welcome_wave",
      "tap_screen"
    ]
  },
  "modes": {
    "alive": {
      "label": "活人感（idle 循环 + 久无操作下蹲起身 + hover/click 互动）",
      "clips": [
        "idle"
      ]
    },
    "idle": {
      "label": "仅 idle 双手下垂待机循环",
      "clips": [
        "idle"
      ]
    },
    "bored": {
      "label": "下蹲→蹲姿等待5秒→起身（一次）",
      "clips": [
        "stand_to_squat",
        "squat_wait",
        "squat_to_stand"
      ]
    },
    "react": {
      "label": "点击反应（punched / welcome fallback）",
      "clips": [
        "punched"
      ]
    },
    "shoo_mouse": {
      "label": "驱赶鼠标（hover 起）",
      "clips": [
        "shoo_mouse"
      ]
    },
    "punched": {
      "label": "被戳/挨打（click）",
      "clips": [
        "punched"
      ]
    },
    "lip_loop": {
      "label": "说话口型循环（身体锁待机）",
      "clips": [
        "lip_loop"
      ]
    },
    "tap_screen": {
      "label": "拍屏幕（旁白口型）",
      "clips": [
        "tap_screen"
      ]
    },
    "welcome_wave": {
      "label": "欢迎挥手（旁白口型）",
      "clips": [
        "welcome_wave"
      ]
    },
    "welcome_invite_a": {
      "label": "欢迎邀请A",
      "clips": [
        "welcome_invite_a"
      ]
    },
    "welcome_invite_b": {
      "label": "欢迎邀请B",
      "clips": [
        "welcome_invite_b"
      ]
    },
    "cycle": {
      "label": "（调试）06下蹲 → 蹲姿等待5秒 → 07起身 循环",
      "clips": [
        "stand_to_squat",
        "squat_wait",
        "squat_to_stand"
      ]
    },
    "squat": {
      "label": "仅 06 待机→下蹲回眸",
      "clips": [
        "stand_to_squat"
      ]
    },
    "stand": {
      "label": "仅 07 蹲回眸→起身",
      "clips": [
        "squat_to_stand"
      ]
    },
    "all_run": {
      "label": "全部串播（不含离场）",
      "clips": [
        "idle",
        "stand_to_squat",
        "squat_wait",
        "squat_to_stand",
        "punched",
        "shoo_mouse",
        "lip_loop",
        "welcome_wave",
        "tap_screen",
        "welcome_invite_a",
        "welcome_invite_b",
        "react"
      ]
    },
    "speak": {
      "label": "说话/旁白口型（lip_loop + 挥手 + 拍屏）",
      "clips": [
        "lip_loop",
        "welcome_wave",
        "tap_screen"
      ]
    },
    "hover": {
      "label": "悬停赶虫子",
      "clips": [
        "shoo_mouse"
      ]
    },
    "squat_wait": {
      "label": "仅蹲姿等待（5秒）",
      "clips": [
        "squat_wait"
      ]
    },
    "squat_shy_cover": {
      "label": "蹲姿害羞捂嘴等待",
      "clips": [
        "squat_shy_cover"
      ]
    },
    "squat_heart_give": {
      "label": "蹲姿递爱心等待",
      "clips": [
        "squat_heart_give"
      ]
    },
    "squat_stretch_yawn": {
      "label": "蹲姿伸懒腰哈欠等待",
      "clips": [
        "squat_stretch_yawn"
      ]
    },
    "squat_ref_trio": {
      "label": "蹲姿参考动作三段串播（捂嘴→递爱心→伸懒腰）",
      "clips": [
        "squat_shy_cover",
        "squat_heart_give",
        "squat_stretch_yawn"
      ]
    }
  },
  "clips": {
    "idle": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/idle.webm",
      "label": "04 双手下垂待机（循环）",
      "ae_source": "IDLE_04 / AE 04_飘逸中段收拢待机"
    },
    "stand_to_squat": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/stand_to_squat.webm",
      "label": "06 下蹲",
      "ae_source": "input/ae_key_samples/06_*"
    },
    "squat_to_stand": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/squat_to_stand.webm",
      "label": "07 起身",
      "ae_source": "input/ae_key_samples/07_*"
    },
    "react": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/react.webm",
      "label": "点击反应 alias（welcome_wave 备份）",
      "ae_source": "welcome_pack greet_wave"
    },
    "lip_loop": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/lip_loop.webm",
      "label": "说话口型循环（身体锁待机，仅嘴）",
      "source": "ae_keyed welcome_pack_20260814 lip_loop",
      "role": "speak",
      "canvas": "736x1232"
    },
    "welcome_wave": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/welcome_wave.webm",
      "label": "欢迎挥手（旁白/说话口型）",
      "source": "ae_keyed welcome_pack_20260814 idle-endpoints",
      "role": "speak"
    },
    "welcome_invite_a": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/welcome_invite_a.webm",
      "label": "欢迎邀请A",
      "source": "ae_keyed welcome_pack_20260814 idle-endpoints"
    },
    "welcome_invite_b": {
      "frame_count": 150,
      "webm": "/mascot_live/webm/welcome_invite_b.webm",
      "label": "欢迎邀请B",
      "source": "ae_keyed welcome_pack_20260814 idle-endpoints"
    },
    "shoo_mouse": {
      "frame_count": 160,
      "webm": "/mascot_live/webm/shoo_mouse.webm",
      "label": "驱赶鼠标 / shoo bugs",
      "source": "react_actions/01_shoo_bugs.mp4 @16fps chroma #00FF00",
      "align": "batch1_736x1232_foot_lock_v1",
      "canvas": "736x1232"
    },
    "punched": {
      "frame_count": 160,
      "webm": "/mascot_live/webm/punched.webm",
      "label": "被戳挨打",
      "source": "react_actions/02_punched.mp4 @16fps chroma #00FF00",
      "align": "batch1_736x1232_foot_lock_v1",
      "canvas": "736x1232"
    },
    "tap_screen": {
      "frame_count": 160,
      "webm": "/mascot_live/webm/tap_screen.webm",
      "label": "拍屏幕（旁白/说话口型）",
      "source": "react_actions/03_tap_screen.mp4 @16fps chroma #00FF00",
      "align": "batch1_736x1232_foot_lock_v1",
      "canvas": "736x1232",
      "role": "speak"
    },
    "squat_wait": {
      "frame_count": 80,
      "webm": "/mascot_live/webm/squat_wait.webm",
      "label": "蹲姿等待（AE精修·呼吸微动）",
      "source": "bailian KF2V + AE Keylight + matte polish (squat_wait_20260828_163945)",
      "anchor": "Q_squat_wait",
      "canvas": "736x1232",
      "contract": "first=last=squat; fixed scale; no stand-up; AE polished matte"
    },
    "squat_shy_cover": {
      "frame_count": 80,
      "webm": "/mascot_live/webm/squat_shy_cover.webm",
      "label": "蹲姿害羞捂嘴等待",
      "source": "bailian KF2V + AE Keylight (squat_shy_cover)",
      "anchor": "Q_squat_wait",
      "canvas": "736x1232",
      "contract": "Q->Q; reference-only middle acting; fixed scale; no stand-up; AE key",
      "role": "hold"
    },
    "squat_heart_give": {
      "frame_count": 80,
      "webm": "/mascot_live/webm/squat_heart_give.webm",
      "label": "蹲姿递爱心等待",
      "source": "bailian KF2V + AE Keylight (squat_heart_give)",
      "anchor": "Q_squat_wait",
      "canvas": "736x1232",
      "contract": "Q->Q; reference-only middle acting; fixed scale; no stand-up; AE key",
      "role": "hold"
    },
    "squat_stretch_yawn": {
      "frame_count": 80,
      "webm": "/mascot_live/webm/squat_stretch_yawn.webm",
      "label": "蹲姿伸懒腰哈欠等待",
      "source": "bailian KF2V + AE Keylight (squat_stretch_yawn)",
      "anchor": "Q_squat_wait",
      "canvas": "736x1232",
      "contract": "Q->Q; reference-only middle acting; fixed scale; no stand-up; AE key",
      "role": "hold"
    }
  }
}
