Use when user provides a URL and asks to "translate", "번역", "한국어로", "Korean translation". Do NOT use for YouTube videos (use youtube-summarizer), original content (use tech-blog-writer), or Obsidian notes (use obsidian-note).
웹 아티클을 원문 구조를 훼손하지 않고 한국어 마크다운으로 번역합니다.
Obsidian vault의 Sources/Translations/에 평면(flat) 구조로 자동 저장하여, Wiki 노트에서 wikilink로 참조할 수 있게 합니다.
/translate-article <URL> # URL의 아티클을 한국어로 번역
/translate-article # 대화형으로 URL 입력
인자가 있는 경우 (/translate-article <URL>):
인자가 없는 경우 (/translate-article):
콘텐츠 가져오기 순서:
gh CLI 사용tavily_extract 사용아티클 주제를 분석하여 TIL 카테고리를 자동 결정한다. 판별이 애매한 경우 사용자에게 질문한다.
카테고리 목록:
| 카테고리 | 주제 |
|---|---|
| ai | AI, ML, LLM, 에이전트, 프롬프트 엔지니어링 |
| python | Python 언어, 라이브러리 |
| java | Java 언어, JVM |
| spring | Spring Framework, Spring Boot |
| nodejs | Node.js, 비동기 I/O |
| javascript | JavaScript, TypeScript |
| react | React, Next.js |
| frontend | 프론트엔드 일반 |
| backend | 백엔드 아키텍처 일반 |
| database | DB, SQL, NoSQL |
| redis | Redis |
| kafka | Kafka, 메시지 큐 |
| docker | Docker, 컨테이너 |
| kubernetes | Kubernetes, 오케스트레이션 |
| devops | CI/CD, DevOps |
| aws | AWS 서비스 |
| infra | 인프라 일반 |
| network | 네트워크, 프로토콜 |
| security | 보안 |
| computer-science | CS 기초, 알고리즘, 자료구조 |
| design-pattern | 디자인 패턴 |
| testing | 테스트, TDD |
| web | 웹 기술 일반 |
| economics | 경제 |
새 카테고리가 필요한 경우 사용자에게 확인 후 디렉토리를 생성한다.
이것이 이 스킬의 가장 중요한 원칙이다. 번역은 원문의 의미를 한국어로 전달하는 것이지, 문서를 재구성하는 것이 아니다.
| 보존해야 할 것 | 설명 |
|---|---|
| 섹션 구조 | 원문의 heading 계층(#, ##, ###)을 그대로 유지 |
| 단락 순서 | 원문의 단락 순서와 흐름을 변경하지 않음 |
| 리스트/테이블 | 원문의 리스트, 테이블 구조를 그대로 유지 |
| 코드 블록 | 코드는 번역하지 않음. 주석만 필요시 번역 |
| 강조 표현 | 원문의 bold, italic 위치를 유지 |
| 링크 | 원문의 링크를 보존 |
| 이미지 | 원문의 이미지 링크()를 그대로 보존 |
❌ 원문에 없는 "결론부터 말하면" 섹션 추가
❌ 원문 구조를 TIL 형식으로 재구성
❌ 원문에 없는 내용 추가 또는 생략
❌ 섹션 순서 변경
❌ README.md 수정
❌ git add, git commit, git push 실행 (사용자가 명시적으로 요청하지 않는 한)
✅ 원문의 이미지를  형태로 그대로 가져오기 (우선)
✅ 이미지 URL을 가져올 수 없는 경우에만 mermaid/테이블로 재현 (fallback)
✅ 기술 용어 첫 등장 시 영문 병기: "프롬프트 체이닝(Prompt Chaining)"
✅ 이후 등장 시에는 한국어 또는 영어 중 자연스러운 쪽 사용
✅ 코드/명령어는 번역하지 않고 원문 그대로 유지
✅ 번역 출처 헤더 추가 (아래 템플릿 참조)
원문 이미지를 우선 사용하고, 실패 시 mermaid로 fallback 한다.
1순위: 원문의 <img> /  에서 이미지 URL 추출 → 그대로 삽입
2순위: 이미지 URL을 가져올 수 없거나 CDN 접근 불가 → mermaid로 재현
이미지 추출 방법:
<img> 태그의 src와 alt를 수집 형태로 원문의 해당 위치에 삽입| 항목 | 규칙 |
|---|---|
| 본문 설명 | 한국어 |
| 기술 용어 | 영어 유지 또는 한국어(영어) 병기 |
| 코드/명령어 | 영어 원문 그대로 |
| 고유명사 | 영어 원문 그대로 (Claude, GitHub, SWE-bench 등) |
| 제목/헤딩 | 한국어 번역 (필요시 영어 병기) |
원문 구조를 보존하되, 아래 포맷팅 규칙은 반드시 따른다:
닫는 ** 다음에 반드시 띄어쓰기:
❌ Bad: **정식 지원(Stable)**된다.
✅ Good: **정식 지원(Stable)** 된다.
원문 이미지를 가져올 수 없어 mermaid로 재현하는 경우:
스타일: 어두운 배경 + 흰 글씨만 사용
✅ style Node fill:#1565C0,color:#fff
줄바꿈: <br> 사용 (\n 금지)
✅ ["첫째 줄<br>둘째 줄"]
subgraph: style 지정하지 않음 (기본 배경 사용)
권장 색상:
| 용도 | fill | color |
|---|---|---|
| 시작/핵심 (파랑) | #1565C0 | #fff |
| 종료/성공 (초록) | #2E7D32 | #fff |
| 조건/분기 (주황) | #E65100 | #fff |
| 오류/위험 (빨강) | #C62828 | #fff |
원문에 ASCII 다이어그램이 있으면 테이블 또는 mermaid로 변환한다.
원문에 수식이 있으면 LaTeX 문법으로 변환한다.
❌ Bad: S = 1 / ((1 - P) + P/N)
✅ Good: $S = \frac{1}{(1-P) + \frac{P}{N}}$
파일명 = 제목(한국어 번역)과 동일:
| 번역된 제목 | 파일명 |
|---|---|
# 효과적인 에이전트 구축하기 | 효과적인-에이전트-구축하기.md |
# React Server Components 이해하기 | React-Server-Components-이해하기.md |
# 로 시작/Users/sskim/Library/Mobile Documents/iCloud~md~obsidian/Documents/Note/Sources/Translations/
번역본은 Obsidian vault의 Sources/Translations/ 아래에 평면(flat) 구조로 저장한다. 카테고리별 서브디렉토리를 만들지 않는다 — 파일명이 고유하면 Obsidian wikilink [[파일명]]이 위치 무관하게 해석되고, 분류는 frontmatter tags/topics로 충분하다.
Step 2에서 판별한 카테고리는 경로가 아니라 frontmatter 태그로 기록한다 (예: tags: [til, spring]).
파일 시작 부분에 아래 헤더를 추가:
# 번역된 제목
> 이 글은 [원문 사이트명]의 [원문 제목](원문 URL) 을 한국어로 번역한 글입니다.
> 원문 작성일: YYYY년 MM월 DD일 | 작성자: 저자명
문서 맨 마지막에 출처 추가:
## 출처
- [원문 제목 - 사이트명](URL) - 원문
파일 저장 후 사용자에게 아래 정보를 안내한다:
번역 문서 저장 후, Obsidian Vault에서 같은 주제의 관련 노트를 검색한다.
VAULT="~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Note"
grep -rli "키워드" "$VAULT" --include="*.md" | head -5
관련 노트가 발견되면:
related_notes 프로퍼티에 번역본 wikilink([[번역본-파일명]])를 제안 (사용자 확인 후 추가)Sources/Translations/{category}/)에 있으므로 wikilink가 Obsidian 그래프뷰·백링크에 자동 반영됨파일 저장 후 아래 항목 점검:
 형태로 가져왔는가? (가져올 수 없는 경우만 mermaid)** 다음에 띄어쓰기가 있는가?\n 대신 <br>, 어두운 배경 + color:#fffmcp__mermaid-mcp__validate_and_render_mermaid_diagram으로 렌더링 검증| 문제 | 원인 | 해결 |
|---|---|---|
| WebFetch 403/차단 | 사이트가 봇 차단 | tavily_extract fallback 사용 |
| 이미지 URL 접근 불가 | CDN 인증 필요 또는 상대 경로 | mermaid/테이블로 fallback 재현 |
| 번역 품질 불확실 | 전문 용어 또는 문맥 모호 | 원문 괄호 병기로 투명 처리 |
| 카테고리 판별 어려움 | 주제가 여러 분야에 걸침 | 사용자에게 질문하여 확인 |
git add, git commit, git push는 사용자가 명시적으로 요청할 때만 실행