auto: 일일 백업 2026-06-17 02:00

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-06-17 02:00:02 +09:00
parent eaa276b26d
commit b3696949f5
233 changed files with 673 additions and 236 deletions
+27 -2
View File
@@ -10,14 +10,39 @@
"createdAtMs": 1774622556732,
"schedule": {
"kind": "cron",
"expr": "0 7 * * *",
"expr": "55 7 * * *",
"tz": "Asia/Seoul"
},
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "오전 브리핑 HTML 메일 작성. 아래 순서대로 실행:\n\nStep 1: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py prepare morning > /tmp/briefing_morning_prep.json\n JSON 읽어서 already_sent=true면 \"오전 브리핑 이미 발송 완료 (스킵)\" 한 줄 답하고 종료.\n\nStep 2: articles 각 항목에 한국어 평문 설명을 작성. articles[].description에 언론사 리드문(100~500자)이 들어 있음 — 이를 **근거**로 2~3문장 요약. description이 비어 있는 항목만 제목 기반 추정이며, 이 경우 summary 첫 문장을 \"(리드문 없음 — 제목 기반 추정)\"로 시작.\n 작성 기준:\n - 제목을 그대로 옮기지 말고 description 내용을 바탕으로 무슨 일이 왜 생겼고 어떤 영향이 예상되는지 일상어로 풀어서 설명\n - 길이는 필요한 만큼. 2~3문장으로 충분하면 그 정도, 복잡한 사안은 더 길게. 억지 축약/억지 연장 둘 다 하지 말 것\n - 숫자·인용은 description 또는 제목에 명시된 것만 사용 (description 밖 추측·추정 금지)\n - 확신 없는 부분은 \"후속 확인 필요\" 로 마무리\n - '핵심/의미/체크/제 의견' 같은 라벨 구조 사용 금지 — 자연스러운 문장 흐름으로\n - 스크립트가 유사 뉴스는 이미 걸러내지만 혹시 남아 있으면 summary 첫 문장에 \"동일 사안 다른 매체 보도\"로 표기하고 짧게 처리\n\nStep 3: prep JSON을 복사해서 articles 배열의 각 원소에 \"summary\": \"<평문 설명 문자열>\" 필드를 추가한 augmented JSON을 Write 도구로 /tmp/briefing_morning_augmented.json 에 저장 (나머지 필드는 prep 그대로 보존). summary는 반드시 단일 문자열 (여러 단락은 '\\n' 구분 가능).\n\nStep 4: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py compose --input /tmp/briefing_morning_augmented.json > /tmp/briefing_morning_body.html\n\nStep 5: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py send morning --subject \"[오전 브리핑] {date}\" --body-file /tmp/briefing_morning_body.html --html\n ({date}는 prep JSON의 date 값)\n\nStep 6: 성공 시 \"오전 브리핑 HTML 발송 완료 (뉴스 N건 요약)\" 한 줄. 실패 시 exact error 포함해 한국어로 보고.",
"message": "오전 브리핑 HTML 메일 작성. 아래 순서대로 실행:\n\nStep 1: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py prepare morning > /tmp/briefing_morning_prep.json\n JSON 읽어서:\n - already_sent=true면 \"오전 브리핑 이미 발송 완료 (스킵)\" 한 줄 답하고 종료.\n - us_send_directive==\"wait\"면 \"미국증시 요약 영상 미게시 — 08:30 재시도 대기\" 한 줄 답하고 종료 (이후 단계 실행 금지).\n\nStep 2: articles 각 항목에 한국어 평문 설명을 작성. articles[].description에 언론사 리드문(100~500자)이 들어 있음 — 이를 **근거**로 2~3문장 요약. description이 비어 있는 항목만 제목 기반 추정이며, 이 경우 summary 첫 문장을 \"(리드문 없음 — 제목 기반 추정)\"로 시작.\n 작성 기준:\n - 제목을 그대로 옮기지 말고 description 내용을 바탕으로 무슨 일이 왜 생겼고 어떤 영향이 예상되는지 일상어로 풀어서 설명\n - 길이는 필요한 만큼. 2~3문장으로 충분하면 그 정도, 복잡한 사안은 더 길게. 억지 축약/억지 연장 둘 다 하지 말 것\n - 숫자·인용은 description 또는 제목에 명시된 것만 사용 (description 밖 추측·추정 금지)\n - 확신 없는 부분은 \"후속 확인 필요\" 로 마무리\n - '핵심/의미/체크/제 의견' 같은 라벨 구조 사용 금지 — 자연스러운 문장 흐름으로\n - 스크립트가 유사 뉴스는 이미 걸러내지만 혹시 남아 있으면 summary 첫 문장에 \"동일 사안 다른 매체 보도\"로 표기하고 짧게 처리\n\nStep 3: us_market.available_today가 true면, us_market.transcript(미국증시 요약 영상 자막)를 읽어 한국어 평문 요약을 작성한다.\n - 자동자막이라 고유명사 오타가 잦다(예: 'SM표빗'→S&P500, '나스닥백'→나스닥, '필라델피아 반도체'→필라델피아 반도체지수 SOX). 문맥으로 교정해서 요약.\n - 카테고리별로 그룹지어 작성한다. 권장 카테고리(내용 있는 것만, 순서대로): '지수'(S&P500·나스닥·다우·필라델피아 반도체 등 자막 수치) / '주요 이슈'(상승·하락 핵심 동인) / '특징주·섹터'(개별 종목·섹터 움직임) / '연준·금리'(FOMC·금리·경제지표) / '전문가 시각'(코멘트) / '오늘 일정'(오늘 밤 예정 지표·이벤트). 권장 카테고리에 맞지 않는 내용은 버리지 말고 마지막 '기타' 그룹에 모은다(누락 금지). 전체 불릿 합계는 충분히(최소 6개 이상), 억지로 줄이지 말 것. 각 불릿은 한 문장으로 명확하게.\n - 숫자·인용은 자막에 명시된 것만 사용 (추측 금지). 확신 없으면 생략.\n - us_market.available_today가 false면 이 단계를 건너뛴다 (요약 작성 안 함).\n\nStep 4: prep JSON을 복사해서 augmented JSON을 Write 도구로 /tmp/briefing_morning_augmented.json 에 저장:\n - articles 배열의 각 원소에 \"summary\": \"<평문 설명 문자열>\" 추가 (단일 문자열, 여러 단락은 '\\n' 구분)\n - Step 3에서 요약을 작성한 경우에만 최상위에 \"us_market_summary\" 추가. 값은 카테고리 그룹 배열: [{\"label\":\"지수\",\"items\":[\"불릿1\",\"불릿2\"]},{\"label\":\"주요 이슈\",\"items\":[...]}, ...] (내용 있는 그룹만). 작성 안 했으면 이 키를 넣지 않는다.\n - 나머지 필드(us_market 포함)는 prep 그대로 보존.\n\nStep 5: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py compose --input /tmp/briefing_morning_augmented.json > /tmp/briefing_morning_body.html\n\nStep 6: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py send morning --subject \"[오전 브리핑] {date}\" --body-file /tmp/briefing_morning_body.html --html\n ({date}는 prep JSON의 date 값)\n\nStep 7: 성공 시 \"오전 브리핑 HTML 발송 완료 (뉴스 N건 요약, 미국증시 요약 포함여부 표기)\" 한 줄. 실패 시 exact error 포함해 한국어로 보고.",
"timeoutSeconds": 900
},
"delivery": {
"mode": "none"
},
"deleteAfterRun": false,
"state": {}
},
{
"id": "b3f1c2d4-0830-4f55-aa11-briefingfb0830",
"agentId": "main",
"sessionKey": "agent:main:main",
"name": "오전 브리핑 (fallback 0830)",
"enabled": true,
"createdAtMs": 1774622556732,
"schedule": {
"kind": "cron",
"expr": "30 8 * * *",
"tz": "Asia/Seoul"
},
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "오전 브리핑 HTML 메일 작성 (08:30 최종 발송 — 07:55에 미국증시 요약 미게시로 대기한 경우 보완). 아래 순서대로 실행:\n\nStep 1: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py prepare morning --final > /tmp/briefing_morning_prep.json\n JSON 읽어서:\n - already_sent=true면 \"오전 브리핑 이미 발송 완료 (스킵)\" 한 줄 답하고 종료.\n - us_send_directive==\"wait\"면 \"미국증시 요약 영상 미게시 — 08:30 재시도 대기\" 한 줄 답하고 종료 (이후 단계 실행 금지).\n\nStep 2: articles 각 항목에 한국어 평문 설명을 작성. articles[].description에 언론사 리드문(100~500자)이 들어 있음 — 이를 **근거**로 2~3문장 요약. description이 비어 있는 항목만 제목 기반 추정이며, 이 경우 summary 첫 문장을 \"(리드문 없음 — 제목 기반 추정)\"로 시작.\n 작성 기준:\n - 제목을 그대로 옮기지 말고 description 내용을 바탕으로 무슨 일이 왜 생겼고 어떤 영향이 예상되는지 일상어로 풀어서 설명\n - 길이는 필요한 만큼. 2~3문장으로 충분하면 그 정도, 복잡한 사안은 더 길게. 억지 축약/억지 연장 둘 다 하지 말 것\n - 숫자·인용은 description 또는 제목에 명시된 것만 사용 (description 밖 추측·추정 금지)\n - 확신 없는 부분은 \"후속 확인 필요\" 로 마무리\n - '핵심/의미/체크/제 의견' 같은 라벨 구조 사용 금지 — 자연스러운 문장 흐름으로\n - 스크립트가 유사 뉴스는 이미 걸러내지만 혹시 남아 있으면 summary 첫 문장에 \"동일 사안 다른 매체 보도\"로 표기하고 짧게 처리\n\nStep 3: us_market.available_today가 true면, us_market.transcript(미국증시 요약 영상 자막)를 읽어 한국어 평문 요약을 작성한다.\n - 자동자막이라 고유명사 오타가 잦다(예: 'SM표빗'→S&P500, '나스닥백'→나스닥, '필라델피아 반도체'→필라델피아 반도체지수 SOX). 문맥으로 교정해서 요약.\n - 카테고리별로 그룹지어 작성한다. 권장 카테고리(내용 있는 것만, 순서대로): '지수'(S&P500·나스닥·다우·필라델피아 반도체 등 자막 수치) / '주요 이슈'(상승·하락 핵심 동인) / '특징주·섹터'(개별 종목·섹터 움직임) / '연준·금리'(FOMC·금리·경제지표) / '전문가 시각'(코멘트) / '오늘 일정'(오늘 밤 예정 지표·이벤트). 권장 카테고리에 맞지 않는 내용은 버리지 말고 마지막 '기타' 그룹에 모은다(누락 금지). 전체 불릿 합계는 충분히(최소 6개 이상), 억지로 줄이지 말 것. 각 불릿은 한 문장으로 명확하게.\n - 숫자·인용은 자막에 명시된 것만 사용 (추측 금지). 확신 없으면 생략.\n - us_market.available_today가 false면 이 단계를 건너뛴다 (요약 작성 안 함).\n\nStep 4: prep JSON을 복사해서 augmented JSON을 Write 도구로 /tmp/briefing_morning_augmented.json 에 저장:\n - articles 배열의 각 원소에 \"summary\": \"<평문 설명 문자열>\" 추가 (단일 문자열, 여러 단락은 '\\n' 구분)\n - Step 3에서 요약을 작성한 경우에만 최상위에 \"us_market_summary\" 추가. 값은 카테고리 그룹 배열: [{\"label\":\"지수\",\"items\":[\"불릿1\",\"불릿2\"]},{\"label\":\"주요 이슈\",\"items\":[...]}, ...] (내용 있는 그룹만). 작성 안 했으면 이 키를 넣지 않는다.\n - 나머지 필드(us_market 포함)는 prep 그대로 보존.\n\nStep 5: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py compose --input /tmp/briefing_morning_augmented.json > /tmp/briefing_morning_body.html\n\nStep 6: python3 /Users/snowoyh/.openclaw/workspace/scripts/briefing_mail.py send morning --subject \"[오전 브리핑] {date}\" --body-file /tmp/briefing_morning_body.html --html\n ({date}는 prep JSON의 date 값)\n\nStep 7: 성공 시 \"오전 브리핑 HTML 발송 완료 (뉴스 N건 요약, 미국증시 요약 포함여부 표기)\" 한 줄. 실패 시 exact error 포함해 한국어로 보고.",
"timeoutSeconds": 900
},
"delivery": {