SkillAgentSearch skills...

Kiwimu

Turn textbooks, PDFs, and web content into your own interlinked learning wiki powered by LLM

Install / Use

/learn @Open330/Kiwimu
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <img src="assets/logos/logo_2_minimalist_icon_transparent.png" alt="Kiwi Mu" width="120">

Kiwi Mu

Turn any textbook into your personal learning wiki

전공책, PDF, 웹 콘텐츠를 넣으면 — LLM이 자동으로 상호 링크된 학습 위키 + 퀴즈를 생성합니다.

npm Bun TypeScript License

</div>

30초 데모 체험

API key 없이 바로 체험할 수 있습니다:

mkdir my-wiki && cd my-wiki
bunx @open330/kiwimu init --demo
# → 양자역학 샘플 위키 + 학습 퀴즈가 즉시 생성됩니다
# → http://localhost:8000 에서 확인하세요

Quickstart for Agents

<div><img src="https://quickstart-for-agents.vercel.app/api/header.svg?theme=claude-code&logo=kiwimu&title=Set+up+a+learning+wiki+from+any+textbook+or+URL&lang=Agents&font=mono&mascot=hat" width="100%" /></div>
mkdir my-wiki && cd my-wiki
bunx @open330/kiwimu init
bunx @open330/kiwimu add "<YOUR_URL_OR_PDF>"
bunx @open330/kiwimu serve
<div><img src="https://quickstart-for-agents.vercel.app/api/footer.svg?theme=claude-code&text=copy+this+prompt+%C2%B7+paste+into+your+agent+%C2%B7+get+a+learning+wiki&font=mono" width="100%" /></div>

Why Kiwi Mu?

교과서 한 권을 읽으면 수십 개의 개념이 서로 연결됩니다. Kiwi Mu는 LLM을 활용해 이 연결을 자동으로 만들어, 지식을 빠르게 탐색할 수 있는 위키로 변환합니다.

  • LLM 기반 문서 분석 — 챕터/섹션 구조를 보존한 원본 페이지 + 핵심 개념별 자동 생성 페이지
  • 원본/개념 분리 — 📖 원본 문서와 📝 개념 문서를 시각적으로 구분
  • 자동 상호 링크 — 원본↔개념 간 유기적 cross-link + 외부 참고 자료 (Wikipedia 등)
  • Dynamic Q&A — 텍스트 드래그 → 팝오버 질문 → LLM이 새 개념 페이지 자동 생성 + 하이라이트 링크
  • 웹 페이지 편집 — serve 모드에서 ✏️ 마크다운 편집
  • SM-2 간격 반복 — Anki 스타일 SRS (퀴즈 자동 생성 포함)
  • 학습 대시보드 — 숙달도, 약한 개념, 복습 일정 시각화
  • MD 파일 + 디렉토리 일괄 인제스트kiwimu add <directory>로 .md 파일 일괄 처리
  • LaTeX 수식 렌더링 — KaTeX 기반 수학 수식 지원
  • Mermaid 다이어그램 지원 — Mermaid.js 기반 다이어그램 렌더링
  • 지식 그래프 — D3.js 인터랙티브 그래프 (원본: 파란색, 개념: 초록색)
  • 데모 모드 — API key 없이 --demo로 즉시 체험 (양자역학 + 자료구조)
  • 다양한 파일 지원 — URL, PDF, DOCX, PPTX, PPT, DOC, KEY, RTF, MD (디렉토리 일괄 인제스트 지원)
  • 4개 LLM 프로바이더 — Google Gemini, Azure OpenAI, OpenAI, Anthropic
  • 다크 모드 — 시스템 테마에 자동 대응 (100% 커버리지)
  • 모바일 지원 — 햄버거 메뉴 + 슬라이드 사이드바
  • 접근성 — ARIA 속성, 검색 키보드 네비게이션
  • 웹 UI — 브라우저에서 문서 추가, 설정 변경, 빌드 실행
  • 토큰 사용량 추적 — API 호출 수, 토큰, 예상 비용을 웹에서 확인
  • 원클릭 배포 — GitHub Pages / Vercel
  • 라이브 데모kiwimu.internal.jiun.dev

vs. Alternatives

| Feature | Kiwi Mu | NotebookLM | Obsidian | Anki | |---------|---------|------------|----------|------| | Auto wiki from PDF | ✅ | ❌ | ❌ | ❌ | | Knowledge graph | ✅ | ❌ | ✅ (plugin) | ❌ | | Auto quiz generation | ✅ | ❌ | ❌ | ❌ (manual) | | Spaced repetition | ✅ (basic) | ❌ | ❌ | ✅ | | Self-hosted | ✅ | ❌ | ✅ | ✅ | | One-click deploy | ✅ | ❌ | ❌ | ❌ | | Open source | ✅ | ❌ | ❌ | ✅ | | Free | ✅ | ✅ | Freemium | ✅ |

