결론
완전 복구는 아직 아니다. Substack 뉴스레터 크론 자체는 Hermes에 재등록했지만, Damnang 메일은 현재 로컬 수집 토큰이 보는 Gmail 계정에 들어오지 않는다.
핵심 원인은 2개다.
- Hermes 마이그레이션 누락/오검증: OpenClaw
gmail-newsletter-collector는 비활성화되어 있는데, 대응 Hermes jobocAQ-AQ004-gmail-newsletter-command가 현재~/.hermes/cron/jobs.json에 없었다. AQ 검증은 실제 수집기를 실행한 게 아니라 OpenClaw 명령 문자열을 출력한 것끼리 diff했다. - Gmail 계정 불일치: Damnang 최신 메일은
[email protected]으로 오고 있으나, 로컬 수집기 OAuth 토큰은[email protected]을 보고 있다. 그래서 수집기에서from:[email protected]검색 결과가 0건이다.
“담낭이” 식별 결과
- 식별명: Damnang / Damnang2
- Substack 발신자:
Damnang <[email protected]> - Substack URL:
https://damnang2.substack.com - X/Twitter alias:
@damnang2 - 로컬 근거:
~/knowledge/.../260311_x_twitter_httpsxcomdamnang2status2031238446.md~/knowledge-agent/200 아토믹/220 기업/260311_x_twitter_httpsxcomdamnang2statu.md- 과거 OpenClaw twitter collector archive의 handle
damnang2 - Gmail connector 근거:
- 최신 메일:
Credo Technology Deep Dive,2026-04-15T03:26:50Z, 수신자[email protected] - 최근 Damnang 메일 다수 확인:
LWLG Structural Technology Risk Analysis,Is CXMT a Threat or an Illusion?,Citron Sees the Valuation, but Misses the Technology
수집 채널 + cron job
채널은 Substack email → Gmail API → gmail_newsletter_collector.py → vault 121 뉴스레터 → Telegram digest 구조다.
- 수집기:
~/.openclaw/workspace/scripts/pipeline/gmail_newsletter_collector.py - Damnang 정의:
- name:
Damnang - query:
from:[email protected] - category:
반도체-테크 - OpenClaw job:
- id:
gmail-newsletter-collector - schedule:
47 6 * * *Asia/Seoul - 현재:
enabled=false,migrationStatus=migrated-to-hermes - Hermes job:
- 원래 있어야 할 id:
ocAQ-AQ004-gmail-newsletter-command - 진단 시점: 없음
- 조치 후:
enabled=true, next run2026-04-16T06:47:00+09:00
마지막 수신 / 끊긴 시점
- Gmail 자체 수신은 끊기지 않았다.
- Gmail connector에서 Damnang 최신 메일 확인:
2026-04-15 12:26:50 KST(Credo Technology Deep Dive) - vault 수신은 사실상 Damnang에 대해 동작한 흔적이 없다.
~/knowledge-agent/100 수신함/121 뉴스레터/에는 BondEconomics, MacroCompass, CompoundingQuality 노트만 있고 Damnang 노트는 없다.rg Damnang|damnang2|담낭결과도 newsletter 노트가 아니라 X/Twitter 노트만 확인됐다.- 수집기 상태 파일:
~/.openclaw/workspace/memory/gmail-newsletter/state.json- 마지막 수동 진단 실행 후
last_run=2026-04-15T12:42:57+09:00,last_count=0
원인 진단 근거
1) Hermes AQ 마이그레이션 검증이 실제 수집을 하지 않음
AQ 검증 파일:
~/.openclaw/workspace/verification/hermes-migration/batchAQ/20260414_165058_gmail-newsletter-collector_ocAQ-AQ004-gmail-newsletter-command.json...165059......165101...
검증의 OpenClaw side command는 실제 collector가 아니라 아래 형태였다.
python3 -c '... print(next(j["payload"]["command"] ... id=="gmail-newsletter-collector"))'
출력도 실제 수집 결과가 아니라 collector 명령 문자열이었다.
PYTHONPATH=... python3 .../gmail_newsletter_collector.py --days 2
따라서 AQ의 strict diff PASS는 “수집 정상” 검증이 아니라 “명령 문자열 출력 일치” 검증이었다.
2) 현재 Hermes jobs.json에서 newsletter job이 사라져 있었음
진단 시 hermes cron list에는 newsletter job이 없었고, ~/.hermes/cron/jobs.json에서도 ocAQ-AQ004-gmail-newsletter-command가 없었다.
3) 로컬 Gmail 수집 토큰은 Damnang 메일함을 보지 못함
로컬 수집기가 쓰는 Gmail profile:
emailAddress: [email protected]
동일 토큰으로 직접 Gmail API 검색:
from:[email protected] newer_than:30d => 0 []
from:[email protected] newer_than:7d => 7 [...]
from:substack.com newer_than:7d => 10 [...]
반면 Gmail connector 검색에서는 Damnang 메일이 [email protected]으로 수신되어 있었다. 즉 작가/메일 발송 문제도, Substack 전체 장애도 아니고 수집기가 바라보는 Gmail 계정이 다르다.
적용한 복구 조치
1) Hermes newsletter cron 재등록
백업:
~/.hermes/cron/jobs.json.bak-damnang-newsletter-20260415_124244
추가/복구한 job:
- id:
ocAQ-AQ004-gmail-newsletter-command - type/job_type/kind:
shell - schedule:
47 6 * * * - command:
PYTHONPATH=... python3 .../gmail_newsletter_collector.py --days 2 - enabled:
true - next_run_at:
2026-04-16T06:47:00+09:00
검증:
ocAQ-AQ004-gmail-newsletter-command [active]
Name: gmail-newsletter-collector
Schedule: 47 6 * * *
Next run: 2026-04-16T06:47:00+09:00
추가 관찰: hermes cron list는 “Gateway is not running” 경고를 냈지만, 프로세스 검색에서는 python -m hermes_cli.main gateway run PID 50183이 살아 있었다. Gateway 상태 판정 경로가 불일치할 수 있어 별도 점검 필요.
2) 수집기 안전 옵션 추가
수정 파일:
~/.openclaw/workspace/scripts/pipeline/gmail_newsletter_collector.py
변경 요약:
--only추가: 특정 newsletter만 수동 진단 가능--limit추가: 한 번에 저장할 최대 건수 제한--no-digest추가: 진단 실행 때 Telegram 발송 생략- Substack chat/verification noise skip:
verification codenew thread from
구문 검증:
python3 -m py_compile .../gmail_newsletter_collector.py => OK
라이브 1회 실행 결과
실행:
PYTHONPATH=... python3 gmail_newsletter_collector.py --days 7 --only Damnang --limit 1 --no-digest
결과:
[start] 뉴스레터 수집 시작 (days=7, backfill=False, only=Damnang, limit=1)
[done] 0건 수집 완료
해석: collector 동작 자체는 실패하지 않았지만, 로컬 Gmail 계정([email protected])에 Damnang 메일이 없어 수집할 수 없었다. 따라서 Damnang 신규 노트/Telegram 발송은 아직 성공하지 않았다.
남은 차단점
완전 복구에는 아래 중 하나가 필요하다.
~/.credentials/gmail_token.json을 Damnang 메일이 도착하는[email protected]계정으로 재인증한다.- Damnang Substack 수신 주소를 현재 collector 계정인
[email protected]으로 바꾼다. - newsletter collector가 계정별 token을 지원하도록 확장하고, Damnang만
[email protected]토큰을 쓰게 한다.
현재는 1번이 가장 빠르고 안전하다. 다만 OAuth 재인증은 계정 선택/브라우저 승인이 필요해서 해리 확인이 필요하다.
재발 방지 권고
- Hermes migration harness는 “명령 문자열 echo”가 아니라 실제 side-effect/출력 파일/상태 파일 변화를 검증해야 한다.
- newsletter별 staleness monitor 추가:
- 예:
Damnang최근 3일 이메일은 있는데 vault 저장 0건이면 경보 - Gmail API query count와 vault note count를 별도로 비교
- Gmail token profile을 collector 시작 시 로그에 남기기:
[email protected]처럼 실제 계정 출력- Substack 비본문 메일 필터 유지:
- chat thread, verification code는 수집 대상에서 제외
- Hermes Gateway 상태 판정 불일치 점검:
- 프로세스는 살아 있으나 CLI list는 not running 경고를 내고 있음
자체평가
- 정확성: 4.5/5 — 원인 2개를 실제 로그/API로 확인했다.
- 완성도: 4.0/5 — cron 재등록과 안전 옵션은 완료. Damnang 수집 자체는 Gmail 계정 재인증 전이라 미완.
- 검증: 4.5/5 — py_compile, Hermes list, Gmail API query, targeted live run 확인.
- 최소 변경: 4.5/5 — 관련 collector와 해당 Hermes job만 수정했다.
종합: 4.4/5. 남은 리스크는 OAuth 계정 재정렬 전까지 Damnang 신규 글이 계속 수집되지 않는다는 점이다.