블로그 발행 안전장치와 LangAlpha 리포트 인계 흐름 정리
오늘은 새 글을 더 많이 만드는 것에 앞서, 완성된 글이 블로그에 올라가는 마지막 구간을 점검하고 실수를 막는 장치를 보강했다. 핵심은 조사와 글 작성은 LangAlpha가 책임지고, 블로그 저장소에서는 데이터에 손대지 않은 채 형식 변환·속성 검증·발행만 담당하도록 역할을 명확히 나눈 것이다.
발행 직전 속성 검증
수동 발행 과정에서 사용자가 최종 수정한 한국어·영문 드래프트를 다시 읽도록 했다. 이후 제목, slug, 요약, SEO 항목, 태그와 영문 원고의 한글 잔존 여부 등을 검사하고, 필수값에 문제가 있으면 업로드 전에 중단한다. 일부 글만 발행에 실패한 경우에는 성공한 초안만 정리하고 실패한 편집본과 세션은 남겨 재시도할 수 있게 했다.
Strapi 쪽에서도 빈 slug와 직렬화할 수 없는 JSON 데이터를 거부하도록 보완했다. 기존 글 조회가 네트워크 문제로 실패했을 때 이를 신규 글로 오인해 중복 생성하지 않도록 오류를 그대로 전달하는 안전장치도 추가했다.
표시 품질과 배포 확인 개선
리포트형 HTML은 본문에 CSS와 JavaScript가 함께 들어간다. 이전 방식처럼 전체 문자열 길이로 읽기 시간을 계산하면 실제보다 크게 표시될 수 있어, 비표시 자산과 HTML·Markdown 문법을 제외한 보이는 글자만 계산하도록 수정했다.
Cloudflare 재빌드 훅은 캐시된 응답을 성공으로 잘못 판단하지 않도록 공통 모듈로 정리했다. 발행 도구들은 이제 같은 방식으로 재빌드를 요청하고, 실패하면 조용히 넘기지 않고 원인을 확인할 수 있게 남긴다.
LangAlpha 최종 HTML을 넘기는 방법
LangAlpha에서는 조사와 검증을 거친 최종 결과물을 독립 실행형 HTML로 만든다. 그 뒤 단계에 별도의 유료 AI API를 연결하지 않기로 했다. 대신 ChatGPT, GLM, Gemini 같은 구독형 AI가 저장소의 작업지시서를 읽고 블로그용 HTML 사본과 manifest를 준비한다.
전체 흐름은 다음과 같다.
LangAlpha 최종 HTML
→ 구독형 AI에 변환 작업지시서와 원본 경로 전달
→ sunnypoint용 HTML 사본 + manifest 생성
→ upload_report.py --dry-run 구조 검증
→ 사용자 확인
→ upload_report.py --deploy 발행·재빌드
이 과정에서 AI는 숫자, 단위, 기간, 출처 URL, 실적과 추정치 구분을 바꿀 수 없다. 원본 안에 모순이 있으면 추측으로 보정하지 않고 사용자에게 보고해야 한다. 실제 CSS 범위와 차트 로더, 본문 구조 검증은 기존 결정론적 업로더가 수행하므로 모델 API 비용 없이 반복해서 확인할 수 있다.
재사용할 작업지시서는 publisher/LANGALPHA_HTML_TO_BLOG_PROMPT.md에 남겼다. 다음 실제
LangAlpha 리포트부터는 이 문서 하나와 원본 HTML 경로를 구독형 AI에 전달하면 된다.
다음 확인 항목
다음 리포트 한 편을 이 흐름으로 통과시키면서 원본 수치 보존 여부, 모바일 표·차트 표시, 검색 결과용 제목과 설명, 발행 후 정적 빌드 반영까지 한 번에 확인한다. 실제 사용 중 반복되는 오류가 확인될 때만 결정론적 검증 규칙을 추가할 계획이다.