{
  "status": "completed",
  "completed_count": 16,
  "applicable_count": 16,
  "failed_count": 0,
  "data": {
    "scenes": [
      {
        "scene_index": 1,
        "scene_heading": "1. 바다 속 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "바다 밑 쓰레기 더미에 찰리의 신체 일부가 방치되어 있던 상태",
            "after_state": "거대한 크레인에 의해 바다 위로 수거되는 상태",
            "description": "바다 밑에 가라앉아 있던 찰리의 로봇 손가락이 거대한 크레인의 덮침과 함께 수면 위로 건져 올려진다."
          }
        ]
      },
      {
        "scene_index": 2,
        "scene_heading": "2. 쓰레기 수거선 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "바닷속에서 크레인에 잡혀 올라오던 상태",
            "after_state": "그물에 몸이 감긴 채 쓰레기 수거선의 갑판으로 떨어진 상태",
            "description": "고철 로봇인 찰리가 다른 쓰레기 잔해들과 함께 그물에 걸려 쓰레기 수거선 갑판으로 떨어진다."
          }
        ]
      },
      {
        "scene_index": 3,
        "scene_heading": "3. 도로 위 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "쓰레기 수거선 갑판에 있던 상태",
            "after_state": "덤프트럭에 실려 육지 도로 위를 이동하는 상태",
            "description": "찰리가 다른 고철들과 함께 덤프트럭에 실려 이동 중이며, 덤프트럭 운전사는 자율주행에 의지한 채 졸고 있다."
          }
        ]
      },
      {
        "scene_index": 4,
        "scene_heading": "4. 고급주택가. 자동차 안 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "현우가 페드로의 도면을 신뢰하며 확인하려던 상태",
            "after_state": "도면의 질이 너무 낮아 현우가 불만과 의구심을 갖게 된 상태",
            "description": "도둑질을 위해 준비한 페드로의 도면을 본 현우가 알아볼 수 없다며 페드로를 타박한다."
          },
          {
            "beat_index": 2,
            "change_type": "action",
            "before_state": "차 안에서 도면을 보며 대기하던 상태",
            "after_state": "차에서 내려 페드로와 통신을 확인하고 목표 주택으로 접근하는 상태",
            "description": "현우가 차에서 내려 페드로와 이어폰을 통한 무전 통신이 정상적으로 작동하는지 확인하고 범행을 시작한다."
          }
        ]
      },
      {
        "scene_index": 5,
        "scene_heading": "5. 고급주택가 + 집안 거실 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "reaction",
            "before_state": "예상한 최신 도어락이 있을 것이라 믿고 진입하려던 상태",
            "after_state": "열쇠가 필요한 구형 도어락임을 깨닫고 당황하며 페드로에게 화를 내는 상태",
            "description": "현우가 현관문 앞에 다가섰으나 옛날 방식의 자물쇠를 보고 당황하며 페드로와 실랑이를 벌인다."
          },
          {
            "beat_index": 2,
            "change_type": "action",
            "before_state": "문이 열리지 않아 진입 방법에 대해 고민하던 상태",
            "after_state": "핸드폰 소음 공격으로 안에서 청소하던 여자를 무력화시킨 상태",
            "description": "현우가 창틀에 핸드폰을 놓고 전화를 걸어 여자를 유인한 뒤, 페드로가 노이즈 사운드를 재생해 여자를 기절시킨다."
          },
          {
            "beat_index": 3,
            "change_type": "situation",
            "before_state": "조용히 여자를 무력화시켜 몰래 침투하려던 상태",
            "after_state": "셰퍼드의 공격으로 로봇임이 들통나고 사이렌이 울려 경찰에 발각된 상태",
            "description": "셰퍼드가 짖으며 달려들자 현우가 여자를 떨어뜨려 여자가 금속 로봇임이 드러나고, 즉각적으로 경찰 사이렌 시스템이 작동한다."
          },
          {
            "beat_index": 4,
            "change_type": "reaction",
            "before_state": "예상치 못한 위기 상황에 당황하여 쫓기는 상태",
            "after_state": "셰퍼드를 떨쳐내고 2층 창문 밖으로 몸을 던져 도주하는 상태",
            "description": "현우가 2층으로 황급히 도망치며 자신을 무는 셰퍼드를 쳐내고 과감하게 창문 밖으로 뛰어내려 착지한다."
          },
          {
            "beat_index": 5,
            "change_type": "situation",
            "before_state": "무사히 착지하여 위험을 모면했다고 생각한 상태",
            "after_state": "동료인 페드로는 도망가고, 혼자 경찰에게 포위되어 체포되는 절망적인 상태",
            "description": "현우가 바닥에 착지한 직후 이미 경찰들이 총을 겨누고 있으며, 페드로의 차는 혼자 도망가버린 것을 알게 된다."
          }
        ]
      },
      {
        "scene_index": 6,
        "scene_heading": "6. 인천 난민촌 소개 몽타주 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "정비된 도로 위를 달리던 트럭의 평온한 상태",
            "after_state": "난민촌의 혼란스럽고 무질서한 환경 속으로 진입하여 거주민들과 갈등을 빚는 상태",
            "description": "덤프트럭이 더러운 난민 거주지역으로 진입하며 흙탕물을 튀기고, 아줌마와 취객 등 거주민들의 욕설과 공격을 받게 된다."
          }
        ]
      },
      {
        "scene_index": 7,
        "scene_heading": "7. 쓰레기장 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "쓰레기가 부어지고 난 뒤의 버려진 쓰레기장 상태",
            "after_state": "라울과 앰버가 쓰레기 더미 안에서 등장해 고철 부품을 해체하며 활동을 시작한 상태",
            "description": "덤프트럭이 쓰레기를 쏟아내고 떠나자, 라울이 고개를 내밀고 앰버가 능숙하게 로봇 팔을 해체하며 나타난다."
          },
          {
            "beat_index": 2,
            "change_type": "decision",
            "before_state": "단순히 고철이나 부품을 수집하던 상태",
            "after_state": "돈이 될 만한 부서진 주크박스를 발견하고 이를 수리하기로 의기투합한 상태",
            "description": "라울이 주크박스를 발견하고 값어치가 있을 거라 생각하여, 앰버를 불러 고칠 수 있는지 묻고 수리를 결심한다."
          }
        ]
      },
      {
        "scene_index": 8,
        "scene_heading": "8. 쓰레기장 공터 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "이전 씬에서 주크박스를 고치려 했으나 부품이 부족해 소리가 나지 않던 상태",
            "after_state": "스피커를 찾아 연결해 마침내 음악이 흘러나오게 만든 상태",
            "description": "앰버가 쓰레기 더미에서 찾은 스피커를 주크박스에 연결하여 성공적으로 음악을 튼다."
          },
          {
            "beat_index": 2,
            "change_type": "situation",
            "before_state": "음악을 들으며 평화롭게 있던 상태",
            "after_state": "쓰레기 더미에서 거대한 로봇이 튀어나와 아이들이 겁에 질린 상태",
            "description": "음악 소리에 반응한 찰리가 쓰레기 더미를 뚫고 일어나 모습을 드러내자 앰버와 라울이 놀라 넘어진다."
          },
          {
            "beat_index": 3,
            "change_type": "reaction",
            "before_state": "찰리가 방금 깨어나 주변을 살피고 아이들을 응시하는 상태",
            "after_state": "앰버를 소영으로 착각해 안았다가 아님을 인지하고 실망한 상태",
            "description": "찰리가 앰버를 자신의 기억 속 소영으로 착각하여 와락 껴안지만, 곧바로 데이터 분석을 통해 아님을 확인하고 슬픈 표정을 짓는다."
          },
          {
            "beat_index": 4,
            "change_type": "relationship",
            "before_state": "아이들이 찰리의 정체나 능력을 전혀 모르는 낯선 상태",
            "after_state": "앰버가 찰리에게 말을 걸고 통성명하며 교감을 시작한 상태",
            "description": "앰버가 찰리에게 다가가 인사를 건네며 이름을 묻자, 찰리가 기계음으로 자신의 이름을 대답하며 서로 관계를 맺는다."
          },
          {
            "beat_index": 5,
            "change_type": "decision",
            "before_state": "찰리와 음악에 맞춰 교감하며 놀고 있던 상태",
            "after_state": "위협이 다가오자 라울의 만류에도 불구하고 찰리를 데려가기로 결심한 상태",
            "description": "로봇을 분해해가는 쿠마 패거리가 다가오자, 숨어야 한다는 라울의 말에도 앰버는 찰리를 두고 가지 않고 데려가기로 마음먹는다."
          },
          {
            "beat_index": 6,
            "change_type": "action",
            "before_state": "쿠마 패거리에게 찰리의 정체를 들킬 위기에 처한 상태",
            "after_state": "찰리를 위장시켜 쿠마 패거리를 무사히 속이고 페드로의 집으로 향하는 상태",
            "description": "앰버 일행은 찰리에게 낡은 외투와 모자를 입혀 뚱뚱한 아저씨처럼 위장함으로써 쿠마 패거리의 눈을 피하고 난민촌으로 향한다."
          }
        ]
      },
      {
        "scene_index": 9,
        "scene_heading": "9. 인공제방 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "난민들이 인공제방 보수 공사를 평화롭게 진행하던 상태",
            "after_state": "관리소장이 갑작스럽게 공사 무기한 중지를 선언해 혼란에 빠진 상태",
            "description": "관리소장이 트럭에서 내려 정부 지침을 이유로 일방적인 공사 중지를 통보한다."
          },
          {
            "beat_index": 2,
            "change_type": "reaction",
            "before_state": "미연과 난민들이 이유를 물으며 정당하게 항의하던 상태",
            "after_state": "관리소장의 차별적 폭언과 무시에 분노하여 통제선으로 달려드는 상태",
            "description": "방벽 붕괴 위험을 호소하는 미연과 난민들을 관리소장이 무시하고 장비 통제를 명령하자 난민들이 분노하여 거세게 항의한다."
          },
          {
            "beat_index": 3,
            "change_type": "situation",
            "before_state": "거센 말싸움과 항의가 이어지던 상태",
            "after_state": "물리적 폭력이 발생하고 관리소장은 도주해 충격과 분노가 남은 상태",
            "description": "난민남 1이 억울함을 토로하다 경비병에게 폭력적으로 제압당해 쓰러지고, 겁먹은 관리소장은 도망치듯 차를 타고 떠난다."
          }
        ]
      },
      {
        "scene_index": 10,
        "scene_heading": "10. 난민 재판소 – D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "현우가 개에 물려 열이 나고 정신이 혼미한 상태로 재판을 받던 상태",
            "after_state": "갑작스러운 국외 추방 선고를 받고 충격에 정신이 번쩍 든 상태",
            "description": "아파서 약을 구걸하던 현우에게 재판관은 사정을 듣지 않고 다음 달까지 추방하라는 판결을 내린다."
          },
          {
            "beat_index": 2,
            "change_type": "action",
            "before_state": "판결 직후 무력하게 경찰에게 끌려나가려던 상태",
            "after_state": "추방에 불복하며 재판관에게 달려들어 멱살을 잡고 발악하는 상태",
            "description": "경찰이 현우를 완력으로 데려가려 하자, 현우는 필사적으로 재판관에게 덤벼들어 죽어도 못 나간다며 거세게 저항한다."
          },
          {
            "beat_index": 3,
            "change_type": "situation",
            "before_state": "재판관의 멱살을 잡고 거칠게 저항하던 상태",
            "after_state": "경찰의 곤봉에 맞아 기절하여 완전히 무력화된 상태",
            "description": "현우의 난동에 경찰이 곤봉으로 현우의 머리를 가격하여 그 자리에서 의식을 잃게 만든다."
          }
        ]
      },
      {
        "scene_index": 11,
        "scene_heading": "11. 회상. 미국 도로 위 – N (흑백)",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "인종차별 폭도들 앞에서 미연과 아이들이 죽음의 공포에 떨고 있던 상태",
            "after_state": "아버지의 희생으로 가족이 도망칠 틈을 얻었지만 눈앞에서 아버지가 총에 맞는 비극을 겪은 상태",
            "description": "복면이 미연을 쏘려던 찰나 아버지가 덮치며 도망치라고 소리치고, 직후 아버지가 다른 복면의 총에 맞는다."
          }
        ]
      },
      {
        "scene_index": 12,
        "scene_heading": "12. 난민 재판소 밖 – N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "앞선 재판소에서의 폭행으로 기절한 채 쓰레기 더미에 버려져 악몽을 꾸던 상태",
            "after_state": "악몽에서 깨어나 다리는 절뚝이지만 의식을 완전히 회복하고 일어난 상태",
            "description": "쓰레기 더미 사이에서 현우가 과거의 악몽에서 헉헉대며 깨어나 비틀거리며 몸을 일으킨다."
          },
          {
            "beat_index": 2,
            "change_type": "decision",
            "before_state": "재판소에서 빈털터리로 쫓겨나 처참하게 버려진 줄 알았던 상태",
            "after_state": "난동 중에 몰래 훔친 재판관의 지갑에서 돈을 챙기며 살아남기 위한 실리를 취하는 상태",
            "description": "현우는 주머니에서 재판관의 지갑을 꺼내 돈만 챙기고 지갑 본체는 미련 없이 버린다."
          }
        ]
      },
      {
        "scene_index": 13,
        "scene_heading": "13. 허름한 골목 식당 - N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "지갑에서 빼낸 돈으로 가족 모두의 거주증을 얻을 수 있다고 기대함",
            "after_state": "물가 상승을 핑계로 장규석에게 거주증 발급을 거절당하고 추가 금액을 요구받음",
            "description": "현우는 훔친 돈을 건네며 가족의 거주증을 요구하지만, 장규석은 금액이 부족하다며 현우의 기대를 꺾어버린다."
          },
          {
            "beat_index": 2,
            "change_type": "emotion",
            "before_state": "장규석의 뻔뻔한 태도와 요구에 분노함",
            "after_state": "통금 사이렌이 울리면서 분노를 억누르고 어쩔 수 없이 체념함",
            "description": "분노한 현우가 항의하려 하지만, 통금을 알리는 사이렌 소리에 무력감을 느끼며 장규석의 말을 받아들이고 돌아선다."
          }
        ]
      },
      {
        "scene_index": 14,
        "scene_heading": "14. 난민 수용서 전경 몽타주 – N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "통금 시간이 임박하여 수용소 밖에서 서둘러 뛰어옴",
            "after_state": "소등 조치와 함께 문이 닫히기 직전 간신히 수용소 안으로 진입함",
            "description": "수용소 전체에 통금 방송이 울리고 암전되는 급박한 상황 속에서 현우가 아슬아슬하게 출입문을 통과해 들어온다."
          },
          {
            "beat_index": 2,
            "change_type": "emotion",
            "before_state": "집을 향해 지친 발걸음으로 걸어옴",
            "after_state": "컨테이너 문고리를 잡고 가족을 마주하기 전 망설임을 느낌",
            "description": "현우는 무사히 자신의 컨테이너 앞까지 오지만, 거주권 발급에 실패한 절망감과 다친 몸 때문에 문을 열기 전 잠시 머뭇거린다."
          }
        ]
      },
      {
        "scene_index": 15,
        "scene_heading": "15. 현우의 컨테이너 안 – N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "가족들의 눈을 피해 상처를 숨긴 채 허겁지겁 밥을 먹음",
            "after_state": "곁을 맴돌던 앰버가 현우의 다리에서 피가 나는 것을 발견하고 놀람",
            "description": "일상적인 저녁 식사 중, 앰버가 현우의 다리에 난 상처와 피를 우연히 발견하게 되면서 현우의 부상 사실이 가족에게 드러난다."
          },
          {
            "beat_index": 2,
            "change_type": "relationship",
            "before_state": "현우가 쓰레기장에 다녀온 앰버를 걱정하며 나무람",
            "after_state": "미연이 현우의 무책임을 탓하며 모자 간의 갈등으로 번짐",
            "description": "현우가 앰버의 위험한 행동을 꾸짖자, 미연은 오히려 앰버를 혼자 둔 현우를 원망하며 둘 사이의 분위기가 냉랭해진다."
          },
          {
            "beat_index": 3,
            "change_type": "decision",
            "before_state": "가족을 위해 거주권을 얻어 상황을 해결하려 함",
            "after_state": "미연의 잔소리에 답답함이 폭발하여 홧김에 집을 나감",
            "description": "추방당하지 말라는 미연의 당부에 현우는 변하지 않는 세상에 대한 불만과 절망을 터뜨리며 충동적으로 집을 뛰쳐나간다."
          },
          {
            "beat_index": 4,
            "change_type": "emotion",
            "before_state": "오빠에게 찰리에 대한 이야기를 하려고 기회를 기다림",
            "after_state": "현우가 나가버리는 바람에 말을 전하지 못하고 혼자 아쉬워함",
            "description": "방문 뒤에서 상황을 살피던 앰버는 현우가 화를 내며 나가버리자, 준비했던 이야기를 꺼내지도 못한 채 실망감을 느낀다."
          }
        ]
      },
      {
        "scene_index": 16,
        "scene_heading": "16. 난민 수용소 골목 – N",
        "beats": []
      }
    ],
    "total_beats": 36
  },
  "step_id": "beat_extract",
  "run_id": "c12d923d-0619-4df4-8b9f-fe0e01eb9c3c",
  "resolved_model": "gemini-pro",
  "updated_at": "2026-06-25T06:19:56.004454+00:00",
  "schema_version": 1,
  "config_hash": "99914b932bd37a50",
  "project_config_snapshot": {}
}