From b13c5f68d28ace12a642221b007ab60af136a23b Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 12 Aug 2026 12:18:52 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EC=A0=95=EC=B9=98=20=EC=87=BC=EC=B8=A0?= =?UTF-8?q?=20=EC=9E=90=EB=A7=89=20=EC=A6=9D=EA=B1=B0=20=EA=B2=80=EC=A6=9D?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/politics-shorts-opal-prompt.md | 74 ++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/docs/politics-shorts-opal-prompt.md b/docs/politics-shorts-opal-prompt.md index 6d639ff..4376d46 100644 --- a/docs/politics-shorts-opal-prompt.md +++ b/docs/politics-shorts-opal-prompt.md @@ -7,6 +7,18 @@ 제공된 영상과 타임스탬프 자막을 분석하여 정확히 5개의 하이라이트 후보 구간을 선정하세요. 논쟁성만 좇지 말고 발언의 맥락과 사실관계를 보존하면서 쟁점이 선명한 장면을 우선하세요. +[절대 실행 순서 — 다른 모든 규칙보다 우선] + +아래 순서를 바꾸거나 생략하지 마세요. + +1. 영상 전체를 먼저 탐색하여 주제별 실제 등장 시간을 찾으세요. +2. 각 등장 시간 주변의 전체 자막을 읽은 뒤 90~180초 구간을 구성하세요. +3. start_time, hook_point, end_time을 정한 다음 각 지점의 실제 자막을 start_evidence, hook_evidence, end_evidence에 짧게 그대로 옮기세요. +4. 세 증거 자막과 구간 전체에 speaker, target, issue, reason, 제목의 근거가 실제로 있는지 대조하세요. +5. 시간, 자막 또는 내용이 하나라도 일치하지 않으면 후보를 폐기하고 영상 전체에서 다시 찾으세요. + +주제를 먼저 작성한 뒤 기억이나 추정으로 타임스탬프를 붙이지 마세요. 영상의 다른 부분에서 발견한 주제와 현재 후보의 시간을 결합하지 마세요. + 아래 제외 대상과 일부라도 겹치는 구간은 선정하지 마세요. [제외 대상] @@ -84,6 +96,9 @@ V7. boundary_check는 실제 검증 결과여야 합니다. end_time에서 발 V8. hook_point의 실제 자막에 질문, 수치, 반박, 폭로 또는 의외의 발언이 시작되어야 합니다. 단순히 시작 후 15초 이내인 시간만 임의로 넣지 마세요. V9. 위 검증 중 하나라도 실패하면 해당 후보를 폐기하세요. 영상 전체에서 다른 실제 구간을 찾아 다시 선정한 뒤 동일한 검증을 반복하세요. V10. 자동 자막의 인식 오류가 의심되면 화면 자막과 음성을 함께 확인하세요. 확인할 수 없는 고유명사나 수치는 단정하지 말고 해당 후보를 제외하세요. +V11. start_evidence는 start_time에서 실제로 시작하는 문장, hook_evidence는 hook_point에서 시작하는 후킹 발언, end_evidence는 end_time 직전에 완결되는 마지막 문장을 담아야 합니다. +V12. 세 evidence 필드에 요약, 해석 또는 새 문장을 쓰지 말고 실제 자막에서 각각 5~30어절을 그대로 옮기세요. +V13. evidence 문장에 후보의 핵심 인물·기관·사건·수치가 전혀 나타나지 않으면 타임스탬프 불일치로 판정하고 다시 선정하세요. [사실 확인 판정 규칙] @@ -95,6 +110,8 @@ F1. 다음 중 하나라도 포함되면 fact_check_needed를 반드시 true로 - 발언자가 사실로 주장하지만 제공된 영상만으로 진위를 확인할 수 없는 내용 F2. 단순한 의견·평가이거나 영상에서 직접 확인되는 발언 자체만 다루고, 별도의 사실 주장이 전혀 없을 때만 false를 사용하세요. F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요. 필요하면 "의혹", "보도", "주장", "?"를 사용해 사실 상태를 보존하세요. +F4. fact_check_needed가 true이면 reason과 context_summary에 "발언자는 ~라고 주장함", "보도 내용을 인용함", "~라는 의혹을 제기함"처럼 주장의 주체와 사실 상태를 명시하세요. +F5. fact_check_needed가 true인 후보에서 "조작했다", "은폐했다", "덮었다", "불법이다"처럼 검증되지 않은 내용을 편집자의 확정 문장으로 쓰지 마세요. [후보 분산과 유형 규칙] @@ -129,6 +146,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 - issue - viral_type - context_summary +- start_evidence +- hook_evidence +- end_evidence - fact_check_needed - risk_note - title_top @@ -141,6 +161,7 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 40. issue에는 "부동산 공급 정책", "추경 재원", "국방 예산 삭감"처럼 쟁점을 구체적으로 쓰세요. 41. context_summary에는 질문과 답변의 전체 맥락을 1~2문장으로 요약하세요. 42. fact_check_needed는 문자열이 아닌 JSON boolean true 또는 false로 작성하세요. +42-1. start_evidence, hook_evidence, end_evidence는 빈 문자열이 아닌 실제 자막이어야 하며 서로 같은 문장을 반복하지 마세요. [시간 표기 규칙] @@ -148,6 +169,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 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 또는 후보 구간을 다시 선정하세요. [제목 작성 규칙] @@ -175,6 +199,7 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 - id가 1, 2, 3, 4, 5 순서인가? - 모든 필수 필드가 있고 null 또는 빈 문자열이 없는가? - start_time, end_time, hook_point가 실제 자막에 존재하는가? +- start_evidence, hook_evidence, end_evidence가 각 시간의 실제 자막을 그대로 옮긴 것인가? - 각 후보의 인물·기관·사건·수치가 그 후보의 start_time~end_time 안에 실제로 등장하는가? - 시작·중간·끝 자막을 각각 대조했는가? - 다른 구간의 주제나 제목을 현재 타임스탬프에 잘못 결합하지 않았는가? @@ -182,11 +207,13 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 - 후보 구간끼리 겹치지 않는가? - 시작과 끝이 자연스러운 문장 경계인가? - 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자 이내인가? @@ -198,16 +225,16 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 유효한 JSON 객체 하나만 출력하세요. 마크다운 코드 블록, 설명, 주석, 분석 과정, 인사말, 생략 기호 또는 추가 필드를 출력하지 마세요. -아래 구조와 필드명을 정확히 유지하세요. candidates의 실제 값은 영상 분석 결과로 채우고, id는 반드시 1부터 5까지 사용하세요. +아래 구조와 필드명을 정확히 유지하세요. candidates의 실제 값은 영상 분석 결과로 채우고, id는 반드시 1부터 5까지 사용하세요. 아래 시간 자리표시는 60분 이상 영상 기준 HH:MM:SS입니다. 60분 미만 영상에서만 MM:SS로 바꾸세요. { "candidates": [ { "id": 1, - "start_time": "MM:SS", - "end_time": "MM:SS", + "start_time": "HH:MM:SS", + "end_time": "HH:MM:SS", "duration_sec": 120, - "hook_point": "MM:SS", + "hook_point": "HH:MM:SS", "boundary_check": "질문 시작부터 답변 완결까지 포함", "reason": "구간 선정 이유", "speaker": "발언자 이름", @@ -215,6 +242,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 "issue": "핵심 정치 쟁점", "viral_type": "ANSWER_EVASION", "context_summary": "질문과 답변의 전체 맥락", + "start_evidence": "시작 시점의 실제 자막", + "hook_evidence": "후킹 시점의 실제 자막", + "end_evidence": "종료 직전의 실제 자막", "fact_check_needed": false, "risk_note": "질문과 답변을 함께 사용해 맥락을 보존할 것", "title_top": "짧은 보조제목", @@ -222,10 +252,10 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 }, { "id": 2, - "start_time": "MM:SS", - "end_time": "MM:SS", + "start_time": "HH:MM:SS", + "end_time": "HH:MM:SS", "duration_sec": 120, - "hook_point": "MM:SS", + "hook_point": "HH:MM:SS", "boundary_check": "문장 시작과 결론 직후에 맞춤", "reason": "구간 선정 이유", "speaker": "발언자 이름", @@ -233,6 +263,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 "issue": "핵심 정치 쟁점", "viral_type": "CONTRADICTION", "context_summary": "질문과 답변의 전체 맥락", + "start_evidence": "시작 시점의 실제 자막", + "hook_evidence": "후킹 시점의 실제 자막", + "end_evidence": "종료 직전의 실제 자막", "fact_check_needed": true, "risk_note": "자료의 출처와 작성 시점을 확인할 것", "title_top": "짧은 보조제목", @@ -240,10 +273,10 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 }, { "id": 3, - "start_time": "MM:SS", - "end_time": "MM:SS", + "start_time": "HH:MM:SS", + "end_time": "HH:MM:SS", "duration_sec": 120, - "hook_point": "MM:SS", + "hook_point": "HH:MM:SS", "boundary_check": "자료 공개 발언부터 답변 완결까지 포함", "reason": "구간 선정 이유", "speaker": "발언자 이름", @@ -251,6 +284,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 "issue": "핵심 정치 쟁점", "viral_type": "FACT_REVEAL", "context_summary": "질문과 답변의 전체 맥락", + "start_evidence": "시작 시점의 실제 자막", + "hook_evidence": "후킹 시점의 실제 자막", + "end_evidence": "종료 직전의 실제 자막", "fact_check_needed": true, "risk_note": "수치와 자료의 원문 출처를 확인할 것", "title_top": "짧은 보조제목", @@ -258,10 +294,10 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 }, { "id": 4, - "start_time": "MM:SS", - "end_time": "MM:SS", + "start_time": "HH:MM:SS", + "end_time": "HH:MM:SS", "duration_sec": 120, - "hook_point": "MM:SS", + "hook_point": "HH:MM:SS", "boundary_check": "상대 주장부터 핵심 반박 완결까지 포함", "reason": "구간 선정 이유", "speaker": "발언자 이름", @@ -269,6 +305,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 "issue": "핵심 정치 쟁점", "viral_type": "STRONG_REBUTTAL", "context_summary": "질문과 답변의 전체 맥락", + "start_evidence": "시작 시점의 실제 자막", + "hook_evidence": "후킹 시점의 실제 자막", + "end_evidence": "종료 직전의 실제 자막", "fact_check_needed": false, "risk_note": "반박 대상의 원래 주장도 함께 포함할 것", "title_top": "짧은 보조제목", @@ -276,10 +315,10 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 }, { "id": 5, - "start_time": "MM:SS", - "end_time": "MM:SS", + "start_time": "HH:MM:SS", + "end_time": "HH:MM:SS", "duration_sec": 120, - "hook_point": "MM:SS", + "hook_point": "HH:MM:SS", "boundary_check": "핵심 질문부터 양측의 마지막 답변까지 포함", "reason": "구간 선정 이유", "speaker": "발언자 이름", @@ -287,6 +326,9 @@ F3. 의혹이나 보도 내용을 제목에 확정 사실처럼 쓰지 마세요 "issue": "핵심 정치 쟁점", "viral_type": "HEATED_EXCHANGE", "context_summary": "질문과 답변의 전체 맥락", + "start_evidence": "시작 시점의 실제 자막", + "hook_evidence": "후킹 시점의 실제 자막", + "end_evidence": "종료 직전의 실제 자막", "fact_check_needed": false, "risk_note": "양측 발언을 함께 사용해 의미 왜곡을 피할 것", "title_top": "짧은 보조제목",