paper-summary · git:20260707.348d584 · 2026-07-07 · sha256 b9cec5cce670ac70
paper-summary git:20260707.348d584A
Immutable. This exact content never changes and is served at /api/v1/blob/b9cec5cce670ac70.
---
name: paper-summary
description: 현재 폴더의 PDF 논문을 읽어 한국어로 (1) 전체 번역본 HTML 과 (2) 핵심 요약본 HTML 두 개를 만든다. 그림·표·수식·그래프를 그대로 가져오고, 두 문서는 서로 클릭 이동할 수 있다. 사용자가 /paper-summary 라고 하거나 "논문 번역/요약 html 만들어줘"라고 할 때 사용. (용어/약어 사전을 따로 만들려면 paper-summary-word 스킬을 쓴다.)
---
# paper-summary
현재 작업 폴더의 PDF 논문을 한국어로 변환한다. 결과는 **2개의 HTML**:
1. **`번역본.html`** — 논문 전체를 빠짐없이 한국어로 번역. 그림/표/수식/그래프를 원문 그대로 포함.
2. **`요약본.html`** — 해결하려는 문제·방법론·결과·결론 등을 카드 형태로 정리한 핵심 요약.
두 파일은 상단 네비게이션으로 서로 **클릭 이동** 가능하다.
> 용어/약어 사전(`용어사전.html`)은 별도 스킬 **`paper-summary-word`** 가 담당한다. 그 스킬을 실행하면 같은 `한국어_요약/` 폴더에 사전을 추가하고, 번역본·요약본의 네비게이션에도 용어사전 탭을 끼워 넣는다.
## 폴더 구조 (현재 폴더 기준으로 생성)
```
./한국어_요약/ ← 결과물. 사용자가 여는 폴더
├─ 번역본.html
├─ 요약본.html
└─ images/ ← HTML이 참조하는 그림 파일들
./작업파일/ ← 추출 스크립트·중간 산출물 등 "필요없는" 잡파일 전부
├─ manifest.json
└─ fulltext.txt
```
> 그림은 결과 HTML이 직접 참조해야 하므로 `한국어_요약/images/`에 둔다. 그 외 추출 메타데이터·텍스트 덤프 등 보기용으로 불필요한 모든 파일은 `작업파일/`에 격리한다.
---
## 실행 절차
### 0. 대상 PDF 찾기
- 인자(`$ARGUMENTS`)로 파일 경로가 주어지면 그것을 사용.
- 없으면 현재 폴더의 `*.pdf`를 찾는다.
- 1개면 그걸 사용. 여러 개면 목록을 보여주고 **어떤 PDF인지 사용자에게 묻는다**.
- 0개면 "현재 폴더에 PDF가 없습니다"라고 알리고 종료.
### 1. 폴더 생성
```bash
mkdir -p 한국어_요약/images 작업파일
```
### 2. 의존성 확인 & 추출 실행
스킬 디렉토리의 추출 스크립트 `scripts/extract_pdf.py` 를 쓴다.
**스킬 호출 시 함께 표시되는 "Base directory for this skill" 경로를 기준**으로 잡는다.
(예: `<base-dir>/scripts/extract_pdf.py`. 절대 `~/.claude/skills/...` 로 추측하지 말 것 —
플러그인으로 설치되면 `~/.claude/plugins/cache/...` 아래에 있다.)
PyMuPDF가 필요하다. 먼저 시도하고, 없으면 설치(외부 관리 환경이면 `--user` 폴백):
```bash
python3 -c "import fitz" 2>/dev/null \
|| pip3 install --quiet pymupdf \
|| pip3 install --quiet --user pymupdf
```
그다음 추출:
```bash
python3 "<base-dir>/scripts/extract_pdf.py" \
"<PDF경로>" "작업파일" "한국어_요약/images"
```
- stdout 으로 `{"ok":true, n_pages, n_raster, n_vector, title, manifest, fulltext}` JSON 이 나온다.
- 결과: `작업파일/manifest.json`(페이지별 텍스트 + 사용 가능한 이미지 목록), `작업파일/fulltext.txt`,
그리고 `한국어_요약/images/*.png`.
- `PYMUPDF_MISSING` 이 나오면 위 설치 명령 재시도. pip 도 막혀 있으면 사용자에게 알리고 어떻게 할지 확인한다.
### 3. 논문 내용 파악
- **Read 툴로 PDF 자체를 직접 읽는다** (페이지가 이미지로 렌더링되어 그림/표/레이아웃을 눈으로 확인 가능).
긴 논문이면 `pages` 인자로 나눠 읽는다.
- `작업파일/fulltext.txt` 로 정확한 텍스트(수식·기호 포함)를 대조한다.
- `작업파일/manifest.json` 으로 **어떤 그림 파일이 어느 페이지에 있는지** 파악한다.
각 이미지에는 `src`(예: `images/p003_img12.png`), `type`(raster=사진/스캔, vector=그래프/도표 크롭), `page`, 크기, vector는 `bbox`가 있다.
- PDF를 보며 manifest의 이미지가 본문의 어느 Figure인지 매칭한다. (vector 크롭은 잘리거나 중복될 수 있으니, PDF에서 본 실제 그림과 대조해 적절한 것만 고른다.)
### 4. `번역본.html` 작성 — 전체 번역
템플릿 `assets/template_translation.html` 을 채운다. `<style>` 안의 `{{CSS}}` 자리에는 `assets/style.css` 전체 내용을 그대로 붙여넣는다.
규칙:
- **요약하지 말고 전부 번역**한다. 초록·서론·관련연구·방법·실험·결과·논의·결론·(중요하면 부록)까지 원문 순서대로.
- 섹션 제목은 한국어로 번역하되, 학술 용어는 「한국어(English)」 병기 권장. (예: 「어텐션(Attention)」)
- 그림: 본문 해당 위치에
```html
<figure><img src="images/p003_img12.png" alt="그림 3">
<figcaption>그림 3. (번역한 캡션)</figcaption></figure>
```
manifest에 있는 `src` 를 그대로 쓴다. PDF의 모든 주요 그림/그래프/다이어그램을 포함한다.
- 표: 텍스트를 읽어 **HTML `<table>` 로 재구성**하고 셀 내용을 번역한다. `<div class="table-wrap">...</div>` 로 감싼다.
- 수식: MathJax 사용. 인라인은 `\( ... \)`, 디스플레이는 `\[ ... \]`. PDF의 수식을 LaTeX로 정확히 옮긴다. 변수 정의·기호 설명도 번역.
- 인용/정의 강조는 `<blockquote>` 또는 `.callout` 활용.
- 플레이스홀더 `{{TITLE_KO}}`(번역 제목), `{{TITLE_ORIGINAL}}`(원제), `{{AUTHORS}}`, `{{VENUE_YEAR}}`(학회/저널·연도, 모르면 "—"), `{{BODY}}`(본문 전체) 채우기.
### 5. `요약본.html` 작성 — 핵심 요약
템플릿 `assets/template_summary.html` 을 채운다. 동일하게 `{{CSS}}` 에 style.css 삽입.
각 카드 플레이스홀더를 한국어로 채운다(빈 칸 없이, 내용 없으면 "해당 없음"):
- `{{TLDR}}` 한두 문장 핵심.
- `{{PROBLEM}}` 이 논문이 풀려는 문제·기존 한계.
- `{{CONTRIBUTION}}` 핵심 아이디어/기여(불릿 권장).
- `{{METHOD}}` 방법론. 필요하면 핵심 수식 1~2개를 MathJax로, 핵심 그림 1개를 `<figure>`로 인용 가능.
- `{{RESULTS}}` 주요 실험·정량 결과(핵심 표/수치).
- `{{CONCLUSION}}` 결론·시사점.
- `{{LIMITATIONS}}` 한계·향후 과제.
- `{{TERMS}}` 핵심 용어 정의(`<ul>`).
- 제목/메타 플레이스홀더도 번역본과 동일하게 채운다.
### 6. 마무리 보고
- 생성된 파일 경로를 알려준다: `한국어_요약/번역본.html`, `한국어_요약/요약본.html`.
- 브라우저로 여는 법 안내: `open 한국어_요약/번역본.html` (macOS).
- 처리한 페이지 수, 포함한 그림 수를 요약.
- 필요하면 **`paper-summary-word`** 스킬로 용어/약어 사전을 추가할 수 있음을 안내한다.
---
## 품질 기준
- **완전성**: 번역본은 논문 전체를 담는다. 누락/축약 금지.
- **충실성**: 수식·기호·수치를 임의로 바꾸지 않는다. 확실치 않으면 원문 표기 병기.
- **그림 그대로**: 추출된 이미지를 재생성하지 말고 원본 PNG를 그대로 임베드한다.
- **자연스러운 한국어**: 직역투를 피하되 의미는 정확히. 전문용어는 영어 병기.
- **네비게이션**: 두 HTML 상단 링크가 같은 폴더의 상대경로(`번역본.html` / `요약본.html`)여야 클릭 이동이 작동한다.
- 두 HTML 의 active 탭 표시(`class="active"`)가 각자 자기 페이지에 맞게 설정돼 있는지 확인.
## 주의
- 폴더/파일 이름(`한국어_요약`, `작업파일`, `번역본.html`, `요약본.html`)은 한글 그대로 사용한다.
- 동일 이름 폴더가 이미 있으면 덮어쓰기 전에 사용자에게 확인한다.
- 그림이 너무 많거나 큰 경우에도 모두 포함하되, 명백한 로고/장식/페이지 배경 크롭은 제외해도 된다.
- 수식 렌더링은 MathJax CDN을 사용하므로 결과 HTML을 열 때 인터넷 연결이 필요하다(오프라인에서는 수식만 렌더링되지 않고 나머지는 정상 표시).