/wiki수집 — 외부 폴더 → INPUT raw md 변환·수집 절차
별칭: wiki수집 · Wiki Collect Command · INPUT 일괄 수집
/wiki수집 — 외부 폴더 → INPUT raw md 변환·수집 절차
개요
본 프로젝트가 신설한 슬래시 커맨드. 외부 폴더의 흩어진 자료를 한 번에 스캔·필터·변환하여 90 입력 자료(INPUT)/ 하위에 raw md로 정착시킨다. 프로젝트 미션 적합성 필터링이 핵심 — 모든 파일을 가져오지 않고, 본 프로젝트(교회 사역 + AI 선용)에 부합하는 것만 채택.
입력 (Input)
- 인자: 외부 폴더 절대 경로 (예:
D:\Dropbox (개인용)\Code_차세대 AI 선용) - 본 프로젝트 CLAUDE.md (미션 키워드 추출용)
- 사용자 승인 (dry-run 후)
처리 (Processing) — 10 Step
Step 1. 사전 확인
- 현재 작업 디렉토리가 LLMWiki 프로젝트인지 (
CLAUDE.md+10 LLMwiki/WIKI_CLAUDE.md존재) - 인자 폴더 존재·읽기 권한
90 입력 자료(INPUT)/디렉토리 존재 (없으면 mkdir)
Step 2. 1차 필터 (확장자·노이즈)
- 화이트리스트:
.md .markdown .txt .docx .doc .pdf .hwp .hwpx .html .htm .epub .rtf .odt .pptx - 블랙리스트: 코드(
.py .js .ts ...)·빌드·미디어·OS 메타·숨김 폴더(.git/ .obsidian/ node_modules/)
Step 3. 2차 필터 (키워드 매칭)
파일명 + 첫 200~500자 본문에 매칭:
- 3축 엔지니어링: 프롬프트·컨텍스트·하네스
- AI 도메인: AI·LLM·GPT·Claude·Gemini·생성형·인공지능
- 사역 도메인: 사역·목회·설교·제자훈련·교회·신앙·신학·복음·선교·예배
- 가드레일: 가드레일·guardrail·안전·윤리·분별·정체성
- 선용: 선용·활용·도입·적용
매칭 ≥ 2 → 자동 채택 / 매칭 1 → LLM 판정 큐 / 매칭 0 → 자동 제외
Step 4. 3차 필터 (LLM 판정, 애매한 것만)
매칭 1개인 파일에 대해 LLM이 첫 1000자 읽고 accept / reject / unclear 판정.
Step 5. Dry-run 보고
사용자에게 테이블 출력: | # | 원본 | 형식 | 1차 | 키워드 | LLM | 결정 | 9001 | 900101 | 스캔/채택/제외/skip 카운트, 형식·카테고리 분포. 사용자 승인 받기 전 어떤 파일도 쓰지 않음.
Step 6. 카테고리 자동 분류 (9001 / 900101)
- 중분류 (9001~9099): 소스의 1depth 폴더명 → 9001부터 등장 순서 + 한글명
Code_차세대 AI 선용/→9001 차세대AI선용
- 세분류 (900101~9001NN): 2depth 폴더명 → 중분류 번호 + 01부터 + 한글명
Code_차세대 AI 선용/00_지침서/→9001 차세대AI선용/900101 지침서
- 3depth 이하: 원본 폴더 계층 그대로 보존
- 사용자가 dry-run에서 한글명 수정 가능
Step 7. md 변환
| 원본 | 명령 |
|---|---|
.md/.txt | UTF-8 변환 후 복사 |
.docx/.odt/.rtf | pandoc <in> -o <out.md> --extract-media=_attachments/<rel> |
.pdf | pdftotext -layout 또는 pymupdf fallback |
.hwp/.hwpx | hwp5html → pandoc |
.html | pandoc |
.pptx | pandoc 시도, 실패 시 _skipped/ |
도구 미설치 = fail-soft (해당 형식만 _skipped/, 나머지 진행)
Step 8. SNLW + SNLC 하이브리드 frontmatter 부착
각 변환된 md 상단에 YAML 삽입:
- SNLW 필수 6:
wiki_id: raw/<중분류>-<세분류>/<slug>·title·created·status: draft·visibility: private·subdomain - SNLW 권장:
type: raw·aliases: [원본 한글]·tags·language: ko·version: 1·last_edited_at - SNLC 메타 (raw staging 추적):
capture_session·capture_source·original_format·converter·mutation_count: 0·last_mutator: wiki수집 - Tier:
tier: raw·promoted_to_source_at: null
Step 9. _attachments/ 처리
pandoc --extract-media=_attachments/<중분류>/<세분류>/<slug>/로 추출. 본문에서는 상대경로  유지.
Step 10. wiki/log.md 엔트리 append
세션 ID + 스캔/채택/제외 카운트 + 중분류 트리 + 변환 도구별 카운트 + 다음 단계 안내.
출력 (Output)
90 입력 자료(INPUT)/
├── 9001 [중분류 한글]/900101 [세분류 한글]/<원본 폴더 계층>/<slug>.md
├── 9002 [중분류 한글]/...
├── _attachments/9001/900101/<slug>/
├── _skipped/ ← 변환 실패·도구 누락
└── README.md ← 자동 갱신
다음 단계는 procedure/source-promotion로 이어진다 (raw → sources/ 승격은 사람이).
통신 (Communication)
| 송신 | 수신 | 메시지 | 형식 |
|---|---|---|---|
| 사용자 | /wiki수집 | 폴더 경로 인자 | CLI |
| /wiki수집 | LLM 판정 | unclear 파일 검토 요청 | 본문 1000자 |
| /wiki수집 | 사용자 | dry-run 테이블 + 승인 요청 | Markdown |
| /wiki수집 | wiki/log.md | 수집 엔트리 append | Markdown |
사용 예시
/wiki수집 "D:\Dropbox (개인용)\Code_차세대 AI 선용"
/wiki수집 "D:\Dropbox (개인용)\Code_Vibe Coding"
주의사항
- 소스 폴더는 read-only — 절대 수정하지 않음
- 이미 존재하는 INPUT 파일은 덮어쓰지 않음 (
<slug>-2.md접미사) - dry-run 사용자 승인 전 0 파일 쓰기
- sources/ · wiki/는 이 커맨드가 건드리지 않음 (INPUT까지만)
- 개인정보·민감정보 카드는
visibility: private고정 - SSOT는
LLMwiki_init/commands/wiki수집.md, 글로벌 복사본은~/.claude/commands/wiki수집.md
관련
- procedure/source-promotion (다음 단계: raw → sources/ 승격)
- procedure/wiki-ingest-pipeline (그 다음 단계: sources/ → wiki/ 컴파일)
- concept/karpathy-llm-wiki-pattern (전체 패턴)