{
  "status": "partial",
  "completed_count": 23,
  "applicable_count": 28,
  "failed_count": 5,
  "data": {
    "scenes": [
      {
        "scene_index": 1,
        "scene_heading": "S#1. 숲속 / 해 질 무렵",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "부상을 입고 겁에 질린 채 숲속을 필사적으로 도망치고 있음",
            "after_state": "갑자기 달려온 정체불명의 검은 인영에게 덮쳐져 비명을 지르며 피습당함",
            "description": "도망치던 남자가 숲속에서 갑작스럽게 나타난 검은 인영의 습격을 받는다."
          }
        ]
      },
      {
        "scene_index": 2,
        "scene_heading": "S#2. 도시 뒷골목 / N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "가로등 아래서 남녀가 가쁜 숨을 몰아쉬며 애정 행각을 벌이는 듯 뒤엉켜 있음",
            "after_state": "붉은 눈동자의 남자가 여자의 목을 물어뜯어 살해함",
            "description": "애정 행각처럼 보이던 두 사람의 행동이 끔찍한 살인 행위로 돌변한다."
          }
        ]
      },
      {
        "scene_index": 3,
        "scene_heading": "S#3. 현장 / D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "연이어 발생한 끔찍한 연쇄살인으로 현장이 남겨져 있음",
            "after_state": "혜수의 지휘 하에 경찰이 현장을 통제하고 갑호 비상령이 내려진 수사 국면으로 전환됨",
            "description": "앞선 살인 사건 현장들을 경찰이 수습하며, 대대적인 수사 체계가 가동된다."
          }
        ]
      },
      {
        "scene_index": 4,
        "scene_heading": "S#4. 옥탑방 / D",
        "beats": []
      },
      {
        "scene_index": 5,
        "scene_heading": "S#5. 옥탑방 안 / 실내",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "어두운 표정으로 연쇄살인 사건 뉴스를 심각하게 주시하고 있음",
            "after_state": "수리영이 방에서 나오자 황급히 TV를 끄고 다정한 태도를 가장함",
            "description": "민숙은 심각하게 뉴스를 보던 중 딸이 나타나자 불안한 기색을 감추려 급히 TV를 끈다."
          },
          {
            "beat_index": 2,
            "change_type": "decision",
            "before_state": "각자의 일정을 말하며 평범한 아침 일상을 준비함",
            "after_state": "일과를 마친 후 밖에서 함께 저녁을 먹기로 약속함",
            "description": "수리영과 민숙이 저녁 시간을 함께 보내기로 결정하며 모녀간의 다정한 유대를 보인다."
          }
        ]
      },
      {
        "scene_index": 6,
        "scene_heading": "S#6. 해안가 도로 / D",
        "beats": []
      },
      {
        "scene_index": 7,
        "scene_heading": "S#7. 유기견 보호원 / D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "reaction",
            "before_state": "맹견이 사납게 짖으며 금방이라도 사람을 물어버릴 듯 날뜀",
            "after_state": "수리영의 눈빛을 보자 기세가 수그러들며 얌전해짐",
            "description": "통제 불능이던 맹견이 수리영의 강렬한 눈빛 한 번에 순식간에 온순해진다."
          },
          {
            "beat_index": 2,
            "change_type": "information",
            "before_state": "저녁 약속을 위해 일정을 소화하던 중 엄마에게 전화를 걺",
            "after_state": "엄마가 전화를 받지 않자 연락 두절 상태를 인지하고 서둘러 일을 진행함",
            "description": "수리영은 민숙에게 연락을 취하지만 닿지 않자 작은 의문을 품게 된다."
          }
        ]
      },
      {
        "scene_index": 8,
        "scene_heading": "S#8. 번화가·대형 마트 / 해질 무렵",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "저녁을 먹기 위해 약속 장소인 마트에 도착하여 엄마를 찾음",
            "after_state": "엄마가 조퇴했으며 낯선 남자와 이야기했다는 예상치 못한 사실을 듣게 됨",
            "description": "수리영은 마트에 엄마가 없다는 동료 직원의 말을 듣고 상황이 이상하게 돌아감을 깨닫는다."
          },
          {
            "beat_index": 2,
            "change_type": "decision",
            "before_state": "길이 엇갈렸을 것이라 생각하며 밖에서 엄마와 계속 연락을 시도함",
            "after_state": "연락이 닿지 않자 의문을 품고 곧바로 집으로 향하기로 결정함",
            "description": "수리영은 전화를 받지 않는 민숙을 찾기 위해 발길을 집으로 돌린다."
          }
        ]
      },
      {
        "scene_index": 9,
        "scene_heading": "S#9. 해안가 / N",
        "beats": []
      },
      {
        "scene_index": 10,
        "scene_heading": "S#10. 옥탑방 / N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "낯선 남자가 옥탑방의 굳게 닫힌 현관문 밖에 멈춰 섬",
            "after_state": "전단지를 이용해 능숙하게 잠금장치를 해제하고 집 안으로 무단 침입함",
            "description": "정체를 알 수 없는 남자가 도구를 이용해 잠긴 문을 따고 민숙의 집 안으로 몰래 들어간다."
          },
          {
            "beat_index": 2,
            "change_type": "situation",
            "before_state": "민숙이 홀로 옥탑방 안에서 무방비 상태로 머물고 있음",
            "after_state": "침입한 남자에게 갑작스럽게 덮쳐져 어깨를 물어뜯기며 공격당함",
            "description": "집 안에 있던 민숙이 무단 침입한 낯선 남자에게 무자비한 습격을 당한다."
          }
        ]
      },
      {
        "scene_index": 11,
        "scene_heading": "S#11. 옥탑 방 밖 / N - S#12. 옥탑방 안 / N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "평범하고 조용한 옥탑방 입구",
            "after_state": "반쯤 열린 현관과 역겨운 냄새가 나는 스산한 현장",
            "description": "수리영이 옥탑방에 도착해 계단을 오르자마자 역겨운 냄새와 반쯤 열린 철문을 발견하고 이상함을 감지한다."
          },
          {
            "beat_index": 2,
            "change_type": "information",
            "before_state": "집에 엄마가 있을 것이라 예상함",
            "after_state": "피투성이가 된 엄마의 시신을 발견함",
            "description": "엄마를 찾으며 집 안을 둘러보던 수리영이 자신의 방 커튼 뒤에서 짐승에게 물어뜯긴 듯 처참하게 죽어있는 민숙의 시신을 발견한다."
          },
          {
            "beat_index": 3,
            "change_type": "emotion",
            "before_state": "엄마를 부르는 일상적인 불안감",
            "after_state": "온몸이 얼어붙는 극심한 충격과 공포",
            "description": "살점이 뜯긴 민숙의 끔찍한 시신을 목격한 수리영이 큰 충격에 빠져 뒷걸음질 치며 굳어버린다."
          },
          {
            "beat_index": 4,
            "change_type": "action",
            "before_state": "충격에 빠져 아무것도 하지 못함",
            "after_state": "다급하게 혜수에게 구조를 요청함",
            "description": "부들부들 떠는 수리영이 핸드폰을 꺼내 혜수에게 전화를 걸며 도와달라고 매달린다."
          },
          {
            "beat_index": 5,
            "change_type": "situation",
            "before_state": "핏자국과 시신이 있는 참혹한 현장",
            "after_state": "기이한 표식이 나타나는 초자연적 환각 상태",
            "description": "엄마 손의 사진을 꺼내려 하자 손목의 문신이 붉게 변하고 침대 위 벽에 스스로 붉은 원이 그려지는 기이한 현상이 발생한다."
          },
          {
            "beat_index": 6,
            "change_type": "reaction",
            "before_state": "혜수에게 전화하며 간신히 버팀",
            "after_state": "소름 끼치는 환각에 공포스런 비명을 지름",
            "description": "벽에 생겨나는 붉은 원을 본 수리영이 더 이상 견디지 못하고 비명을 지른다."
          }
        ]
      },
      {
        "scene_index": 12,
        "scene_heading": "S#13. 옥탑방 외곽 / N - S#14. 옥탑방 안 / N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "방 안에서 기이한 현상에 비명 지름",
            "after_state": "집 밖으로 도망쳐 나와 혜수에게 상황을 알림",
            "description": "비명을 지르며 도망쳐 나온 수리영이 현장에 도착한 혜수에게 엄마가 죽어있다고 말한다."
          },
          {
            "beat_index": 2,
            "change_type": "information",
            "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": "김형사의 불신과 짜증 vs 혜수의 옹호와 보호",
            "description": "시신이 없자 김형사는 수리영이 장난전화를 했다며 짜증을 내고, 혜수는 그런 김형사를 내보내며 수리영을 따뜻하게 위로한다."
          },
          {
            "beat_index": 5,
            "change_type": "situation",
            "before_state": "참혹한 시신이 있던 원래 방의 모습",
            "after_state": "시신은 없지만 물건의 위치가 미세하게 달라진 기이한 흔적",
            "description": "핏자국은 없지만 백팩과 인형의 위치가 발견 당시와 다르게 미세하게 옮겨져 있어 무언가 침입했었음을 암시한다."
          }
        ]
      },
      {
        "scene_index": 13,
        "scene_heading": "S#15. 해안가. 버스정류장 부근 / N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "emotion",
            "before_state": "끔찍한 환각인지 현실인지 헷갈려 혼란스러움",
            "after_state": "자신이 헛것을 본 것이라고 치부하며 스스로를 진정시킴",
            "description": "혜수와 바다를 보며 앉아있던 수리영은 엄마가 그런 일을 당할 리 없다며 자신이 무언가 잘못 본 것이라고 안도하려 한다."
          },
          {
            "beat_index": 2,
            "change_type": "decision",
            "before_state": "바닷가에 멍하니 앉아있음",
            "after_state": "엄마를 찾기 위해 다시 집으로 돌아가기로 결심함",
            "description": "마음을 다잡은 수리영이 갑자기 일어나 다시 집에 가봐야겠다며 달려간다."
          },
          {
            "beat_index": 3,
            "change_type": "situation",
            "before_state": "수리영과 혜수가 단둘이 있는 안전한 상황",
            "after_state": "누군가 두 사람을 몰래 지켜보는 스산한 상황",
            "description": "수리영이 달려가고 혜수가 소리치는 모습을, 어둠 속에서 누군가의 시선이 지켜보고 있다."
          }
        ]
      },
      {
        "scene_index": 14,
        "scene_heading": "S#16. 경찰서 사무실 / N",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "emotion",
            "before_state": "수리영을 달래며 일상적인 가출/착각으로 여김",
            "after_state": "민숙과 계속 연락이 닿지 않자 불길한 예감에 휩싸임",
            "description": "경찰서로 돌아온 혜수가 민숙에게 여러 번 전화를 걸지만 무응답이자 속으로 불길함을 느낀다."
          },
          {
            "beat_index": 2,
            "change_type": "decision",
            "before_state": "김형사의 조언대로 내일까지 기다려볼 여지가 있음",
            "after_state": "민숙의 평소 성향을 근거로 즉각적인 위치 추적을 강행함",
            "description": "오늘은 기다려보자는 김형사의 만류에도 불구하고, 혜수는 딸과의 약속을 깰 사람이 아니라며 민숙의 휴대폰 위치 추적을 지시한다."
          }
        ]
      },
      {
        "scene_index": 15,
        "scene_heading": "S#17. 옥탑방 / 동틀무렵",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "기이한 사건과 소동이 벌어졌던 한밤중의 옥탑방",
            "after_state": "불 켜진 방을 고양이가 엿보는 스산한 새벽녘",
            "description": "날이 밝아오는 새벽, 검은 고양이가 여전히 불이 켜져 있는 옥탑방을 슬쩍 지켜보고 담을 넘어가며 불길한 여운을 남긴다."
          }
        ]
      },
      {
        "scene_index": 16,
        "scene_heading": "S#18. 안방 안 / D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "엄마를 기다리며 지쳐 졸고 있던 상태",
            "after_state": "고양이 소리에 깨어 빈집을 확인하고 긴장하는 상태",
            "description": "수리영이 잠에서 깨어나 빈집의 고요함을 마주하고 불안감을 느낀다."
          },
          {
            "beat_index": 2,
            "change_type": "information",
            "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": 17,
        "scene_heading": "S#19. 마트 / D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "엄마의 행적을 쫓아 마트 직원을 찾아온 상태",
            "after_state": "엄마가 낯선 남자와 만났다는 구체적 증언을 확보한 상태",
            "description": "수리영이 남자 직원에게 엄마가 남자와 대화했다는 사실을 재확인한다."
          },
          {
            "beat_index": 2,
            "change_type": "action",
            "before_state": "증언만 들은 상태",
            "after_state": "CCTV 카메라의 위치를 확인하고 혜수에게 전화해 조사를 요청하는 상태",
            "description": "수리영이 남자 직원과 함께 밖으로 나가 촬영 가능한 CCTV를 찾고 혜수에게 연락을 취한다."
          }
        ]
      },
      {
        "scene_index": 18,
        "scene_heading": "S#20. 마트 총무과 / 실내",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "information",
            "before_state": "CCTV 화면에서 단서를 찾을 수 있을 거라 기대하는 상태",
            "after_state": "남자 부분의 화면이 어두워 식별이 불가능함을 깨닫고 절망하는 상태",
            "description": "보안직원과 함께 CCTV를 돌려보지만 중요한 인물의 모습이 보이지 않아 수리영의 불안이 가중된다."
          }
        ]
      },
      {
        "scene_index": 19,
        "scene_heading": "S#21. 경찰서 안 / D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "혜수와 함께 서에 머물며 대기하던 상태",
            "after_state": "혜수를 비롯한 형사들이 긴급 회의로 자리를 비워 홀로 남겨진 상태",
            "description": "혜수가 수리영을 자리에 남겨두고 바쁘게 나가며 수리영이 사무실에 혼자 남게 된다."
          },
          {
            "beat_index": 2,
            "change_type": "information",
            "before_state": "자리에 앉아 얌전히 기다리던 상태",
            "after_state": "책상 위 살인사건 시신 사진을 보고 자신이 겪은 환각과 똑같음에 경악하는 상태",
            "description": "수리영이 혜수 책상 위 사건 사진들의 끔찍한 모습을 보고 자신이 본 엄마 시신의 모습과 흡사하여 놀란다."
          },
          {
            "beat_index": 3,
            "change_type": "information",
            "before_state": "사진에 놀라 혼란스러운 상태",
            "after_state": "김형사 모니터에 수신된 엄마 폰의 해상 위치 좌표를 파악한 상태",
            "description": "수리영이 몰래 김형사 모니터에 뜬 엄마의 위치추적 결과를 열어보고 바다 한가운데라는 사실에 사색이 된다."
          },
          {
            "beat_index": 4,
            "change_type": "action",
            "before_state": "위치 정보를 막 확인한 상태",
            "after_state": "좌표를 메모하고 즉각 사무실을 탈출해 직접 찾으러 나서는 상태",
            "description": "수리영이 메모지에 좌표를 적어 주머니에 넣은 뒤 조심스럽게 경찰서를 빠져나온다."
          }
        ]
      },
      {
        "scene_index": 20,
        "scene_heading": "S#22. 경찰서 밖 / D",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "경찰서를 빠져나온 상태",
            "after_state": "자전거를 타고 좌표가 가리키는 곳을 향해 질주하는 상태",
            "description": "수리영이 주차된 자전거를 타고 다급하게 경찰서를 떠난다."
          }
        ]
      },
      {
        "scene_index": 21,
        "scene_heading": "S#23. 어느 PC방 / 실내",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "action",
            "before_state": "좌표만 메모해 둔 채 목적지를 구체화하지 못한 상태",
            "after_state": "PC방에서 정확한 위치를 검색해 출력한 지도를 확보한 상태",
            "description": "수리영이 PC방에 들러 좌표를 바탕으로 여러 장의 지도를 인쇄하여 백팩에 챙긴다."
          }
        ]
      },
      {
        "scene_index": 22,
        "scene_heading": "S#24. 해안가 / 소나기",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "자전거를 타고 이동하던 상태",
            "after_state": "폭우와 천둥번개가 몰아치는 험악한 날씨 속에서 절박하게 달리는 상태",
            "description": "먹구름이 끼고 소나기가 쏟아지는 악천후 속에서도 오직 엄마를 찾아야 한다는 일념으로 빗속을 뚫고 간다."
          }
        ]
      },
      {
        "scene_index": 23,
        "scene_heading": "S#25. 옥탑방 안 / 해질 무렵",
        "beats": [
          {
            "beat_index": 1,
            "change_type": "situation",
            "before_state": "바깥에서 엄마를 찾다 옥탑방으로 돌아온 상태",
            "after_state": "집안이 누군가 침입해 난장판으로 뒤집혀 있는 것을 목격하고 충격을 받는 상태",
            "description": "집에 들어선 수리영이 가재도구가 헤집어지고 열린 창문과 쓰러진 의자 등 침입의 흔적을 발견한다."
          },
          {
            "beat_index": 2,
            "change_type": "information",
            "before_state": "어질러진 집안을 보며 가빠진 숨을 몰아쉬던 상태",
            "after_state": "자신의 방 벽에 붉은 원 표식과 함께 피 묻은 사진이 꽂혀 있는 것을 발견한 상태",
            "description": "수리영이 열린 자신의 방을 보다가 벽에 그려진 환각의 붉은 원과 그 가운데의 사진 한 장을 포착한다."
          },
          {
            "beat_index": 3,
            "change_type": "information",
            "before_state": "낯선 사진을 발견한 상태",
            "after_state": "사진이 환각 속 시신이 쥐고 있던 엄마의 어린 시절 사진임을 깨닫고 혼미해지는 상태",
            "description": "사진을 떼어 확인한 수리영이 과거 엄마의 시신과 함께 보았던 바로 그 식당 사진임을 알아채고 침대에 주저앉는다."
          },
          {
            "beat_index": 4,
            "change_type": "decision",
            "before_state": "연이은 기이한 상황으로 정신을 잃을 듯한 상태",
            "after_state": "마치 무언가에 홀린 듯 단서가 된 사진을 쥐고 다시 밖으로 향하는 상태",
            "description": "수리영이 난장판이 된 집안을 훑어본 후, 백팩을 메고 사진을 꼭 쥔 채 이끌리듯 집을 나선다."
          }
        ]
      }
    ],
    "total_beats": 46
  },
  "step_id": "beat_extract",
  "run_id": "3b611606-18ff-4764-9b08-1cfbfd316b3a",
  "resolved_model": "gemini-pro",
  "updated_at": "2026-04-30T23:09:28.181219+00:00",
  "schema_version": 1,
  "config_hash": "99914b932bd37a50"
}