08:00 - 다이제스트 프롬프트 표준화 & Notebook LM Sources 100% 보장

Problem: Contents Hub 다이제스트 형식이 혼재(대화체 vs 구조화)되고, AI가 Notebook LM Sources 섹션을 지속적으로 누락하는 문제 발생.

Solution:

  1. 최근 5개 다이제스트 분석 → 표준 6단계 형식 수립 (SUBJECT → 한 줄 요약 → 에디터 노트 → 오늘의 픽 → 더 보기 → Notebook LM Sources)
  2. AI 실패 대비 후처리 fallback 구현 — AI/ML 키워드(ai, ml, llm, agent 등)로 URL 자동 선별, 플랫폼별 최소 1개/최대 3개 선정
  3. _strip_notebook_section() 비활성화 → 이메일 본문에도 섹션 유지

Result: 프롬프트 강화 + 후처리 fallback으로 Notebook LM Sources 100% 보장, v1.0.18 배포 완료.


08:05 - 개발 워크플로우 개선 & Git 정리

Problem:

  1. 배포 전 Git commit 누락 사건 (v1.0.18)
  2. 로컬 서버 실행 중 배포 → 중복 다이제스트 메일 발송
  3. Untracked 파일 7개 방치

Solution:

  1. CLAUDE.md에 명확한 순서 추가: 개발 → 커밋 → 로컬서버중지 → 배포 → 원격테스트
  2. 배포 체크리스트 문서화 (5단계)
  3. Untracked 파일 정리:
    • 커밋: crawl_longblack_urls.py, test_new_prompt.py, notebook-sources/ (가치 있는 유틸리티)
    • 삭제: test_new_prompt_result.md, docs/prompt.txt, docs/blog-*.md (임시/중복 파일)

Result: 워크플로우 문서화 완료, Git 저장소 깔끔하게 정리 (untracked 0개), 향후 배포 실수 방지.


08:16 - Longblack 쿠키 갱신

Problem: Longblack 쿠키 만료 알림 도착 — "Please re-login to continue crawling"

Solution:

  1. 로컬에서 longblack_login.py 실행 → 브라우저 로그인 → 쿠키 저장 (4.1K)
  2. 쿠키 파일을 운영 서버로 복사 (scp)
  3. Docker 컨테이너 재시작 → Health check 확인 (server/db/redis 모두 OK)

Result: Longblack 구독 재개, 다음 크롤링(10:00 KST)부터 정상 수집. 현재 128개 콘텐츠 누적 중.


08:25 - 세션 작업 정리 & 블로그 발행

Problem: 이번 세션에서 진행한 4가지 개선 작업(다이제스트 개선, 워크플로우 정비, Git 정리, 쿠키 갱신)을 체계적으로 정리하고 공유할 필요.

Solution:

  1. Sparks /spark blog 명령으로 블로그 글 작성 프로세스 시작
  2. 제목 선택: "Contents Hub 운영 안정화 작업기"
  3. Claude가 2,100자 분량 글 작성 — 배경, 4가지 개선 작업, 4가지 교훈, 다음 단계 정리
  4. README.md 업데이트 + Git commit & push

Result: 블로그 글 발행 완료. 이번 세션의 핵심 개선사항과 교훈이 모두 문서화되어 향후 참조 가능. 특히 "AI는 100% 신뢰할 수 없다", "체크리스트는 실수를 막는다" 같은 교훈 추출.


08:35 - 시크릿 백업/복구 파이프라인 E2E 테스트

Problem: /secrets backup/secrets restore 커맨드가 설계만 완료되고 실제 테스트를 한 번도 하지 않은 상태. rclone gdrive remote도 미설정.

Solution:

  1. rclone gdrive remote 설정 — rclone config create + Google OAuth 브라우저 인증
  2. 전체 백업 실행:
    • secrets-index.md에서 18개 파일 경로 추출
    • 14개 파일 스테이징 성공, 3개 건너뜀 (church-finance .env 없음, gdrive-token.json 없음)
    • manifest.json 생성 (원본 경로 매핑)
    • tar 압축 (14KB) → gpg AES-256 암호화 → Google Drive 업로드
  3. 복구 테스트 실행:
    • Drive에서 다운로드 → gpg 복호화 → tar 해제
    • manifest.json 기반 14개 파일 전부 diff 비교 — 14/14 원본과 동일 확인
    • 임시 디렉토리 정리
  4. 1password 프로젝트 git init + initial commit (6 files)
  5. 블로그 작성: "시크릿 백업 파이프라인: gpg + rclone으로 Google Drive에 암호화 백업하기"

Result: 백업/복구 파이프라인 전 구간 검증 완료. gpg 비대화형 모드(--batch --passphrase)로 Claude Code 내에서도 직접 실행 가능 확인. 실사용 시 안전한 패스프레이즈로 교체 필요.