Quick Start

설치

# npm/bunx로 바로 사용 (설치 불필요)
bunx @open330/kiwimu init

# 또는 글로벌 설치
bun add -g @open330/kiwimu

데모 모드 (API key 불필요)

mkdir my-wiki && cd my-wiki
bunx @open330/kiwimu init --demo

양자역학 샘플 위키가 생성되어 바로 체험할 수 있습니다:

  • 📖 원본 문서 + 📝 개념 페이지
  • 🔗 자동 상호 링크
  • 📊 지식 그래프
  • 📝 학습 퀴즈
  • 🎲 임의 문서 탐험

프로젝트 생성 (Interactive CLI)

mkdir my-wiki && cd my-wiki
bunx @open330/kiwimu init

Interactive 프롬프트가 실행됩니다:

🥝 Kiwi Mu — 새 학습 위키 만들기

◆ 위키 이름
│  Radio Astronomy Wiki

◆ LLM 프로바이더
│  ● Google Gemini  (무료 API key: aistudio.google.com)
│  ○ Azure OpenAI
│  ○ OpenAI
│  ○ Anthropic Claude

◆ 모델명
│  gemini-3.1-flash-lite-preview

◆ API Key
│  ••••••••••••

🥝 'Radio Astronomy Wiki' 위키가 생성되었습니다!

문서 추가

# URL 추가
bunx @open330/kiwimu add "https://www.cv.nrao.edu/~sransom/web/Ch1.html"

# 파일 추가 (PDF, DOCX, PPTX, DOC, PPT, KEY, RTF)
bunx @open330/kiwimu add textbook.pdf
bunx @open330/kiwimu add lecture.pptx

LLM이 문서를 분석하여:

  1. 📖 원본 페이지 — 원래 챕터/섹션 구조 보존
  2. 📝 개념 페이지 — 핵심 용어·정의·법칙 자동 생성
  3. 🔗 Cross-link — 원본↔개념 간 유기적 연결
  4. 📝 퀴즈 — 개념별 학습 퀴즈 자동 생성

학습 퀴즈

# 터미널에서 퀴즈 풀기
bunx @open330/kiwimu quiz

# 문제 수 지정
bunx @open330/kiwimu quiz -n 10

웹에서도 http://localhost:8000/quiz.html에서 카드 플립 방식으로 퀴즈를 풀 수 있습니다.

Dynamic Q&A

위키 페이지에서 이해가 안 되는 부분을 드래그하면, 팝오버가 나타나 LLM에게 질문할 수 있습니다.

  1. 텍스트 드래그 — 궁금한 구절을 선택
  2. 팝오버 질문 — "이게 뭐야?", 자유 질문, 또는 자동 생성 질문 선택
  3. 새 개념 페이지 생성 — LLM이 답변을 새로운 개념 페이지로 자동 생성
  4. 하이라이트 링크 — 드래그한 텍스트가 새 페이지로의 링크로 변환

kiwimu serve 모드에서 실시간으로 동작합니다. 학습 중 발생하는 궁금증을 즉시 해결하고, 위키가 유기적으로 확장됩니다.

빌드 및 서버

# 정적 사이트 빌드
bunx @open330/kiwimu build

# 로컬 서버 실행 (웹에서 문서 추가 가능)
bunx @open330/kiwimu serve
# → http://localhost:8000

# 포트 변경
bunx @open330/kiwimu serve -p 3000

관리 페이지

kiwimu serve 실행 후 콘솔에 표시되는 관리 URL (/manage?token=...)로 접속:

  • 위키 이름 변경
  • LLM 프로바이더/모델/API Key 설정
  • 토큰 사용량 및 예상 비용 확인
  • 파일 업로드 (PDF, DOCX, PPTX 등)
  • URL 추가
  • 수동 빌드 실행
  • 페르소나 관리

배포

# GitHub Pages (기본)
bunx @open330/kiwimu deploy

# Vercel
bunx @open330/kiwimu deploy --target vercel

Commands

| 명령 | 설명 | |------|------| | kiwimu init [name] | 새 위키 프로젝트 생성 (interactive CLI) | | kiwimu init --demo | 샘플 데이터로 즉시 체험 (API key 불필요) | | kiwimu add <source> | URL 또는 파일 추가 (PDF, DOCX, PPTX, DOC, PPT, KEY, RTF, MD) | | kiwimu add <directory> | 디렉토리 내 모든 .md 파일 일괄 인제스트 | | kiwimu build | 정적 위키 사이트 빌드 | | kiwimu serve [-p port] | 웹 서버 실행 (문서 추가/관리 가능) | | kiwimu quiz [-n count] | 터미널에서 학습 퀴즈 풀기 | | kiwimu expand [--provider] | LLM으로 문서 내용 확장 (선택) | | kiwimu deploy [--target] | GitHub Pages / Vercel에 배포 | | kiwimu status | 현재 위키 상태 표시 |

