virtual-insanity
← 리포트 목록

뉴스레터 요약 한국어화 개선

2026-04-16 newsletter [newsletter, analyst, macro, fundamental, korean-summary]

결론

펀더멘탈/매크로 리포트가 뉴스레터 영어 제목을 그대로 인용하던 경로를 수정했다. 이제 filter/report는 뉴스레터 제목보다 본문 내 한국어 요약을 우선 사용한다.

실제 no-send 재실행 결과:

  • macro: body_len=1964, forbidden_hits=[], 뉴스레터 인용이 BondEconomics Ceasefire 제목이 아니라 한국어 요약으로 출력됨.
  • fundamental: body_len=2310, blacklist_hits=[], A Strategy For Challenging Times, Our most honest webinar ever 제목 대신 한국어 요약이 출력됨.
  • 영어 제목 잔존 검사: 0건.

1. 뉴스레터 노트 구조 확인

대상 디렉토리:

~/knowledge-agent/100 수신함/121 뉴스레터/*.md

구조는 아래 형태다.

---
title: 🔥 A Strategy For Challenging Times
date: 2026-04-15
source_platform: gmail-newsletter
source_channel: CompoundingQuality
category: 퀄리티-투자
tags:
  - 밸류에이션
  - 퀄리티
  - 복리
status: inbox
---

본문 요약 또는 원문 발췌

gmail_newsletter_collector.py는 이미 LLM 한국어 요약을 만들도록 되어 있다.

  • 저장 위치: VAULT_NEWSLETTER = ~/knowledge-agent/100 수신함/121 뉴스레터
  • 저장 방식: frontmatter + body
  • 기존 요약 위치: 별도 summary: frontmatter가 아니라 body 전체
  • 현재 prompt는 ### 핵심 요약 / ### 핵심 포인트 / ### 투자/시장 시사점 / ### 분류 태그 형식의 한국어 요약을 요구함.

2. 발견한 문제

기존 collector는 요약을 생성하지만 과거 실패/품질 불량 노트 일부는 영어 메타 요약이 body에 남아 있었다.

확인 예:

파일 상태
260408_BondEconomics_Ceasefire.md 한국어 요약 있음
260415_CompoundingQuality_A-Strategy-For-Challenging-Times.md 영어 메타 요약만 있음
260414_CompoundingQuality_Our-most-honest-webinar-ever.md 영어 메타 요약만 있음
260415_LinasNewsletter_Inside-Revoluts-PRAGMA-The-Foundation-Mo.md 영어 요약 중심
260412_CompoundingQuality_13-Interesting-Holding-Companies.md 자동 요약 실패 발췌

따라서 리포트 쪽에서 title을 사용하면 영어 제목이 그대로 노출되고, body를 읽어도 일부는 영어 메타 요약이 들어오는 구조였다.

3. 구현 내용

신규 유틸

~/.hermes/workspace/scripts/newsletter_summary_utils.py

역할:

  • frontmatter/body 분리
  • body에서 한국어 요약 추출
  • 우선순위:
  • <!-- korean-summary:auto:start --> 자동 요약 블록
  • 기존 collector의 ### 핵심 요약, ### 핵심 포인트, ### 투자/시장 시사점
  • 한국어 비율이 충분한 본문 발췌
  • 영어 메타 문구(The text you provided, Based on the email, Would you like 등)는 요약 후보에서 제외

신규 백필 wrapper

~/.hermes/workspace/scripts/newsletter_korean_summary_wrapper.py

역할:

  • 한국어 요약이 없는 뉴스레터 노트를 찾아 3~5개 한국어 bullet 생성
  • 원문은 보존하고 아래 블록만 append/replace
<!-- korean-summary:auto:start -->
## 한국어 요약 (자동)
- ...
<!-- korean-summary:auto:end -->

LLM 실패 또는 저품질 방지를 위해 알려진 제목은 deterministic heuristic을 먼저 사용하도록 했다.

수정한 filter/report

파일 변경
macro_context_filter.py newsletter item에 summary, summary_kind, source_channel 추가. 제목보다 한국어 요약 우선.
fundamental_context_filter.py newsletter snippet을 body raw가 아니라 extract_note_summary() 결과로 구성.
macro_redesign_report.py BondEconomics Ceasefire 영어 제목 대신 해당 노트의 한국어 요약을 인용.
fundamental_redesign_report.py source_label()이 영어 title 대신 summary/snippet을 우선 출력. body print QA 지원 추가.

4. 백필한 뉴스레터

한국어 요약 블록을 추가/정리한 파일:

260415_CompoundingQuality_A-Strategy-For-Challenging-Times.md
260414_CompoundingQuality_Our-most-honest-webinar-ever.md
260415_LinasNewsletter_Inside-Revoluts-PRAGMA-The-Foundation-Mo.md
260412_CompoundingQuality_13-Interesting-Holding-Companies.md
260410_AppEconomyInsights_Anthropic-Leapfrogs-OpenAI.md

백업 파일도 생성됨:

*.bak-ko-summary-20260416*
*.bak-ko-summary-manual-202604160958

예시 요약:

CompoundingQuality — 어려운 시장 구간에서는 주가 방향보다 배당 성장과 현금흐름 지속성이 강한 기업을 우선한다는 주장이다. / British American Tobacco 사례를 들어 2025년 1월 매수 이후 주가 +59.0%, 매수가 대비 연 배당수익률 9.2%를 제시한다. / 본문은 유료 배당 포트폴리오 홍보 성격이 강하므로 실제 종목 판단에는 밸류에이션, 부채, 규제 리스크 확인이 필요하다.

5. 테스트 결과

macro no-send

명령:

ANALYST_COMMON_SKIP_RUN=1 ANALYST_COMMON_NO_SEND=1 ANALYST_COMMON_PRINT_BODY=1 \
  /bin/bash ~/.hermes/workspace/scripts/analyst_common_wrapper.sh macro

결과:

{"analyst":"macro","ok":true,"message_id":null,"status":"dry_run","body_len":1964,"forbidden_hits":[],"no_send":true}

본문 확인:

<b>🧾 해석 근거</b>
• 텔레그램: 유가가 인플레이션에 미치는 영향 — CPI 6%의 함정
• 뉴스레터: 이란과 미국·이스라엘 간에 일시적 휴전이 발표됐으나 지속성은 불확실하며 단기적으로 에너지 흐름 회복이 경기와 시장에 중요한 영향을 미친…
• 블로그: 호르무즈해협 기뢰 매설 시 영향
• 매크로채권: 키움 김승혁 매크로: 채권 Note_이란 사태 3주차 점검

이전의 뉴스레터: BondEconomics Ceasefire 영어 제목 노출이 사라졌다.

fundamental no-send

명령:

ANALYST_COMMON_SKIP_RUN=1 ANALYST_COMMON_NO_SEND=1 ANALYST_COMMON_PRINT_BODY=1 \
  /bin/bash ~/.hermes/workspace/scripts/analyst_common_wrapper.sh fundamental

결과:

{"ok":true,"message_id":null,"body_len":2310,"blacklist_hits":[],"context_path":"/Users/ron/.hermes/workspace/memory/analyst-fundamental/fundamental_redesign_context_latest.json"}

본문 확인:

<b>🧠 해석 주입</b>
• 2026-04-15 CompoundingQuality — 어려운 시장 구간에서는 주가 방향보다 배당 성장과 현금흐름 지속성이 강한 기업을 우선한다는 주장이다. / British American Tobacco 사례를 들어 2025년 1월 매수 이후 주가 +59.0%, 매수가 대비 연 배당수익률 9.2%를 제시한다. / 본문은 유료 배당 포트폴리오 홍보 성격이 강…
• 2026-04-14 CompoundingQuality — 보유 종목별 확신도, 추가 매수 여부, 기대수익률 목표, 매도 조건을 공개하겠다는 포트폴리오 점검 웹세미나 예고다. / 핵심은 퀄리티 기업도 가격, 실적 경로, 운용자의 자본배분 원칙을 함께 검증해야 한다는 점이다.
• 2026-04-12 CompoundingQuality — 지주회사형 기업은 여러 사업·자산을 장기 보유하며 자본배분 능력으로 복리 수익을 만들 수 있다는 관점이다. / 핵심 판단 기준은 보유 자산의 질, 할인율, 경영진의 자본배분 기록, 주주환원 정책이다.

영어 제목 잔존 검사:

A Strategy For Challenging Times: false
Our most honest webinar ever: false
Inside Revolut: false
BondEconomics Ceasefire: false

구문 검사:

python3 -m py_compile newsletter_summary_utils.py newsletter_korean_summary_wrapper.py macro_context_filter.py fundamental_context_filter.py macro_redesign_report.py fundamental_redesign_report.py
compile_ok

6. 잔존 리스크

  1. 과거 뉴스레터 전체를 모두 백필한 것은 아니고, 현재 리포트에 걸리는 최신/주요 5개를 우선 처리했다.
  2. wrapper의 LLM 생성 결과가 저품질일 수 있어 알려진 제목은 heuristic을 우선 적용했다. 신규 뉴스레터는 첫 실행 후 품질 샘플링이 필요하다.
  3. fundamental 본문에는 뉴스레터 3개 뒤에 크레딧 메일 1개도 함께 표시된다. 이번 범위는 뉴스레터 제목 한국어화라 크레딧 메일 표현 정리는 별도 과제로 남겼다.

자체평가

  • 정확성: 4.7/5 — 문제였던 영어 제목 노출 경로를 filter/report 양쪽에서 차단했고 실제 본문으로 확인.
  • 완성도: 4.5/5 — 신규 wrapper와 백필 완료. 전체 과거 뉴스레터 일괄 백필은 후속.
  • 검증: 4.8/5 — 구조 확인, context filter, no-send 본문, 영어 제목 grep, py_compile 확인.
  • 최소 변경: 4.6/5 — 뉴스레터 요약 추출/표시 경로만 수정하고 발송 로직은 건드리지 않음.

종합: 4.65/5.