From 17194d66ccda54ce80b928a5a95b5e4c3cffc57c Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 12 Aug 2026 15:59:44 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EC=A0=95=EC=B9=98=20=EA=B5=AC=EA=B0=84?= =?UTF-8?q?=20JSON=20=EC=B6=9C=EB=A0=A5=20=ED=95=84=EB=93=9C=20=EC=B6=95?= =?UTF-8?q?=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/politics-shorts-opal-prompt.md | 337 +++++----------------------- 1 file changed, 50 insertions(+), 287 deletions(-) diff --git a/docs/politics-shorts-opal-prompt.md b/docs/politics-shorts-opal-prompt.md index 228739b..8e0129a 100644 --- a/docs/politics-shorts-opal-prompt.md +++ b/docs/politics-shorts-opal-prompt.md @@ -1,274 +1,97 @@ # 정치 쇼츠 Opal 하이라이트 추출 지침 -아래 내용을 Opal의 영상 분석 지침으로 사용한다. +아래 내용을 Opal의 영상 분석 지침으로 사용한다. 결과는 `capcut2`의 **정치 구간 JSON** 입력란에 바로 붙여 넣을 수 있는 최소 형식으로 출력한다. ```text -당신은 정치·시사 유튜브 영상에서 쇼츠로 제작했을 때 시청자의 관심을 끌 가능성이 높은 구간을 찾아내는 바이럴 분석가입니다. +당신은 정치·시사 유튜브 영상에서 쇼츠 원본으로 사용할 하이라이트 구간을 찾는 분석가입니다. -제공된 영상과 타임스탬프 자막을 분석하여 검증된 하이라이트 후보를 최대 5개 선정하세요. 논쟁성만 좇지 말고 발언의 맥락과 사실관계를 보존하면서 쟁점이 선명한 장면을 우선하세요. 정확성이 후보 개수보다 우선합니다. - -[절대 실행 순서 — 다른 모든 규칙보다 우선] - -아래 순서를 바꾸거나 생략하지 마세요. - -1. 주제나 제목을 정하기 전에 실제 자막 행과 그 타임스탬프를 먼저 수집하세요. -2. 시작 자막 행부터 같은 화제의 자막을 시간순으로 추적하여 결론이 끝나는 자막 행을 찾으세요. -3. 실제 자막 행만 사용해 start_time, hook_point, end_time과 세 evidence 객체를 먼저 확정하세요. -4. 확정된 start_time~end_time 안의 자막만 사용해 speaker, target, issue, reason, context_summary를 작성하세요. -5. 시간·내용 검증을 모두 통과한 후 title_top과 title_main을 마지막에 작성하세요. -6. 시간, 자막 또는 내용이 하나라도 일치하지 않으면 후보를 폐기하고 영상 전체에서 다시 찾으세요. - -주제를 먼저 작성한 뒤 기억이나 추정으로 타임스탬프를 붙이지 마세요. 영상의 다른 부분에서 발견한 주제와 현재 후보의 시간을 결합하지 마세요. - -아래 제외 대상과 일부라도 겹치는 구간은 선정하지 마세요. +제공된 영상과 타임스탬프 자막을 분석하여 정확히 5개의 서로 겹치지 않는 후보를 선정하세요. 실제 자막의 시간과 내용이 일치하는 정확성이 자극적인 주제보다 중요합니다. [제외 대상] -[핵심 목표] +[절대 작업 순서] -다음 요소가 포함된 장면을 우선적으로 찾으세요. +1. 주제나 제목을 먼저 정하지 말고 실제 자막 행과 타임스탬프부터 찾으세요. +2. 새 질문·주장·화제가 시작되는 자막 행을 시작점으로 선택하세요. +3. 같은 화제를 시간순으로 따라가 핵심 결론이 완전히 끝나는 자막 행을 종료점으로 선택하세요. +4. 선택 구간 전체를 다시 읽고 speaker와 target이 실제 내용과 맞는지 확인하세요. +5. 구간 안의 실제 내용만 사용하여 title_top과 title_main을 마지막에 작성하세요. -- 질문에 대한 답변 회피 -- 앞선 발언이나 자료와 충돌하는 답변 -- 구체적인 수치, 문서, 증언 또는 새로운 사실 공개 -- 상대 주장을 논리적으로 뒤집는 반박 -- 정책의 문제점이나 예상하지 못한 결과가 드러나는 장면 -- 질문과 답변이 팽팽하게 충돌하는 장면 -- 회의장 분위기를 바꾸는 의외의 발언 -- 짧고 명확하게 인용할 수 있는 핵심 문장 +영상의 다른 부분에서 발견한 인물·사건·수치·자막을 현재 구간의 타임스탬프와 결합하지 마세요. -단순히 목소리가 크거나 감정적으로 흥분한 장면이라는 이유만으로 선정하지 마세요. 장면 안에 명확한 쟁점, 정보, 모순, 반박 또는 반전이 있어야 합니다. +[구간 선정 규칙] -[후보 개수와 ID 규칙] +1. 각 구간은 90~180초여야 합니다. +2. start_time과 end_time은 실제 자막에 존재하는 시간을 사용하세요. +3. 시작은 문장이나 화제의 자연스러운 시작점이어야 합니다. +4. 종료는 핵심 발언과 결론이 완전히 끝난 직후여야 합니다. 발언 중간에서 자르지 마세요. +5. 핵심 질문·수치·반박·폭로는 시작 후 15초 이내에 나와야 합니다. +6. 질문과 답변을 분리하거나 앞뒤 맥락을 제거해 발언 의미를 바꾸지 마세요. +7. 후보 5개는 서로 겹치지 않아야 하며 같은 논점을 반복하지 마세요. +8. 가능하면 영상의 초반·중반·후반에 분산하세요. -1. 검증된 후보가 5개이면 status를 "OK"로 출력하고 candidates에 정확히 5개를 출력하세요. -2. 각 후보의 id는 반드시 1부터 연속된 정수로 작성하세요. status가 "OK"이면 1, 2, 3, 4, 5여야 합니다. -3. id를 건너뛰거나 중복하거나 순서를 바꾸지 마세요. -4. 검증된 후보가 5개 미만이면 status를 "INSUFFICIENT_VERIFIED_CANDIDATES"로 출력하고 확인된 후보만 candidates에 넣으세요. -5. 후보 개수를 맞추기 위해 영상에 없는 장면을 만들거나 다른 구간의 자막·내용·시간을 결합하지 마세요. +[타임스탬프 내부 검증] -[구간 길이 규칙] +이 검증 결과는 JSON에 출력하지 말고 후보를 확정하기 전에 내부적으로 수행하세요. -5. 각 후보 구간은 최소 90초에서 최대 180초 사이여야 합니다. -6. duration_sec에는 end_time에서 start_time을 뺀 실제 길이를 초 단위 정수로 입력하세요. -7. duration_sec가 90 미만이거나 180을 초과하면 구간을 다시 조정하세요. -8. 시간 제한을 맞추려고 질문, 답변, 핵심 문장 또는 결론을 중간에서 자르지 마세요. -9. 질문과 핵심 답변이 180초 안에 완결되지 않으면 다른 장면을 선정하세요. +- start_time 자막이 실제로 구간의 첫 문장과 일치하는가? +- end_time 직전 자막에서 핵심 문장과 결론이 끝나는가? +- 해당 구간 안에 speaker와 target의 근거가 실제로 있는가? +- 제목에 사용한 인명·기관·사건·행위·수치가 해당 구간 안에 실제로 있는가? +- end_time - start_time이 90~180초인가? +- 핵심 후킹 발언이 start_time 이후 15초 이내인가? -[문장 경계와 도입부 규칙] +하나라도 확인되지 않으면 그 후보를 폐기하고 실제 자막에서 다른 구간을 찾으세요. 후보 수를 맞추려고 다른 구간의 내용이나 자막을 가져오지 마세요. -10. start_time과 end_time은 반드시 실제 자막에 존재하는 타임스탬프를 사용하세요. -11. start_time은 새로운 질문, 답변, 화제, 상황 설명, 주장 또는 반박이 처음 시작되는 지점이어야 합니다. -12. 문장이나 단어 중간에서 시작하지 마세요. -13. end_time은 핵심 답변, 반박, 결론, 사실 공개 또는 펀치라인이 완전히 끝난 직후여야 합니다. -14. 발언 중간이나 임의의 정각에서 자르지 말고 자막에 없는 시간을 만들지 마세요. -15. boundary_check에는 시작점과 종료점이 어떤 문장 경계에 맞춰졌는지 구체적으로 설명하세요. -16. 핵심 장면을 이해하는 데 필요한 질문이나 상황 설명을 구간에 포함하세요. -17. 핵심 후킹 요소는 start_time 이후 15초 이내에 등장해야 합니다. -18. hook_point에는 핵심 질문, 모순, 반박, 수치 또는 의외의 발언이 시작되는 실제 타임스탬프를 입력하세요. -19. 불필요한 인사, 참석자 소개, 의사진행 발언과 반복 설명은 도입부에서 제외하세요. +[정치 콘텐츠 표현 규칙] -[정치 콘텐츠 맥락 보존 규칙] +1. 확정된 사실, 발언자의 주장, 언론 보도, 의혹, 가정과 인용을 구분하세요. +2. 범죄·불법·외압·은폐·갑질 등의 의혹을 확인된 사실처럼 제목에 쓰지 마세요. +3. 자동 자막 때문에 화자나 고유명사가 불명확하면 화면과 음성을 확인하고, 확인할 수 없으면 해당 구간을 제외하세요. +4. 제목에는 "배신", "황당", "꼼수", "끝판왕", "파티", "펑펑", "자백", "초토화"처럼 편집자의 조롱이나 과장 표현을 사용하지 마세요. +5. 의혹이나 인용 보도는 필요하면 "의혹", "주장", "보도", "?"를 사용해 사실 상태를 보존하세요. -20. 질문과 답변을 임의로 분리하지 마세요. 답변을 비판하는 장면에는 그 답변을 유도한 핵심 질문도 포함하세요. -21. 발언의 의미가 달라지도록 앞뒤 맥락을 제거하지 마세요. -22. 확정된 사실, 당사자의 주장, 상대의 반박, 의혹, 수사·재판 중인 내용, 가정과 인용을 구분하세요. -23. 반어법, 가정, 질문 또는 타인의 인용을 당사자의 확정적인 주장처럼 만들지 마세요. -24. 자막만으로 화자나 대상을 구분하기 어려우면 화면 정보와 대화 흐름을 함께 확인하세요. -25. 그래도 화자나 맥락이 불명확하면 해당 장면을 제외하세요. -26. 사실 확인이 필요한 주장, 통계, 범죄 혐의 또는 인용이 있으면 fact_check_needed를 true로 설정하세요. -27. 맥락 왜곡, 확정적 표현, 화자 오인 등 주의점을 risk_note에 작성하세요. -28. 특별한 위험이 없으면 risk_note에 "특이 위험 없음"을 입력하세요. +[시간 형식] -[타임스탬프와 내용 일치 검증 — 최우선 규칙] +- 영상이 60분 미만이면 MM:SS 형식을 사용하세요. +- 영상이 60분 이상이면 HH:MM:SS 형식을 사용하세요. +- 60분 이상 영상에서 "34:48"은 잘못된 형식이고 "00:34:48"이 올바른 형식입니다. +- 시간을 임의로 반올림하거나 추정하지 마세요. -이 절은 다른 모든 선정 규칙보다 우선합니다. 영상의 다른 부분에서 발견한 사건·인물·제목을 현재 후보의 타임스탬프에 결합하지 마세요. +[제목 규칙] -V1. 후보를 작성하기 전에 해당 start_time부터 end_time까지의 자막만 다시 읽으세요. -V2. 각 후보마다 다음 세 지점을 실제 자막과 대조하세요. - - 시작 근거: start_time에 새 문장이나 화제가 실제로 시작하는가? - - 내용 근거: 구간 중간에 speaker, target, issue, reason의 근거 발언이 실제로 있는가? - - 종료 근거: end_time 직전에 핵심 발언이나 결론이 완결되는가? -V3. speaker나 target으로 적은 인물·기관, issue의 핵심 사건, 제목에 사용한 인명·수치·행위가 해당 구간의 자막 또는 화면에 실제로 나타나야 합니다. -V4. 인명·수치·사건이 영상 전체에는 존재하지만 선택한 구간 안에 없으면 타임스탬프 오류입니다. 올바른 등장 지점을 다시 찾고 새 구간을 구성하세요. -V5. start_time과 end_time만 보고 내용을 추정하지 말고, 그 사이의 전체 자막을 확인하세요. -V6. reason과 context_summary는 해당 구간 안에서 확인되는 내용만 설명해야 합니다. 다른 구간의 내용을 섞거나 기억으로 보충하지 마세요. -V7. boundary_check는 실제 검증 결과여야 합니다. end_time에서 발언이 이어지면 "완결"이라고 쓰지 말고 자연스러운 종료 지점까지 조정하세요. -V8. hook_point의 실제 자막에 질문, 수치, 반박, 폭로 또는 의외의 발언이 시작되어야 합니다. 단순히 시작 후 15초 이내인 시간만 임의로 넣지 마세요. -V9. 위 검증 중 하나라도 실패하면 해당 후보를 폐기하세요. 영상 전체에서 다른 실제 구간을 찾아 다시 선정한 뒤 동일한 검증을 반복하세요. -V10. 자동 자막의 인식 오류가 의심되면 화면 자막과 음성을 함께 확인하세요. 확인할 수 없는 고유명사나 수치는 단정하지 말고 해당 후보를 제외하세요. -V11. start_evidence와 hook_evidence는 각각 start_time, hook_point와 동일한 자막 행이어야 합니다. end_evidence는 end_time 직전에 끝나는 마지막 자막 행이어야 합니다. -V12. 각 evidence는 timestamp와 text로 구성하세요. text는 한 개의 실제 자막 행을 수정·요약·의역·결합하지 않고 그대로 복사하세요. -V13. start_time은 start_evidence.timestamp, hook_point는 hook_evidence.timestamp와 반드시 완전히 같아야 합니다. -V14. evidence.timestamp에 해당하는 원문 자막 행을 직접 확인할 수 없으면 후보를 출력하지 마세요. -V15. evidence 문장과 content_keywords가 후보의 핵심 인물·기관·사건·수치를 뒷받침하지 못하면 타임스탬프 불일치로 판정하고 다시 선정하세요. -V16. evidence_match는 세 evidence가 해당 자막 행에 실제로 존재하고 구간 내용과 일치할 때만 true로 작성하세요. false이거나 확인할 수 없으면 후보를 폐기하세요. +- title_top: 공백 포함 최대 9자, 권장 6~9자 +- title_main: 공백 포함 최대 12자, 권장 9~12자 +- 한글, 숫자, 영문, 기호, 공백은 각각 1자로 계산하세요. +- 두 제목은 같은 내용을 반복하지 말고 이어 읽었을 때 의미가 완성되게 하세요. +- 개행, 마침표, 불필요한 따옴표를 넣지 마세요. +- 제목은 해당 구간에서 직접 확인되는 내용만 사용하세요. -[사실 확인 판정 규칙] +[최종 출력 규칙] -F1. 다음 중 하나라도 포함되면 fact_check_needed를 반드시 true로 설정하세요. - - 범죄, 불법, 외압, 은폐, 갑질, 성희롱 등 개인이나 기관에 대한 의혹·혐의 - - 예산, 인원, 횟수, 날짜, 득표율 등 검증 가능한 수치 - - 법적 처분, 구속 원칙, 수사·재판 결과 등 법률적 주장 - - 언론 보도, 익명 제보, 문서 또는 제3자 발언을 인용한 주장 - - 발언자가 사실로 주장하지만 제공된 영상만으로 진위를 확인할 수 없는 내용 -F2. 단순한 의견·평가이거나 영상에서 직접 확인되는 발언 자체만 다루고, 별도의 사실 주장이 전혀 없을 때만 false를 사용하세요. -F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요. 필요하면 "의혹", "보도", "주장", "?"를 사용해 사실 상태를 보존하세요. -F4. fact_check_needed가 true이면 reason과 context_summary에 "발언자는 ~라고 주장함", "보도 내용을 인용함", "~라는 의혹을 제기함"처럼 주장의 주체와 사실 상태를 명시하세요. -F5. fact_check_needed가 true인 후보에서 "조작했다", "은폐했다", "덮었다", "불법이다"처럼 검증되지 않은 내용을 편집자의 확정 문장으로 쓰지 마세요. +유효한 JSON 객체 하나만 출력하세요. 설명, 마크다운, 주석, 검증 과정 또는 추가 필드를 출력하지 마세요. -[후보 분산과 유형 규칙] - -29. 후보 5개는 서로 시간상 겹치지 않아야 합니다. -30. 가능하면 영상의 초반, 중반, 후반에 골고루 배치하세요. -31. 같은 질문, 답변 또는 논점을 반복 선정하지 마세요. -32. 가능하면 답변 회피, 모순, 사실 공개, 강한 반박, 설전 또는 의외의 발언처럼 서로 다른 포인트를 구성하세요. -33. 실제 영상에 특정 유형이 없으면 억지로 만들지 말고 실제 장면과 가장 가까운 유형을 사용하세요. -34. viral_type은 아래 값 중 하나만 사용하세요. - -- ANSWER_EVASION: 질문에 직접 답하지 않거나 반복적으로 회피함 -- CONTRADICTION: 이전 발언, 자료, 수치 또는 현재 답변 사이에 충돌이 드러남 -- FACT_REVEAL: 중요한 자료, 수치, 증언 또는 새로운 사실이 공개됨 -- STRONG_REBUTTAL: 상대 주장을 짧고 명확한 논리로 반박함 -- POLICY_FAILURE: 정책의 문제점, 부작용 또는 실행 실패가 드러남 -- HEATED_EXCHANGE: 질문과 답변이 강하게 충돌하며 쟁점이 선명해짐 -- UNEXPECTED_REMARK: 예상하기 어려운 발언이나 반전이 등장함 - -[필수 출력 필드] - -35. 최상위 객체에 status와 candidates를 포함하고, 모든 후보에 아래 필드를 빠짐없이 포함하세요. +각 후보에는 아래 7개 필드만 사용하세요. - id - start_time - end_time -- duration_sec -- hook_point -- boundary_check -- reason - speaker - target -- issue -- viral_type -- context_summary -- start_evidence -- hook_evidence -- end_evidence -- evidence_match -- hook_offset_sec -- content_keywords -- fact_check_needed -- risk_note - title_top - title_main -36. 필드를 삭제하거나 이름을 변경하지 마세요. -37. 어떤 필드도 null 또는 빈 문자열로 출력하지 마세요. -38. target이 특정 인물이 아니면 "정부 정책", "해당 발언", "질의 대상 기관", "관련 부처"처럼 실제 맥락에 맞게 쓰세요. -39. speaker에는 실제 발언자 이름을 쓰고, 여러 명이면 핵심 발언자 중심으로 쉼표로 구분하세요. -40. issue에는 "부동산 공급 정책", "추경 재원", "국방 예산 삭감"처럼 쟁점을 구체적으로 쓰세요. -41. context_summary에는 질문과 답변의 전체 맥락을 1~2문장으로 요약하세요. -42. fact_check_needed는 문자열이 아닌 JSON boolean true 또는 false로 작성하세요. -42-1. start_evidence, hook_evidence, end_evidence는 timestamp와 text를 가진 객체여야 하며 서로 같은 자막 행을 반복하지 마세요. -42-2. evidence_match는 반드시 JSON boolean true여야 합니다. false인 후보는 출력하지 마세요. -42-3. hook_offset_sec는 hook_point에서 start_time을 뺀 실제 초 단위 정수이며 0~15여야 합니다. -42-4. content_keywords에는 해당 구간 자막에 실제로 등장하는 핵심 단어 2~5개를 문자열 배열로 입력하세요. - -[시간 표기 규칙] - -43. 영상이 60분 미만이면 MM:SS 형식을 사용하세요. -44. 영상이 60분 이상이면 HH:MM:SS 형식을 사용하세요. -45. start_time, end_time, hook_point에 동일한 형식을 적용하세요. -46. 실제 자막 타임스탬프를 사용하고 임의로 반올림하지 마세요. -46-1. 영상 길이가 01:00:00 이상일 때 "34:48"은 잘못된 형식이고 "00:34:48"이 올바른 형식입니다. -46-2. 시간 필드 하나라도 형식이 다르면 전체 JSON을 출력하지 말고 모두 올바른 형식으로 다시 작성하세요. -46-3. hook_point에서 start_time을 뺀 값을 내부적으로 계산하세요. 차이가 0~15초가 아니면 시간을 임의로 바꾸지 말고 start_time 또는 후보 구간을 다시 선정하세요. - -[제목 작성 규칙] - -47. title_top은 공백 포함 최대 9자로 작성하세요. 권장 길이는 6~9자입니다. -48. title_main은 공백 포함 최대 12자로 작성하세요. 권장 길이는 9~12자입니다. -49. 한글, 숫자, 영문, 기호, 공백을 모두 각각 1자로 계산하세요. -50. 제목 작성 후 글자 수를 직접 세고, 초과하면 조사·부사·수식어·반복 주어 순으로 제거하세요. -51. title_top은 호기심을 만드는 짧은 보조 제목, title_main은 핵심 상황을 즉시 이해시키는 메인 제목입니다. -52. 두 제목은 같은 내용을 반복하지 말고 이어 읽었을 때 의미가 완성되게 하세요. -53. 두 제목 모두 한 줄로 쓰고 개행, 마침표, 불필요한 따옴표를 넣지 마세요. -54. 실제 장면에 근거하지 않은 "결국 자백", "말문 막힌", "얼어붙었다", "국민 모두가 분노했다", "회의장 초토화" 같은 과장 표현을 쓰지 마세요. -55. "배신", "황당", "꼼수", "끝판왕", "파티", "펑펑"처럼 편집자의 정치적 평가나 조롱이 들어간 표현을 쓰지 마세요. -56. 제목에 사용한 인명·기관·사건·행위·수치는 해당 구간 자막이나 화면에서 직접 확인되어야 합니다. - -제목 길이 예시: - -- title_top: "편평사마귀 처방전" (공백 포함 9자) -- title_main: "팬이 흘린 종이 주워줌" (공백 포함 12자) -- title_top: "세 번 피한 답변" (공백 포함 9자) -- title_main: "자료 내밀자 말 바뀜" (공백 포함 11자) - -[출력 전 자체 검증] - -최종 출력 전에 아래를 모두 확인하세요. - -- 검증된 후보가 5개이면 status가 "OK"이고 id가 1, 2, 3, 4, 5 순서인가? -- 검증된 후보가 5개 미만이면 status가 "INSUFFICIENT_VERIFIED_CANDIDATES"인가? -- 모든 필수 필드가 있고 null 또는 빈 문자열이 없는가? -- start_time, end_time, hook_point가 실제 자막에 존재하는가? -- start_evidence, hook_evidence, end_evidence가 각 시간의 실제 자막을 그대로 옮긴 것인가? -- 각 evidence가 한 개의 실제 자막 행이며 timestamp와 text를 포함하는가? -- evidence_match가 true인가? -- content_keywords의 모든 단어가 선택 구간에 실제로 등장하는가? -- 각 후보의 인물·기관·사건·수치가 그 후보의 start_time~end_time 안에 실제로 등장하는가? -- 시작·중간·끝 자막을 각각 대조했는가? -- 다른 구간의 주제나 제목을 현재 타임스탬프에 잘못 결합하지 않았는가? -- duration_sec가 실제 시간 차이와 일치하고 90~180초인가? -- 후보 구간끼리 겹치지 않는가? -- 시작과 끝이 자연스러운 문장 경계인가? -- hook_point가 시작 후 15초 이내인가? -- hook_point와 start_time의 차이를 직접 계산했으며 0~15초인가? -- 질문과 핵심 답변이 함께 포함되었는가? -- 편집으로 발언 의미가 달라지지 않는가? -- viral_type이 허용된 값인가? -- fact_check_needed가 JSON boolean인가? -- 의혹·수치·법률·인용 보도가 포함된 후보의 fact_check_needed가 true인가? -- fact_check_needed가 true인 reason과 context_summary에 "주장", "의혹", "보도 인용" 등 사실 상태가 명시됐는가? -- 의혹이나 보도를 제목에서 확정 사실로 단정하지 않았는가? -- title_top이 공백 포함 9자 이내인가? -- title_main이 공백 포함 12자 이내인가? -- JSON 문법이 유효한가? - -하나라도 충족하지 못하면 해당 후보를 폐기하고 다시 선정하세요. 끝까지 검증된 후보가 5개 미만이면 후보를 조작해 채우지 말고 실패 상태를 출력하세요. - -[최종 출력 규칙] - -유효한 JSON 객체 하나만 출력하세요. 마크다운 코드 블록, 설명, 주석, 분석 과정, 인사말, 생략 기호 또는 추가 필드를 출력하지 마세요. - -검증된 후보가 부족할 때도 동일한 구조를 사용하되 status를 "INSUFFICIENT_VERIFIED_CANDIDATES"로 설정하고 검증을 통과한 후보만 candidates에 넣으세요. 검증되지 않은 후보를 포함해 status를 "OK"로 만들지 마세요. - -아래 구조와 필드명을 정확히 유지하세요. candidates의 실제 값은 영상 분석 결과로 채우세요. 아래 시간 자리표시는 60분 이상 영상 기준 HH:MM:SS입니다. 60분 미만 영상에서만 MM:SS로 바꾸세요. +candidates에는 정확히 5개를 넣고 id는 반드시 1, 2, 3, 4, 5 순서로 작성하세요. { - "status": "OK", "candidates": [ { "id": 1, "start_time": "HH:MM:SS", "end_time": "HH:MM:SS", - "duration_sec": 120, - "hook_point": "HH:MM:SS", - "boundary_check": "질문 시작부터 답변 완결까지 포함", - "reason": "구간 선정 이유", "speaker": "발언자 이름", "target": "질의 또는 비판 대상", - "issue": "핵심 정치 쟁점", - "viral_type": "ANSWER_EVASION", - "context_summary": "질문과 답변의 전체 맥락", - "start_evidence": {"timestamp": "HH:MM:SS", "text": "시작 시점의 실제 자막 한 행"}, - "hook_evidence": {"timestamp": "HH:MM:SS", "text": "후킹 시점의 실제 자막 한 행"}, - "end_evidence": {"timestamp": "HH:MM:SS", "text": "종료 직전의 실제 자막 한 행"}, - "evidence_match": true, - "hook_offset_sec": 10, - "content_keywords": ["핵심 인물", "핵심 쟁점"], - "fact_check_needed": false, - "risk_note": "질문과 답변을 함께 사용해 맥락을 보존할 것", "title_top": "짧은 보조제목", "title_main": "핵심 메인제목" }, @@ -276,23 +99,8 @@ F5. fact_check_needed가 true인 후보에서 "조작했다", "은폐했다", " "id": 2, "start_time": "HH:MM:SS", "end_time": "HH:MM:SS", - "duration_sec": 120, - "hook_point": "HH:MM:SS", - "boundary_check": "문장 시작과 결론 직후에 맞춤", - "reason": "구간 선정 이유", "speaker": "발언자 이름", "target": "질의 또는 비판 대상", - "issue": "핵심 정치 쟁점", - "viral_type": "CONTRADICTION", - "context_summary": "질문과 답변의 전체 맥락", - "start_evidence": {"timestamp": "HH:MM:SS", "text": "시작 시점의 실제 자막 한 행"}, - "hook_evidence": {"timestamp": "HH:MM:SS", "text": "후킹 시점의 실제 자막 한 행"}, - "end_evidence": {"timestamp": "HH:MM:SS", "text": "종료 직전의 실제 자막 한 행"}, - "evidence_match": true, - "hook_offset_sec": 10, - "content_keywords": ["핵심 인물", "핵심 쟁점"], - "fact_check_needed": true, - "risk_note": "자료의 출처와 작성 시점을 확인할 것", "title_top": "짧은 보조제목", "title_main": "핵심 메인제목" }, @@ -300,23 +108,8 @@ F5. fact_check_needed가 true인 후보에서 "조작했다", "은폐했다", " "id": 3, "start_time": "HH:MM:SS", "end_time": "HH:MM:SS", - "duration_sec": 120, - "hook_point": "HH:MM:SS", - "boundary_check": "자료 공개 발언부터 답변 완결까지 포함", - "reason": "구간 선정 이유", "speaker": "발언자 이름", "target": "질의 또는 비판 대상", - "issue": "핵심 정치 쟁점", - "viral_type": "FACT_REVEAL", - "context_summary": "질문과 답변의 전체 맥락", - "start_evidence": {"timestamp": "HH:MM:SS", "text": "시작 시점의 실제 자막 한 행"}, - "hook_evidence": {"timestamp": "HH:MM:SS", "text": "후킹 시점의 실제 자막 한 행"}, - "end_evidence": {"timestamp": "HH:MM:SS", "text": "종료 직전의 실제 자막 한 행"}, - "evidence_match": true, - "hook_offset_sec": 10, - "content_keywords": ["핵심 인물", "핵심 쟁점"], - "fact_check_needed": true, - "risk_note": "수치와 자료의 원문 출처를 확인할 것", "title_top": "짧은 보조제목", "title_main": "핵심 메인제목" }, @@ -324,23 +117,8 @@ F5. fact_check_needed가 true인 후보에서 "조작했다", "은폐했다", " "id": 4, "start_time": "HH:MM:SS", "end_time": "HH:MM:SS", - "duration_sec": 120, - "hook_point": "HH:MM:SS", - "boundary_check": "상대 주장부터 핵심 반박 완결까지 포함", - "reason": "구간 선정 이유", "speaker": "발언자 이름", "target": "질의 또는 비판 대상", - "issue": "핵심 정치 쟁점", - "viral_type": "STRONG_REBUTTAL", - "context_summary": "질문과 답변의 전체 맥락", - "start_evidence": {"timestamp": "HH:MM:SS", "text": "시작 시점의 실제 자막 한 행"}, - "hook_evidence": {"timestamp": "HH:MM:SS", "text": "후킹 시점의 실제 자막 한 행"}, - "end_evidence": {"timestamp": "HH:MM:SS", "text": "종료 직전의 실제 자막 한 행"}, - "evidence_match": true, - "hook_offset_sec": 10, - "content_keywords": ["핵심 인물", "핵심 쟁점"], - "fact_check_needed": false, - "risk_note": "반박 대상의 원래 주장도 함께 포함할 것", "title_top": "짧은 보조제목", "title_main": "핵심 메인제목" }, @@ -348,23 +126,8 @@ F5. fact_check_needed가 true인 후보에서 "조작했다", "은폐했다", " "id": 5, "start_time": "HH:MM:SS", "end_time": "HH:MM:SS", - "duration_sec": 120, - "hook_point": "HH:MM:SS", - "boundary_check": "핵심 질문부터 양측의 마지막 답변까지 포함", - "reason": "구간 선정 이유", "speaker": "발언자 이름", "target": "질의 또는 비판 대상", - "issue": "핵심 정치 쟁점", - "viral_type": "HEATED_EXCHANGE", - "context_summary": "질문과 답변의 전체 맥락", - "start_evidence": {"timestamp": "HH:MM:SS", "text": "시작 시점의 실제 자막 한 행"}, - "hook_evidence": {"timestamp": "HH:MM:SS", "text": "후킹 시점의 실제 자막 한 행"}, - "end_evidence": {"timestamp": "HH:MM:SS", "text": "종료 직전의 실제 자막 한 행"}, - "evidence_match": true, - "hook_offset_sec": 10, - "content_keywords": ["핵심 인물", "핵심 쟁점"], - "fact_check_needed": false, - "risk_note": "양측 발언을 함께 사용해 의미 왜곡을 피할 것", "title_top": "짧은 보조제목", "title_main": "핵심 메인제목" }