v2026.05.02 · 운영자·검토자·기여자 전용 · 같은 비밀번호로 admin.html 접근 가능
본 페이지는 GitHub Pages에 정적 파일로 배포되며, 비밀번호 검증은 Cloudflare Worker (815-chat)가 수행합니다.
비전
충청권 1876~1945 — 친일·매국과 항일·애국이 같은 거리, 같은 해에 어떻게 공존했는가.
1차 사료에 근거한 지역사 오픈 위키.
대통령 소속 친일반민족행위진상규명위원회의 1차 사료 + 향토사학자(김남균 선생 외)의 단행본·답사 자료 + 신문 1차 사료(네이버 뉴스라이브러리 자동 수집)를 통합한 충청권 지역사 위키. Andrej Karpathy의 LLM Wiki 패턴을 따라 벡터 DB·청킹 없이 LLM이 직접 위키 링크([[..]])를 따라가며 답합니다.
Phase 1~5 로드맵의 상세는 로드맵 섹션을, vault 내부 가이드는 _가이드/비전.md·AGENTS.md·CLAUDE.md를 참조하십시오.
우리가 만드는 / 만들지 않는 것
| 만든다 | 만들지 않는다 |
| 충청권(충북·충남·대전·세종) 1876~1945 인물·사건·기관·사료의 통합 위키 | 전국 백과사전 (충청권 깊이 우선) |
| 친일·매국과 항일·애국 기록을 같은 화면·같은 타임라인에 병렬 표시 | 친일 또는 항일 일방 서술 |
| 1차 사료 출처 신뢰도 명시 (●●●/●●○/●○○) | 검증 없는 설(說) 수록 |
| 연구자가 인용 가능한 학술 메타데이터 (DOI·BibTeX·영구 URL) | 익명 게시판 식 자료 수집 |
| 일반 시민·학생이 진입할 수 있는 페르소나 챗봇 + 시각화 | 학술 전문가 전용 인터페이스 |
| 제출 → 검토자 검증 → 공개되는 오픈 위키 워크플로 | 운영자 단독 편집 위키 |
| 지역 연구자·향토사학자가 자기 자료를 저작권 보호받으며 게시할 수 있는 플랫폼 | 자료 무단 수집·재배포 |
4축 — 시간·공간·인물·사료
| 축 | 의미 | 데이터 출처 |
| 시간축 | 1876 강화도조약 ~ 1945 해방. 70년 시기 구분 | frontmatter 발생일_시작/끝, 08-스냅샷/ |
| 공간축 | 충청권 우선 → 전국. 옛 지명 → 현대 행정단위 매핑 | frontmatter 관련지역, 지역_좌표 |
| 인물축 | 친일/항일 양면 동시 표시. 같은 동네·같은 해의 두 인물 | 01-인물/친일, 01-인물/항일 |
| 사료축 | 공문서·신문·판결문·서적·증언. 신뢰도 3단계 명시 | 00-원자료/, source_verified |
시기 5단계 (+ 전사기)
| 시기 | 연도 | 핵심 사건 | 충청 양상 |
| 전사기 (前史期) | 1876~1894 | 강화도조약·임오군란·갑신정변·동학혁명 | 충청 동학 거점 (보은 취회) |
| 국권 침탈기 | 1894~1910 | 청일·러일전쟁·을사조약·정미7조약·한일병합 | 의병 저항 (홍주 의병) + 친일 관료 등장 |
| 무단통치기 | 1910~1919 | 헌병경찰·토지조사사업·3·1운동 | 충청 만세시위 + 부역자 명단화 |
| 문화통치기 | 1919~1931 | 신간회·학생운동·노농운동 | 청주농고 1919/1930 맹휴 |
| 민족말살기 | 1931~1945 | 만주사변·중일전쟁·황국신민화·강제동원 | 신사참배 거부 + 친일 협력 가속 |
주요 페이지
| 경로 | 역할 | 접근 권한 |
index.html | 홈 — 박순길 인트로 + 타임라인 + 진입 카드 | 공개 |
chat.html | 페르소나 챗봇 (아카이브 검색 / 박순길 / 큐레이터) | 공개 |
graph.html | Sigma.js 지식 그래프 시각화 (1,949 노드) | 공개 |
submit.html | 공개 자료 제출 폼 (누구나 GitHub Issue로 제출) | 공개 |
review.html | 검토자 화면 — 4종 플래그(검토완료/수정필요/분류재검토/반려추천) | 검토자 비밀번호 |
admin.html | 관리자 화면 — 승인 시 GitHub Contents API로 .md 커밋 | 관리자 비밀번호 |
docs.html 현재 페이지 | 운영 DOCS — 비전·스키마·정책 | 관리자 비밀번호 |
person.html PoC 승인 → 본격 작업 진입 | 인물 분석 — 사료 attribution + 토글 UI (서상경·오석영 PoC, 2026-05-05 사용자 승인) | 공개 |
페르소나
같은 질문에 답이 갈리는 세 대화 상대 — 답변 방식과 데이터 소스가 다릅니다.
| 대화 상대 | 핸들러 | 말투·시점 | 적합한 질문 |
| 🗂 아카이브 검색 (id 없음) | handleChat | 중립 사실 진술 / 시점 없음 | "X는 어떤 인물?" 같은 사실 질의 |
📖 박순길 (park_sungil_1930) | handlePersona | 1인칭 / 1912년생 / 1928~1932 청주 학생 | 1930년대 분위기 체감, 학생 시점 |
🔍 안내 큐레이터 (curator_local) | handlePersona | 3인칭 해설체 / 시점 없음 | 학술 인용·사료 신뢰도·전 시기 해설 |
박순길 (가상 인물)
- 한자명: 朴順吉 (가상 인물 — 청주공립농업학교 학생들의 경험을 바탕으로 합성)
- 출생: 1912년경 충청북도 청주군 내수면 세교리 (가상)
- 활동기: 1928~1932 청주공립농업학교 재학
- 시대 경계: 1932 이후 사건 → "직접 겪지 못했습니다"
- 지역 경계: 충북 외 → "신문에서 읽었습니다"
- 면식고지: 첫 답변 끝에 가상 인물임을 한 줄로 명시
- 학교 표기 규약: 1930년 시점 정식명칭 "청주공립농업학교"로 통일. "청주농고"는 광복 후 약칭이라 페르소나가 직접 칭하는 건 비역사적이지만, 독자 단서를 위해 "청주농고 전신인 청주공립농업학교" 형식 허용
예정된 추가 페르소나 (Phase 4)
- 어윤희 (실존, 충북 충주 출생 1880~1961) — 동학으로 남편 잃음 → 개성 3·1 → 서대문 → 보육사업. 충청권 항일 여성 페르소나 후보 1순위
- 청주공립고등여학교 학생 (가상) — 박순길의 동시대 여성 페어
- 박인덕 (실존, 평양·서울 / 친일) — 친일 여성 페르소나. 윤리 가드 강화 필수
- 시기별 큐레이터 (1894 동학 / 1907 의병 / 1919 3·1 / 1937 황국신민화)
⚠ 윤리 가드 — 실존 인물 페르소나는 (1) 사료 기반 발화에 한정, (2) 미확인 발언·내심 단정 금지, (3) 추정·문학적 재구성 표시 의무. 가상 인물은 첫 답변에 가공 인물임을 명시.
자료 제출·검토·승인 워크플로
공개 사용자 → submit.html → GitHub Issue (라벨: 자료제출)
↓
검토자 → review.html → 4종 플래그
· 검토완료 : 그대로 등재
· 수정필요 : 본문 수정 요청 코멘트
· 분류재검토 : AI 재분류 요청 (관리자 권한)
· 반려추천 : 등재 부적합
↓
운영자 → admin.html → 승인 시 GitHub Contents API로 .md 커밋 → GitHub Pages 배포
↓
LLM 컨텍스트(graph_data.json) 자동 갱신 (워커 5분 캐시 TTL)
역할 매트릭스
| 역할 | 가능 | 불가 |
| 제보자 (공개) | 자료 제출 (이미지·URL·텍스트) | vault 직접 편집 |
| 검토자 | 플래그·코멘트·메타데이터 수정 요청 | vault에 직접 커밋 |
| 관리자 | 승인·반려·AI 재분류·일괄 회수·직접 제출·분할 등록 | (없음, 단 회수·반려는 typed-confirmation 필수) |
컴포넌트 아키텍처
┌─────────────────────────────────────────────────────────────┐
│ GitHub Pages (정적 호스팅) │
│ index / chat / graph / submit / review / admin / docs.html │
└──────────────┬──────────────────────────────────────────────┘
│ HTTPS
┌──────────────▼──────────────────────────────────────────────┐
│ Cloudflare Worker (815-chat) │
│ · 페르소나 챗봇 (Workers AI Llama 3.3 70B) │
│ · GitHub API 프록시 (Issues / Contents / Comments) │
│ · 인증 (X-Admin-Secret 헤더 검증) │
└──────────────┬──────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────────┐
│ KV │ │ R2 │ │ GitHub │
│ AUTH │ │ATTCH │ │ (vault) │
│STATE │ │ │ │ │
└──────┘ └──────┘ └──────────┘
주요 바인딩
| 이름 | 용도 |
SUBMIT_AUTH (KV) | 제출자 토큰 / Rate-limit |
REVIEW_STATE (KV) | 검토자 플래그·코멘트 상태 |
ATTACHMENTS (R2 — archive-attachments) | 제출 첨부 이미지·PDF |
AI (Workers AI) | Llama 3.3 70B (페르소나 + AI 재분류 + 띄어쓰기 정리) |
GRAPH_DATA_URL | graph_data.json GitHub Pages 페치 URL |
RELATIONS_URL | 의미관계 파일 페치 URL (현재 미생성) |
ADMIN_SECRET (Secret) | 관리자 비밀번호 (쉼표 구분 다중 지원) |
REVIEWER_SECRET (Secret) | 검토자 비밀번호 |
frontmatter 스키마
공통 필드
---
type: 인물 | 사건 | 단체 | 학교 | 지역 | 문헌 | 가이드
side: 친일 | 항일 | 중립 # 인물 노트
source_verified: ●●● | ●●○ | ●○○
sources: # 권장 (Phase 1.5에서 도입)
- title: ...
type: 판결문 | 정부공식보고서 | 신문 | 학술논문 | 권위백과
grade: ●●●
관련인물: [...]
관련사건: [...]
관련지역: [...]
관련학교: [...]
tags: [...]
생성일: YYYY-MM-DD
submitter: ... # 제출자 (실명·필명)
submitter_contact: ... # 선택
delegated_by: ... # 대리등록자
list_source: ... # 자료 출처 목록 (예: 카카오톡 2026-04-29 김남균 제출)
license: CC-BY-4.0 # 향후 도입
---
인물 노트 추가 필드
이름: 홍길동
한자: 洪吉同
생년월일: 1900.01.01
사망년월일: 1980.12.31
출신지: 충청북도 청주
학력:
- 청주공립농업학교 (1925~1928) [●●●]
출처_볼륨: vol7
시작페이지: 5352
끝페이지: 5398
관련기관: [...]
언급횟수: 6
문헌 노트 추가 필드 (예: 단행본·신문)
책: 불망 - 충북 지역 친일 잔재 답사기
저자: 김남균
출판: 2019
출처_책: bulmang | pamyo | chungbuk_survey | chungbuk_hangil | ...
부: 제1부
지역: 충청북도
출처 등급제 정비 진행 중
현재 vault 등급 분포(2026-05-02 측정):
| 등급 | 노트 수 | 비율 | 판정 |
| ●●○ | 1,688 | 94.0% | 자동 도장 — 재평가 필요 |
| ○○○ | 75 | 4.2% | 잘못된 등급 — 신문기사 1차 사료인데 ○○○로 표기 |
| "레거시" (문자열) | 23 | 1.3% | 비표준 |
| ●●● | 10 | 0.6% | 정당 — 판결문·일기 직접 인용 노트 |
등급 부여 규칙 (Phase 1.5에서 자동화)
| 사료 종류 | 등급 |
| 판결문 / 공문서 / 본인 일기·서한·자필 메모 | ●●● |
| 친일반민족행위진상규명 보고서 (정부 공식) | ●●● |
| 보훈처 공훈전자사료관 / 국가기록원 | ●●● |
| 당시 신문 기사 (단독) | ●●○ |
| 당시 신문 기사 (복수 신문 교차 확인) | ●●● |
| 학술논문 / 학회지 / 박사학위논문 | ●●○ |
| 한국민족문화대백과 / 디지털향토문화대전 | ●●○ |
| 위키백과 | ●○○ (단서로만, 인용 권장 X) |
| 나무위키 | 인용 불가 — 추적 단서로만 |
| 블로그·SNS·구전 | ●○○ 또는 인용 불가 |
❌ 나무위키는 인용 출처가 아닙니다. 단지 "어디에 1차 사료가 있는지 추적하는 단서"로만 사용하고, 실제 인용은 그곳이 인용한 원사료를 직접 확인해서 vault에 들어옵니다. 나무위키 본문을 그대로 베껴 vault에 들어오면 위키 가치가 즉시 떨어집니다.
현재 데이터 통계 (2026-05-02)
| 항목 | 수치 |
| 총 노드 (graph) | 1,949 |
| 총 엣지 (graph) | 17,018 (양방향 8,614 / 단방향 8,404) |
| 전체 .md 파일 | 2,124 |
| 노드당 평균 엣지 | 8.7 |
| 충북 매칭 자료 | 649 |
| 충남 매칭 자료 | 158 |
| 대전 매칭 자료 | 8 |
| 세종 매칭 자료 | 79 |
1차 자료 묶음별 분포
| 출처 (source) | 건수 | 비고 |
| 친일반민족행위진상규명_보고서 | 1,066 | vol1~25 정부 공식 보고서 |
| 충북_학생_항일독립투쟁사 (1·2) | 546 | 1권 인물 평전 + 2권 사건 정리 |
| 불망 (김남균, 2019) | 10 | 충북 친일 잔재 답사기 |
| 파묘 (김남균, 2024) | 3 | 속편 |
| 충북_조사_2020 | 16 | 충북도 의뢰 친일잔재 기초조사 |
| 네이버 뉴스라이브러리 자동수집 | ~75 | 1920~30년대 신문 기사 OCR |
자주 쓰는 명령어
# 위키 점검 (frontmatter 누락·링크 깨짐)
python _가이드/scripts/lint_vault.py
# 그래프 재빌드 (노드 + 엣지 + summary)
python scripts/build_graph.py
# 충청권 4단위 통계 재생성
python scripts/build_regional_stats.py
# 친일잔재 source 필드 분리 (Phase 1 정비 완료)
python scripts/separate_source_field.py
# 워커 비밀 관리
cd worker && npx wrangler secret put REVIEWER_SECRET
cd worker && npx wrangler secret put ADMIN_SECRET
cd worker && npx wrangler kv key list --binding REVIEW_STATE --remote
# 워커 배포
cd worker && npx wrangler deploy
# 신문 기사 자동 수집 (1건)
python news-archive/collect.py "https://newslibrary.naver.com/..."
# 신문 기사 자동 수집 (배치 TSV)
python news-archive/collect.py --batch news-archive/data/seeds_xxx.tsv
배포 방법
① wiki (정적 페이지)
git add -p
git commit -m "feat: ..."
git push origin main
→ GitHub Pages 자동 빌드 (1~2분 후 반영)
② Cloudflare Worker
cd worker
npx wrangler deploy
→ https://815-chat.sungandpartners.workers.dev 즉시 반영. graph_data.json 변경은 워커 5분 캐시 TTL 후 자동 페치, 워커 코드 변경은 deploy 즉시 반영.
ℹ main 보호 — 가능하면 PR을 거쳐 머지하는 게 안전. 운영 중 직접 push가 필요하면 항상 빌드/타입체크 통과 후 진행하십시오.
절대 금지 (CLAUDE.md 발췌)
- ❌
00-원자료/ 안의 어떤 파일도 수정·이동·삭제하지 않는다.
- ❌ 사람 이름·한자·생몰년 등 frontmatter를 추측으로 채우지 않는다.
- ❌ 정치적 평가나 현대적 해석을 본문에 임의로 추가하지 않는다.
- ❌
git push --force로 main을 덮어쓰지 않는다.
- ❌ 비밀번호·토큰을 README나 가이드 문서에 평문으로 적지 않는다.
- ❌ 나무위키를 인용 출처로 사용하지 않는다 — 추적 단서로만.
- ❌ 가상 페르소나에 실존 인물의 미확인 발언·내심을 단정시키지 않는다.
로드맵 Phase 1~5
Phase 1 (완료) — 비전 + 데이터 골격
- ✅
_가이드/비전.md 작성
- ✅
CLAUDE.md에 비전 박음
- ✅ 친일잔재
source 필드 분리 (불망/파묘/충북_조사_2020)
- ✅
graph_data.json 노드에 path+summary 보강 → 챗봇 "자료 없음" 사고 해결
- ✅
docs.html 운영 DOCS (관리자 비밀번호 보호)
- ✅
person.html + data/person_poc.json — 사료 attribution + 토글 UI PoC 2026-05-05 승인
Phase 1.5 (완료, 2026-05-05) — 출처 등급 정비 + frontmatter v2
- ✅
scripts/regrade_sources.py — 신문기사 ○○○→●●○ / 보고서 ●●○→●●● / "레거시"→●●○ (1,168건 변경, ●●● 비율 0.6%→56%)
- ✅
scripts/migrate_frontmatter_v2.py — sources[] 배열 + added_at/added_by/needs_review 도입 (1,922 노트 마이그레이션)
- ✅
scripts/build_person_data.py → data/persons.json (1,524명) + data/persons_index.json
- ✅
person.html이 PoC JSON 대신 v2 frontmatter 기반 data/persons.json 직접 읽기 (1,524명 검색)
Phase 1.6 (PoC 완료, 2026-05-05) — 1차 사료 자동 발굴 (●●● 승급)
- ✅
scripts/enrich_sources.py — i815·보훈처 자동 조회 PoC (--limit/--side/--region/--dry-run)
- ✅ 결과는
data/enrich_proposals.json에 pending_review 적재 — vault 직접 변경 없음, 검토자 승인 필요 (트래픽 책임 분산)
- 🔲 검토자 큐(
review.html) UI 연동 — 사용자 트리거로 일괄 진행 예정
- 🔲 ●●● 노트 비율 56% → 70%+ 목표 (Phase 1.5에서 ●●● 56% 선달성, 잔여만 자동 발굴)
Phase 1.7 (룰 기반 완료, 2026-05-05) — 의미 관계 추출 (relations.json 부활)
- ✅
scripts/extract_relations.py — frontmatter + 본문 [[..]] 룰 기반 (LLM 미사용, 비용 0)
- ✅
graph_relations.json 자동 생성 — 36,672 관계 (인물-인물 9,477 / 인물-단체 6,149 / 인물-학교 524 / 인물-출신지 382 / 인물-사건 106 / 본문언급 20,034)
- ✅ 워커
buildContext가 RELATIONS_URL로 fetch (5분 캐시 TTL, 이미 구현됨)
- 🔲 LLM fact-triple 추출은 다음 Phase (룰 기반으로 우선 충분히 가동)
- 🔲
scripts/find_bridges.py — 같은 시기·지역 친일↔항일 매칭 52개 → 1,000개+ 목표
Phase 2 (1개월 후) — 서사 시각화 (MVP)
- 🔲
narrative.html — 시간 슬라이더 + 충청권 지도 + 사건 카드 + 친일/항일 인물 칩
- 🔲
data/narrative.json 빌드 스크립트
- 🔲 첫 PoC 사건 (사용자 결정): 1919 3·1 / 1929~30 광주학생운동·맹휴 / 1876~1910 동학·의병
- 🔲 충청권 항일 여성 노트 작성: 어윤희(충북 충주) + 유관순(충남 천안) + 옥중 동지 cross-link
Phase 2 (1개월) — 서사 시각화 (MVP)
- 🔲
narrative.html — 시간 슬라이더 + 충청권 지도 + 사건 카드 + 친일/항일 인물 칩
- 🔲
data/narrative.json 빌드 스크립트
- 🔲 첫 PoC 사건 (사용자 결정): 1919 3·1 / 1929~30 광주학생운동·맹휴 / 1876~1910 동학·의병
Phase 3 (2~3개월) — 연구자 도구
- 🔲
search.html — 다중 필터 (연도·지역·시기·사건유형·신뢰도·인물 분류)
- 🔲 자료별 "인용하기" 버튼 → BibTeX/RIS 클립보드
- 🔲 영구 URL (
/v/2026.05/...) — 월별 git tag
- 🔲
/api/v1/... REST API
Phase 4 (4~5개월) — 서사 깊이 + 학술 인증
- 🔲 DOI 발급 (Zenodo 연계)
- 🔲 ORCID 로그인
- 🔲 시기별 큐레이터 페르소나 (1894 동학 / 1907 의병 / 1919 3·1 / 1937 황국신민화)
- 🔲 어윤희·박인덕·청주공립고등여학교 학생 페르소나 추가
- 🔲 챗봇 vault 직독 (Karpathy LLM Wiki 정신 회귀)
Phase 5 (5~6개월) — 전국 확장
- 🔲 충청권 → 전국 8개 권역
- 🔲 영어/일어 인터페이스
- 🔲 일제 관헌문서 OCR 강화
변경 이력 (주요)
| 날짜 | 커밋 | 변경 |
| 2026-05-05 | (현재) | Phase 1.5+1.6+1.7 완료 — frontmatter v2 마이그레이션(1,922건), regrade(1,168건), persons.json(1,524명), enrich_proposals PoC, graph_relations.json(36,672건) 부활. 워커는 5분 캐시로 자동 픽업. |
| 2026-05-05 | (이전) | PoC 승인 — Phase 1 종료, Phase 1.5 (등급 정비 + frontmatter v2 마이그레이션) 진입 확정 |
| 2026-05-03 | 5f3eb39·befdb14 | deploy.yml 화이트리스트에 docs.html·person.html·data/ 추가 — 신규 페이지 GitHub Pages 배포 정상화 |
| 2026-05-03 | 26ba615 | 인물 분석 PoC — person.html + data/person_poc.json. 서상경·오석영 두 인물에 대해 사료 attribution + 토글 + 충돌 표시 + 타임라인 시연 |
| 2026-05-02 | 157f4fd | 운영 DOCS — docs.html (관리자 비밀번호 보호) + admin.html 진입 링크 |
| 2026-05-02 | 693dbe9 | 비전 확정 — 충청권 1876~1945 친일·항일 병렬 서사 위키. _가이드/비전.md + 친일잔재 source 분리 |
| 2026-05-02 | 7fd6861 | graph_data.json 노드에 path + 본문 요약 추가, 챗봇 컨텍스트에 본문 반영 → "자료 없음" 사고 해결 |
| 2026-05-02 | 94be4e4 | 박순길 인사말 어순 정정 (시점→신분→어휘안내→초대 4줄) |
| 2026-05-02 | 35160b8 | 박순길 인사말 친근체로 재정정 + 학교명 단서 표기 |
| 2026-05-02 | 0d8ec18 | 박순길 인사말과 학교명을 1930년 시점 정식명칭으로 정정 |
| 2026-05-02 | 6ccced0 | 충청권 4개 행정단위 통계 자동 생성 스크립트 |
| 2026-05-02 | c56c8a1 | 묶음 인덱스 → GitHub Actions 자동 본문 추출 + 분할 등록 (A안) |
| 2026-05-02 | (워커) | Cloudflare Worker version a17a43cc 배포 — 페르소나 톤 + buildContext summary 반영 |
이 문서는 운영 중에 계속 갱신됩니다. 가장 최신 정보는 vault의 _가이드/비전.md + CLAUDE.md + AGENTS.md를 함께 참조하십시오.