Supported File Formats

| 형식 | 방법 | |------|------| | URL (HTTP/HTTPS) | Cheerio 웹 크롤링 | | PDF | pdf-parse | | DOCX | mammoth | | PPTX | ZIP/XML 파싱 | | DOC / PPT / RTF | macOS textutil | | KEY (Keynote) | 텍스트 추출 (제한적) | | Markdown (.md) | 직접 텍스트 추출 (디렉토리 일괄 지원) |

Supported LLM Providers

| 프로바이더 | 추천 모델 | 비고 | |-----------|----------|------| | Google Gemini | gemini-3.1-flash-lite-preview | 무료 API key | | Azure OpenAI | gpt-5.4-nano | Azure 구독 필요 | | OpenAI | gpt-5.4 | API key 필요 | | Anthropic | claude-sonnet-4-6 | API key 필요 |

Architecture

소스 (URL / PDF / DOCX / PPTX / DOC / PPT / KEY / RTF / MD)
    ↓
[ Ingest ]      ── Cheerio / pdf-parse / mammoth / jszip / textutil / MD 직접 추출
    ↓
[ Phase 1 ]     ── LLM: 원본 구조 추출 (📖 원본 페이지) — 병렬 처리 (concurrency=3)
    ↓
[ Phase 2 ]     ── LLM: 개념 추출 (📝 개념 페이지)
    ↓
[ Phase 2.5 ]   ── LLM: 학습 퀴즈 자동 생성 (📝 퀴즈) — 병렬 처리
    ↓
[ Phase 3 ]     ── [[wiki link]] 해석 + 원본↔개념 cross-link
    ↓
[ Build ]       ── 정적 HTML (사이드바, KaTeX, Mermaid, 지식 그래프, 퀴즈, 다크 모드)
    ↓
[ Deploy ]      ── GitHub Pages / Vercel

[ Dynamic Q&A ] ── 텍스트 드래그 → 팝오버 → LLM 질문 → 새 개념 페이지 생성 + 하이라이트 링크
                   (serve 모드에서 실시간 동작)
project-dir/
├── kiwi.toml              # 프로젝트 + LLM 설정
├── kiwi.db                # SQLite (문서, 링크, 퀴즈, 사용량)
├── uploads/               # 업로드된 파일
└── _site/                 # 빌드 결과
    ├── index.html         # 홈 (문서 목록)
    ├── graph.html         # 지식 그래프
    ├── quiz.html          # 학습 퀴즈
    ├── dashboard.html     # 학습 대시보드
    ├── wiki/              # 각 문서 페이지
    │   └── random.html    # 임의 문서
    ├── static/            # CSS, JS, 로고
    │   ├── dynamic-qa.js  # Dynamic Q&A (드래그→팝오버→질문)
    │   └── edit-page.js   # 웹 페이지 편집 모달
    └── search-index.json

src/
├── services/
│   ├── dynamic-qa.ts      # Dynamic Q&A 서버 로직
│   └── ingest.ts          # 공유 인제스트 로직
├── ingest/
│   ├── markdown.ts        # Markdown 파일 파싱 (디렉토리 일괄 지원)
│   ├── web.ts / pdf.ts / docx.ts / pptx.ts
│   └── ...
├── demo/
│   ├── sample-data.ts     # 데모 샘플 데이터
│   └── setup.ts           # 데모 초기화
└── build/static/
    ├── dynamic-qa.js      # Dynamic Q&A 클라이언트
    └── edit-page.js       # 페이지 편집 클라이언트

Tech Stack

  • Bun — 런타임, 패키지 매니저, 빌트인 SQLite
  • TypeScript — 타입 안전한 파이프라인
  • @clack/prompts — Interactive CLI
  • Cheerio — 웹 페이지 파싱
  • Mammoth — DOCX 파싱
  • JSZip — PPTX 파싱
  • Marked + sanitize-html — Markdown → 안전한 HTML
  • D3.js — 지식 그래프
  • KaTeX — LaTeX 수학 수식 렌더링
  • Mermaid.js — 다이어그램 렌더링
  • gh-pages — GitHub Pages 배포

Security

  • Bearer 토큰 인증 (serve 모드)
  • SSRF 방지 (프라이빗 IP 차단, 리다이렉트 재검증)
  • Path Traversal 방지 (resolve 검증)
  • XSS 방지 (sanitize-html, CSP 헤더, escapeHtml)
  • 파일 업로드 제한 (50MB)

License

MIT

View on GitHub
GitHub Stars29
CategoryContent
Updated3d ago
Forks7

Languages

TypeScript

Security Score

90/100

Audited on Mar 31, 2026

No findings