Home / AI / AI 바이브코딩 / AI로 PDF 요약 봇 만들기 — 문서 분석 자동화 1시간 완성
VIBE
AI로 PDF 요약 봇 만들기 — 문서 분석 자동화 1시간 완성
On this page
매일 쌓이는 보고서와 논문, 직접 다 읽기엔 시간이 부족하다. PDF를 업로드하면 핵심을 뽑아주는 요약 봇을 Claude API와 Node.js로 1시간 안에 완성할 수 있다.
기준 환경: Node.js 20 / Anthropic SDK 0.52 / claude-sonnet-4-6 (2026-04 기준). 라이브러리 업데이트 시 코드 검토 권장.
목표
이 튜토리얼에서는 PDF 파일을 입력받아 주요 내용을 한국어로 요약해주는 CLI 기반 봇을 만든다.
완성 후 다음이 가능해진다:
- PDF 파일 경로를 입력하면 자동으로 텍스트 추출
- Claude API로 핵심 요약 + 주요 키워드 + 인사이트 추출
- 결과를 터미널 출력과
.txt파일로 동시 저장
준비물
- Node.js 20 이상 (
node -v로 확인) - Anthropic API 키 (발급: console.anthropic.com)
- 테스트용 PDF 파일 1개
# Node.js 버전 확인
node -v # v20 이상이어야 함
# 프로젝트 폴더 생성
mkdir pdf-summarizer && cd pdf-summarizer
npm init -y1. 패키지 설치 및 환경 설정
npm install @anthropic-ai/sdk pdf-parse dotenv@anthropic-ai/sdk: Anthropic 공식 Node.js SDKpdf-parse: PDF 텍스트 추출 라이브러리dotenv: 환경변수 관리
.env 파일 생성 (.gitignore에 반드시 추가):
ANTHROPIC_API_KEY=sk-ant-xxxxx# .gitignore에 추가
echo ".env" >> .gitignore2. PDF 텍스트 추출 함수
src/extract.mjs 파일 생성:
import pdf from 'pdf-parse';
import { readFile } from 'fs/promises';
export async function extractText(pdfPath) {
const buffer = await readFile(pdfPath);
const data = await pdf(buffer);
return data.text;
}pdf-parse는 PDF의 텍스트 레이어를 추출한다. 스캔 이미지로만 구성된 PDF(OCR 미적용)는 빈 텍스트가 반환된다. 이 경우 Tesseract.js 등 OCR 라이브러리가 추가로 필요하다.
3. Claude API 요약 함수
src/summarize.mjs 파일 생성:
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
export async function summarize(text) {
// 컨텍스트 윈도우 초과 방지: 약 5만 자로 제한
const truncated = text.slice(0, 50000);
const response = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{
role: 'user',
content: `다음 문서를 한국어로 요약해 주세요.
요약 형식:
1. 핵심 요약 (3~5문장)
2. 주요 키워드 (5개)
3. 주목할 인사이트 (2~3개)
문서:
${truncated}`
}]
});
return response.content[0].text;
}4. 메인 실행 파일
index.mjs 파일 생성:
import 'dotenv/config';
import { writeFile } from 'fs/promises';
import { extractText } from './src/extract.mjs';
import { summarize } from './src/summarize.mjs';
const pdfPath = process.argv[2];
if (!pdfPath) {
console.error('사용법: node index.mjs <PDF 파일 경로>');
process.exit(1);
}
console.log('PDF 텍스트 추출 중...');
const text = await extractText(pdfPath);
console.log(`추출 완료: ${text.length}자`);
console.log('Claude 요약 중...');
const summary = await summarize(text);
console.log('\n=== 요약 결과 ===\n');
console.log(summary);
const outputPath = pdfPath.replace('.pdf', '-summary.txt');
await writeFile(outputPath, summary, 'utf-8');
console.log(`\n결과 저장: ${outputPath}`);5. 실행 및 결과 확인
node index.mjs ./sample.pdf정상 작동 시 터미널에 요약이 출력되고 sample-summary.txt가 생성된다.
오류 대응 체크리스트:
| 오류 메시지 | 원인 | 해결 방법 | |---|---|---| | ANTHROPIC_API_KEY is not set | .env 파일 누락 | .env 파일 생성 확인 | | Cannot find module 'pdf-parse' | 패키지 미설치 | npm install 재실행 | | 빈 텍스트 추출 | 스캔 이미지 PDF | OCR 도구 추가 필요 | | context_length_exceeded | 문서가 너무 긺 | truncated 길이를 줄임 |
다음 단계
CLI에서 웹 인터페이스로 확장하거나, 폴더 단위 일괄 처리로 발전시킬 수 있다.
- 웹 UI 추가: nextjs + Vercel Functions로 파일 업로드 폼 구성
- 배치 처리:
fs.readdir+Promise.all로 폴더 내 전체 PDF 일괄 요약 - 프롬프트 캐싱: 동일 문서를 여러 번 질의할 경우 cache 적용으로 API 비용 절감
- 관련 튜토리얼: cursor를 활용한 코드 자동 생성 가이드