바이브코딩 완벽 매뉴얼
Claude 4종 완벽 가이드, Supabase, Vercel, GitHub, VS Code 사용법을 한곳에서 확인하세요.
Claude
모바일-앱, 웹, 데스크톱-앱, Code 4종 완벽 가이드. 설치부터 활용까지.
GitHub
Git 명령어, 저장소 관리, GitHub Flow, 마크다운, Actions까지.
Supabase
PostgreSQL 기반 BaaS. DB, Auth, Storage, 벡터 DB & AI까지.
Vercel
AI Cloud 배포 플랫폼. 프레임워크, Functions, AI SDK까지.
VS Code
코드 편집기. 확장 프로그램과 단축키로 생산성 극대화.
설치 순서 로드맵
Git for Windows 설치 확인
Git이 이미 설치되어 있는지 확인합니다. 버전이 나오면 OK, 오류가 나오면 먼저 설치하세요.
git --version
✅
git version ... 이 나오면 OK
❌ 오류 나오면 👉 https://git-scm.com/download/win 에서 먼저 설치하세요
Claude Code 설치
PowerShell에서 아래 명령어를 실행합니다. 설치 중 메시지가 쭉 나올 텐데 결과를 복붙해서 알려주세요.
irm https://claude.ai/install.ps1 | iex
설치 완료 후:
1️⃣ PowerShell 완전히 닫기
2️⃣ PowerShell 새로 열기
3️⃣
claude 입력
자세히 보기 →
VS Code 설치
코드 편집기가 모든 개발의 시작점입니다. 터미널, Git, 확장 프로그램을 한 곳에서 사용합니다.
winget install Microsoft.VisualStudioCode
자세히 보기 →
Node.js 설치
JavaScript 런타임. npm(패키지 매니저)이 함께 설치되어 Claude Code, Vercel CLI 등을 설치할 수 있습니다.
winget install OpenJS.NodeJS.LTS
설치 확인:
node -v && npm -v
GitHub 계정 생성 & 설정
코드 호스팅 플랫폼. 계정 생성 후 Git 사용자 정보와 SSH 키를 설정합니다.
git config --global user.name "이름"
git config --global user.email "이메일"
자세히 보기 →
Claude Code 설치
AI 코딩 어시스턴트. PowerShell에서 아래 명령어로 설치합니다.
irm https://claude.ai/install.ps1 | iex
설치 완료 후 PowerShell 재시작 →
claude
자세히 보기 →
글로벌 스크린샷 도구 설치
puppeteer-core를 글로벌 설치하면 Claude Code가 브라우저를 제어하여 웹페이지 스크린샷을 촬영하고 UI를 검증할 수 있습니다.
npm install -g puppeteer-core
설치 확인:
npm list -g puppeteer-core
Supabase 프로젝트 생성
백엔드 서비스. 웹에서 회원가입 후 프로젝트를 생성하고, 클라이언트 라이브러리를 설치합니다.
npm install @supabase/supabase-js
자세히 보기 →
Vercel 연결 & 배포
배포 플랫폼. GitHub 저장소를 연결하면 push마다 자동 배포됩니다.
npm install -g vercel
로그인:
vercel login → 배포: vercel --prod
자세히 보기 →
개발 시작!
모든 도구가 준비되었습니다. VS Code에서 터미널을 열고 claude를 실행하면 AI와 함께 개발을 시작할 수 있습니다.
code . && claude
Claude 4종 소개
Claude는 모바일-앱, 웹, 데스크톱-앱, Claude Code 4가지 접근방식을 제공합니다.
왜 Claude인가?
Claude는 Anthropic이 만든 AI 어시스턴트로, 헌법적 AI(Constitutional AI) 철학에 기반한 안전하고 유용한 도구입니다. 모바일-앱이 가위라면 Claude Code는 다기능 공구입니다. 4가지 접근방식을 모두 활용하면 강력한 통합 AI 작업환경을 구축할 수 있습니다.
4종 비교
| 기능 | 모바일-앱 | 웹 | 데스크톱-앱 | Claude Code |
|---|---|---|---|---|
| 기본 AI 대화 | O | O | O | O |
| 대화 기록 동기화 | O | O | O | X |
| 음성 입력 | O | X | X | X |
| 카메라 연동 | O | X | X | X |
| Artifacts 표시 | O | O | O | X |
| 파일 생성/다운로드 | X | O | O | O |
| 로컬 파일 접근 | X | X | O (MCP) | O |
| 시스템 명령 실행 | X | X | X | O |
| 프로그램 자동 설치 | X | X | X | O |
| Git 명령 실행 | X | X | 일부 | O |
각 접근방식 특징
- 모바일-앱 - 이동 중 음성 대화, 카메라 연동, 즉석 질문. iOS/Android 지원
- 웹 - 설치 없이 브라우저에서 바로 사용. Excel, PPT, PDF 파일 생성 가능
- 데스크톱-앱 - PC 전용 독립 앱. MCP 서버로 로컬 파일 접근, Memory 기능
- Claude Code - 터미널 기반 AI 어시스턴트. 시스템 명령 실행, 파일 직접 편집, Git 통합, 자동화
통합 작업환경 구성
모든 도구를 유기적으로 연결하면 강력한 AI 워크스테이션이 됩니다:
- Claude Code (메인) - 개발/자동화/파일 작업의 중심
- 데스크톱-앱 - MCP 연동, Artifacts 미리보기, 긴 문서 분석
- 모바일-앱 - 음성 대화로 빠른 질문, 이동 중 작업 확인
- VS Code - 코드 편집 + 내장 터미널에서 Claude Code 실행
3가지 모델 체계
- Haiku (경량) - 응답 0.25~0.5초, 간단한 분류/요약/번역. 입력 $0.80/출력 $4.00 (백만 토큰당)
- Sonnet (균형) - 범용 코딩/문서 작성/분석. 무료 사용 가능. 입력 $3/출력 $15
- Opus (고성능) - 복잡한 추론/창의적 작업/아키텍처 설계. 입력 $15/출력 $75
설치 가이드 (7단계)
Claude 4종과 VS Code를 단계별로 설치합니다. 약 3시간이면 모두 완료됩니다.
1단계: 모바일-앱 설치
- App Store(iOS) 또는 Google Play(Android)에서 "Claude" 검색
- "Claude by Anthropic" 앱 설치
- 이메일 주소 입력 → 인증 코드 6자리 입력 → 로그인 완료
2단계: 웹 설치
https://claude.ai접속- PWA 설치: Chrome 주소창 우측 "앱에서 열기" 아이콘 클릭 → 작업 표시줄에 고정
- 동일 계정으로 로그인하면 모바일-앱과 대화 기록 자동 동기화
3단계: 데스크톱-앱 설치
https://claude.ai/download접속- 운영체제에 맞는 설치 파일 다운로드 (Windows / Windows arm64)
- 설치 파일 더블클릭 → 자동 설치 → 바탕화면 바로가기 생성
- 빠른 호출:
Ctrl+Alt+Space로 어디서든 Claude 창 호출
4단계: 공통 프로그램 설치
Node.js 설치 (Claude Code와 MCP 서버 실행에 필수)
# https://nodejs.org 에서 LTS 버전 다운로드 후 설치
node --version
npm --version
Git 설치 (버전 관리, npm 패키지 의존성)
# https://git-scm.com/downloads/win 에서 다운로드 후 설치
git --version
5단계: Claude Code 설치
# Claude Code 설치
npm install -g @anthropic-ai/claude-code
# 설치 확인
claude --version
# 실행
claude
최초 실행 시 로그인 방식을 선택합니다:
- 1. Claude account with subscription (권장) - 기존 Claude 계정 연동
- 2. Anthropic Console account - API 사용량 기반 과금
웹 브라우저에서 인증 승인 후 로그인이 완료됩니다.
6단계: 데스크톱-앱에 MCP 연결
MCP(Model Context Protocol)는 데스크톱-앱이 로컬 파일과 프로그램에 접근할 수 있게 해주는 연결 도구입니다.
설치할 MCP 서버 3종:
- filesystem - 로컬 파일 읽기/쓰기/관리
- memory - 대화 간 정보 저장, 컨텍스트 유지
- anthropic - 6종 특수 도구 (vision, multi_turn 등)
가장 쉬운 방법: Claude Code에게 요청
"내부 MCP 서버 3종을 설치하고 설정해줘"
수동 설치:
# Filesystem & Memory 서버 설치
npm install -g @modelcontextprotocol/server-filesystem
npm install -g @modelcontextprotocol/server-memory
설정 파일 위치: C:\Users\[사용자]\AppData\Roaming\Claude\claude_desktop_config.json
{
"mcpServers": {
"filesystem": {
"command": "node.exe",
"args": ["...server-filesystem/dist/index.js", "G:\\내 드라이브\\MyTask"]
},
"memory": {
"command": "node.exe",
"args": ["...server-memory/dist/index.js"]
},
"anthropic": {
"command": "node.exe",
"args": ["C:\\AnthropicMCP\\dist\\index.js"],
"env": { "ANTHROPIC_API_KEY": "sk-ant-api03-..." }
}
}
}
설정 후 데스크톱-앱을 재시작하면 MCP 연결이 활성화됩니다.
7단계: VS Code 설치
https://code.visualstudio.com에서 다운로드- 설치 시 모든 옵션 체크 (PATH 추가, 우클릭 메뉴 등)
- 한국어 설정: 확장 프로그램에서
Korean Language Pack설치 - Claude Code 연동:
Ctrl + `로 터미널 열고claude실행
기본 사용법
일상적으로 사용하는 핵심 기능들입니다.
주요 슬래시 명령어
/help- 도움말 및 사용 가능한 명령어 목록 보기/clear- 대화 내역 완전 삭제 후 새로 시작/compact- 대화를 요약하여 컨텍스트 공간 확보 (맥락 유지)/cost- 현재 세션의 토큰 사용량 및 비용 확인/init- 프로젝트 분석 후 CLAUDE.md 파일 자동 생성/config- Claude Code 설정 변경 (테마, 모델 등)/model- 사용할 AI 모델 변경 (Opus, Sonnet 등)/permissions- 도구 권한 설정 확인 및 변경/status- 현재 세션 상태 정보 표시/review- 현재 코드 변경사항 리뷰 요청/pr-comments- GitHub PR 코멘트 확인/vim- Vim 키바인딩 모드 토글/terminal-setup- 터미널 Shift+Enter 키 설정/doctors- Claude Code 설치 상태 진단/bug- 버그 리포트 제출/login- 계정 로그인 또는 전환/logout- 현재 계정 로그아웃/add-dir- 작업 디렉토리 추가 (멀티 폴더 작업)/mcp- MCP 서버 연결 상태 확인/memory- CLAUDE.md 메모리 파일 편집
주요 CLI 플래그
claude -p "질문"- 비대화형 모드 (한 번 실행 후 종료)claude --model opus- 특정 모델로 시작claude --resume- 이전 대화 이어서 시작claude --continue- 가장 최근 대화 이어서 시작claude --dangerously-skip-permissions- 권한 확인 건너뛰기 (CI용)
파일 작업 요청
# 파일 수정 요청
"login 함수에 에러 핸들링 추가해줘"
# 새 파일 생성
"사용자 인증 미들웨어 만들어줘"
# 버그 수정
"이 에러 원인 찾아서 고쳐줘"
권한 모드
- 읽기 - 파일 읽기, 검색 (자동 허용)
- 쓰기 - 파일 수정, 생성 (확인 필요)
- 실행 - 셸 명령 실행 (확인 필요)
주요 에러 메시지 및 해결법
Claude Code 사용 중 자주 만나는 에러 메시지와 해결 방법입니다.
-
Context limit reached컨텍스트 창 토큰 한도 초과./compact로 요약하거나/clear로 초기화 -
Invalid API keyAPI 키가 잘못되었거나 만료됨.ANTHROPIC_API_KEY환경변수 재설정 필요 -
Rate limit exceededAPI 호출 한도 초과. 잠시 기다린 후 재시도하거나 요금제 확인 -
Permission denied파일/명령 실행 권한 거부. 프롬프트에서 허용하거나/permissions에서 설정 -
ENOENT: no such file or directory파일 또는 디렉토리가 존재하지 않음. 경로를 확인하고 올바른 위치에서 실행 -
Connection refused / Network error네트워크 연결 실패. 인터넷 연결 상태 및 프록시/VPN 설정 확인 -
Overloaded - Too many requestsAnthropic 서버 과부하 상태. 몇 분 후 재시도 -
Command not found: claudeClaude Code가 설치되지 않았거나 PATH에 없음. 재설치 필요 -
EPERM: operation not permittedOS 수준 파일 권한 문제. 관리자 권한으로 실행하거나 파일 권한 변경 -
Token budget exceeded단일 요청의 토큰 예산 초과. 요청을 더 작은 단위로 분할하여 시도 -
MCP server connection failedMCP 서버 연결 실패./mcp로 상태 확인 후 설정 파일 점검 -
Git: not a git repository현재 폴더가 Git 저장소가 아님.git init으로 초기화 필요 -
Timeout: command exceeded time limit명령 실행 시간 초과. 작업을 분할하거나 타임아웃 설정 조정 -
CLAUDE.md not found프로젝트 설정 파일 없음./init명령어로 자동 생성 가능 -
Billing limit reached월간 사용 한도 도달. Anthropic 콘솔에서 결제 정보 및 한도 확인 -
Unable to read file (binary)바이너리 파일은 읽기 불가. 텍스트 기반 파일만 지원됨 -
Session expired세션이 만료됨./login으로 재로그인하거나 새 세션 시작 -
npm ERR! code EACCESnpm 글로벌 설치 권한 부족.sudo사용 또는 npm prefix 경로 변경 -
Unsupported Node.js versionNode.js 버전이 너무 낮음. Node.js 18 이상으로 업데이트 필요 -
Tool execution failed도구(Bash, Read 등) 실행 실패. 대상 파일/명령이 유효한지 확인
고급 기능
생산성을 높이는 고급 활용법입니다.
비대화형 모드
# 한 번에 명령 실행
claude -p "이 프로젝트의 구조 설명해줘"
# 파이프 입력
cat error.log | claude -p "이 에러 분석해줘"
CLAUDE.md 설정
프로젝트 루트에 CLAUDE.md 파일을 만들어 프로젝트 컨텍스트를 제공합니다:
# CLAUDE.md
이 프로젝트는 Next.js 14 + Supabase 기반입니다.
- 컴포넌트는 src/components에 위치
- API 라우트는 src/app/api에 위치
- Supabase 클라이언트는 src/lib/supabase.ts
MCP 서버 연동
MCP(Model Context Protocol)는 "AI를 위한 USB-C"로, 외부 시스템과 AI를 표준화된 방식으로 연결합니다.
# .claude/settings.json
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server"]
}
}
}
연결 가능한 외부 MCP 서버: GitHub, Google Drive, Slack, PostgreSQL, Docker, Puppeteer, Notion, Jira 등
서브 에이전트 시스템
복잡한 작업을 전문 영역별로 분해하여 독립된 컨텍스트에서 병렬 처리합니다.
- 각 서브 에이전트가 200K 토큰의 독립 컨텍스트 보유
- 메인 오케스트레이터가 전체 계획 관리, 전문 에이전트에게 작업 위임
- 예: 요구사항 분석 → 구현 → 테스트 → 검토 각 단계를 전문 에이전트가 처리
작업 모드 3가지
- 일반 모드 - 파일 수정 전 매번 사용자 승인 요청 (기본값)
- 자동 수정 모드 - 파일 수정을 자동 승인하여 즉시 실행.
Shift+Tab으로 전환 - 플래닝 모드 - 작업 실행 전 전체 계획을 먼저 제시하고 승인받음
주요 도구 목록
/tools 명령어로 확인 가능:
Bash- 시스템 명령어 실행Read/Write/Edit- 파일 읽기/생성/수정Grep/Glob- 파일 내용/이름 검색WebSearch/WebFetch- 웹 검색/페이지 가져오기Task- 서브 에이전트 실행TodoWrite- 작업 목록 관리
VS Code 연동
VS Code와 Claude Code를 결합하면 AI 지원 통합 개발 환경이 완성됩니다.
VS Code에서 Claude Code 사용하기
# 1. VS Code 내장 터미널 열기: Ctrl + ` (백틱)
# 2. Claude Code 실행
claude
# 3. 원하는 폴더에서 VS Code 열기
code .
필수 확장 프로그램
한국어 지원
Korean Language Pack- VS Code 메뉴를 한국어로 변경
AI 어시스턴트
Claude Code- 터미널 기반 AI 코딩 어시스턴트Continue- 여러 AI를 동시 활용한 코드 작성 지원
공통 도구
Material Icon Theme- 파일 종류별 아이콘 표시GitLens- 파일 변경 이력과 작성자 확인Markdown All in One- 마크다운 자동완성과 미리보기Live Server- HTML 파일 실시간 브라우저 미리보기REST Client- API 테스트를 VS Code에서 실행Todo Tree- 할 일 목록 정리PDF Viewer- PDF 파일을 VS Code에서 열기
개발 전용
Python+Pylance- Python 코드 실행/디버깅/자동완성Auto Rename Tag- HTML 태그 자동 변경Path Intellisense- 파일 경로 자동완성JavaScript (ES6) Snippets- JS 코드 스니펫
권장 설정
- 자동 저장: 파일 → 자동저장 선택 (작업 손실 방지)
- 괄호 색상: 설정에서
editor.bracketPairColorization.enabled: true
사용료 체계
6가지 요금제와 5시간 리셋 시스템을 이해합니다.
요금제 비교
| 플랜 | 가격 | 5시간당 메시지 | 모델 | Claude Code |
|---|---|---|---|---|
| Free | 무료 | 10~15개 | 자동 선택 | X |
| Pro | $20/월 | 45개 | Haiku/Sonnet/Opus | O |
| Max 5x | $100/월 | 225개 | 전체 | O |
| Max 20x | $200/월 | 900개 | 전체 | O |
| Team | $30/월/인 | ~225개 | 전체 | Premium Seat |
| Enterprise | 맞춤 견적 | 맞춤 | 전체 + 커스텀 | Premium Seat |
5시간 리셋 시스템
Claude는 첫 메시지 시점부터 5시간 단위로 사용량이 리셋됩니다.
- 오전 9:00에 첫 메시지 → 오후 2:00에 리셋
- 미사용분은 누적 가능 (일일 최대치까지)
- 새벽 3~7시: 서버 한산, 응답 빠름, 대량 처리 적합
토큰이란?
AI가 텍스트를 처리하는 기본 단위입니다. 1토큰 ≈ 영어 3~5글자 ≈ 한글 2~3글자
- "안녕하세요" → 약 3토큰
- A4 1장 (2,000자) → 약 1,000토큰
- 이미지 1장 → 약 1,000~5,000토큰
- PDF 10페이지 → 약 10,000토큰
출력 토큰은 입력 토큰보다 5배 비쌉니다. AI가 텍스트를 생성하는 것이 이해하는 것보다 계산적으로 더 복잡하기 때문입니다.
모델별 토큰 요금 (백만 토큰당)
| 모델 | 입력 | 출력 | 특징 |
|---|---|---|---|
| Haiku | $0.80 | $4.00 | 가장 저렴, 빠름 |
| Sonnet | $3.00 | $15.00 | 균형형 (기본 추천) |
| Opus | $15.00 | $75.00 | 최고 성능 (Haiku 대비 19배) |
플랜 추천
- Free - AI 처음 체험, 주 2~3회 사용, 테스트 목적
- Pro - 매일 1시간 이상 사용하는 직장인, 개발자, 콘텐츠 크리에이터
- Max 5x - 전문 개발자, AI 기반 서비스 운영자, 대량 콘텐츠 제작
- Max 20x - AI 스타트업, 대규모 자동화 시스템, 풀타임 AI 활용 전문가
토큰 절감 방안 9가지
토큰 사용량을 줄여 비용을 절약하는 실전 방법입니다.
1. 대화 및 컨텍스트 관리
매번 질문할 때마다 이전 대화 전체가 토큰으로 계산됩니다. 10~15개 메시지마다 새 대화를 시작하고, 20개 메시지 후 핵심을 5줄로 요약하여 새 대화에 복사하세요.
효과: 토큰 사용량 80% 감소
2. 파일 업로드 최소화
100페이지 PDF 통째 업로드 대신, 필요한 페이지/섹션만 텍스트로 복사-붙여넣기 하세요.
효과: 토큰 사용량 95% 감소
3. 모델 선택 전략
- Haiku - 간단한 번역, 요약, 데이터 정렬
- Sonnet - 일반 프로그래밍, 문서 작성 (기본 추천)
- Opus - 고난도 알고리즘, 복잡한 디버깅, 창의적 문제 해결
효과: 단순 작업에 Haiku 사용 시 Opus 대비 19배 절감
4. 템플릿 활용
반복 작업(코드 리뷰, 일일 보고서 등)을 템플릿으로 저장하고 변경 부분만 수정하세요.
효과: 월 135,000 토큰 절감
5. 이미지 사용 최소화
이미지 1장 = 텍스트 5페이지 토큰. 핵심 부분만 캡처한 1~2장 + 텍스트 설명으로 대체하세요.
효과: 토큰 사용량 76% 감소
6. 프롬프트 간소화
인사말 없이 핵심만 간결하게. 구조화된 형식(작업/언어/목적/코드)으로 작성하세요.
효과: 토큰 사용량 25% 감소
7. 병렬 처리 활용
한 대화에서 여러 프로젝트 혼재 대신, 프로젝트별 독립 세션으로 분리하세요.
효과: 토큰 사용량 30% 감소
8. 배치 처리 (API 전용)
대량 작업(1,000개 리뷰 분석 등)을 배치로 일괄 처리하면 50% 할인됩니다. 최대 10,000개/배치.
효과: 토큰 사용량 50% 감소
9. 프롬프트 캐싱 (API 전용)
자주 사용하는 시스템 프롬프트를 캐시하면 5분간 재사용 가능. 캐시 읽기는 기본 가격의 10%만 소요.
효과: 토큰 사용량 최대 90% 감소
Anthropic 이야기
기업가치 254조원, 창업 4년 3개월 만에 비상장기업 세계 4위에 오른 회사의 이야기.
창업 스토리 (2021년 6월)
OpenAI 핵심 연구진 7명이 AI 안전성에 대한 철학 차이로 독립하여 설립. Dario Amodei(연구 담당 부사장)와 Daniela Amodei(안전/정책 부사장) 남매가 이끌었습니다.
회사 명칭 'Anthropic'은 그리스어 'anthropos(인간)'에서 유래하여 "인간 중심적 AI"라는 철학을 담고 있습니다. 공익법인(PBC) 형태로 설립되었습니다.
헌법적 AI (Constitutional AI)
2022년 12월 발표한 혁신적 기술. AI가 명확한 원칙('헌법')에 따라 스스로를 평가하고 개선합니다.
- 기존 RLHF(인간 피드백) → RLAIF(AI 피드백)로 대체
- 비용: 데이터 건당 $1~$10 → $0.01 미만으로 감소
- 원칙: "인간에게 도움", "해를 끼치지 않음", "정직하고 투명"
- 단순 거부가 아닌 건설적 대안 제시
Claude의 진화
- Claude 1 (2023.3) - 첫 모델, 10만 토큰 컨텍스트. 거부율 47%로 개선 필요
- Claude 2 (2023.7) - 거부율 8%로 감소, 파일 업로드, 코딩 능력 대폭 향상
- Claude 3 (2024.3) - Haiku/Sonnet/Opus 3종 동시 출시, 20만 토큰, GPT-4 능가
- Claude 3.5 Sonnet (2024.6) - Artifacts 출시, HumanEval 92%, Computer Use 베타
- Claude 4 (2025.5) - Claude Code 1.0 정식 출시, 멀티모달 통합
- Opus 4.1 (2025.8) - SWE-bench 74.5%, 향상된 추론 능력
- Sonnet 4.5 (2025.9) - SWE-bench 77.2% (세계 최고), 30시간 집중력 유지, 코드 편집 오류율 0%
투자 유치와 성장
| 시기 | 라운드 | 금액 | 주요 투자자 |
|---|---|---|---|
| 2021.9 | Series A | $1.24억 | Lightspeed, General Catalyst |
| 2022.4 | Series B | $5.8억 | FTX (이후 파산) |
| 2023.5 | Series C | $4.5억 | Google, Salesforce, SK텔레콤 |
| 2023.9 | Series D | $40억 | Amazon (총 $80억, 최대 단일 투자자) |
| 2025.3 | Series E | $35억 | Lightspeed, Fidelity (기업가치 $615억) |
| 2025.9 | Series F | $130억 | ICONIQ, BlackRock, GIC (기업가치 $1,830억 = 254조원) |
총 투자 유치: 256억 달러 | 비상장기업 가치 세계 4위 (SpaceX, OpenAI, TikTok 다음)
수익 성장
- 2024년: ARR $10억
- 2025년 4월: ARR $17.5억 (4개월 만에 75% 증가)
- 2025년 7월: ARR $50억 (3개월 만에 186% 증가)
- 2025년 연간 예상: $90억 (1년 만에 9배)
기업 AI 시장 점유율 32% (OpenAI 25%), 코딩 분야 42% (OpenAI 21%)
한국 시장
한국의 AUI(1인당 Claude 사용 지수)는 3.73으로 세계 5위, 미국(3.62)보다 높습니다.
- SK텔레콤과 전략적 제휴 (2023.8, $1억 투자)
- 앤트로픽 코리아 법인 설립 (2024.7, 서울 강남)
- 더존비즈온, AWS와 3자간 업무협약 (2024.7)
- 한국어 완벽 지원: 존댓말 7단계, 관용어, 신조어 인식
핵심 기술 11가지
Tier 1 - 차별화 핵심: 헌법적 AI, 대규모 컨텍스트 처리 (200K~1M 토큰), Computer Use
Tier 2 - 핵심 기능: Tool Use/Function Calling, Artifacts, Vision, 서브 에이전트
Tier 3 - 효율성: Prompt Caching (비용 90% 절감), Projects, Message Batches API
Tier 4 - 생태계: MCP (AI를 위한 USB-C, 200+ 커뮤니티 서버)
저자 소개
이 가이드북은 현직 공인회계사이자 스타트업 엑셀러레이터인 써니(선웅규)님이 5개월간의 실사용 경험을 바탕으로 제작했습니다. Claude를 프롬프터로, Claude가 집필자로 참여한 협업 결과물입니다.
문의: wksun999@hanmail.net | 카카오톡 채널: @Claude
소개 및 설정
GitHub는 Git 기반의 코드 호스팅 및 협업 플랫폼입니다. 전 세계 1억 명 이상의 개발자가 사용합니다.
GitHub란?
- 버전 관리 - Git을 사용해 코드 변경 이력을 추적·관리
- 협업 - Pull Request, 이슈, 코드 리뷰로 팀 협업
- 자동화 - GitHub Actions로 CI/CD 파이프라인 구축
- 호스팅 - 코드 저장소를 클라우드에서 관리
- 오픈소스 - 전 세계 프로젝트에 기여하고 학습
계정 유형
| 플랜 | 가격 | 저장소 | 주요 기능 |
|---|---|---|---|
| Free | 무료 | 무제한(공개/비공개) | Actions 2,000분/월 |
| Pro | $4/월 | 무제한 | 고급 인사이트, 위키 |
| Team | $4/인/월 | 무제한 | 팀 관리, Actions 3,000분 |
| Enterprise | $21/인/월 | 무제한 | SAML SSO, Advanced Security |
Git 설치
# 설치 확인
git --version
# Windows
winget install Git.Git
# macOS
brew install git
# Linux (Ubuntu/Debian)
sudo apt install git
초기 설정 (필수)
# 사용자 정보 설정 (커밋에 기록됨)
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
# 기본 브랜치명 설정
git config --global init.defaultBranch main
# 기본 편집기 설정
git config --global core.editor "code --wait"
# 줄 끝 처리 (Windows)
git config --global core.autocrlf true
# 줄 끝 처리 (macOS/Linux)
git config --global core.autocrlf input
# 설정 확인
git config --list
인증 설정
# SSH 키 생성 (권장)
ssh-keygen -t ed25519 -C "your@email.com"
# 공개키 복사 → GitHub > Settings > SSH Keys에 등록
cat ~/.ssh/id_ed25519.pub
# SSH 연결 테스트
ssh -T git@github.com
GitHub CLI (gh)
# 설치
brew install gh # macOS
winget install GitHub.cli # Windows
# 로그인
gh auth login
# 상태 확인
gh auth status
# 자동완성 설정 (bash)
eval "$(gh completion -s bash)"
Git 핵심 명령어
Git의 핵심 명령어를 익혀 버전 관리의 기본을 다집니다.
기본 워크플로우
# 1. 작업 디렉토리 초기화
git init
# 2. 파일 상태 확인
git status
# 3. 변경사항 스테이징 (추적 시작)
git add index.html # 특정 파일
git add . # 모든 변경사항
git add -p # 변경사항 일부만 선택
# 4. 커밋 (스냅샷 저장)
git commit -m "feat: 로그인 기능 추가"
# 5. 원격 저장소에 푸시
git push origin main
커밋 메시지 규칙 (Conventional Commits)
feat:- 새로운 기능 추가fix:- 버그 수정docs:- 문서 변경style:- 코드 포맷팅 (기능 변경 없음)refactor:- 리팩토링test:- 테스트 추가/수정chore:- 빌드, 설정 변경
이력 조회
# 커밋 로그 보기
git log
# 한 줄로 보기
git log --oneline
# 그래프로 보기
git log --oneline --graph --all
# 특정 파일 이력
git log -- index.html
# 변경 내용 비교
git diff # 스테이징 전 변경사항
git diff --staged # 스테이징된 변경사항
git diff main..feature # 브랜치 간 비교
되돌리기
# 스테이징 취소 (파일 유지)
git restore --staged index.html
# 작업 디렉토리 변경 취소
git restore index.html
# 마지막 커밋 메시지 수정
git commit --amend -m "수정된 메시지"
# 특정 커밋으로 되돌리기 (새 커밋 생성)
git revert abc1234
# 커밋 이력 초기화 (주의: 되돌릴 수 없음)
git reset --hard abc1234
Stash (임시 저장)
# 현재 변경사항 임시 저장
git stash
# 메시지와 함께 저장
git stash save "로그인 작업 중"
# 저장 목록 보기
git stash list
# 가장 최근 stash 복원
git stash pop
# 특정 stash 복원
git stash apply stash@{1}
# stash 삭제
git stash drop stash@{0}
.gitignore (파일 무시)
# .gitignore 파일 예시
node_modules/
.env
.env.local
*.log
dist/
.DS_Store
*.pyc
__pycache__/
.vscode/settings.json
태그
# 태그 생성
git tag v1.0.0
# 주석 태그 생성
git tag -a v1.0.0 -m "첫 번째 릴리스"
# 태그 목록
git tag -l
# 태그 푸시
git push origin v1.0.0
git push origin --tags # 모든 태그
저장소 관리
저장소 생성부터 브랜치, Pull Request까지 협업의 핵심을 다룹니다.
저장소 생성
# GitHub CLI로 생성 (권장)
gh repo create my-project --public --clone
gh repo create my-project --private --clone
# 웹에서 생성 후 클론
git clone git@github.com:username/repo.git
# 기존 프로젝트를 GitHub에 연결
git init
git add .
git commit -m "Initial commit"
git remote add origin git@github.com:username/repo.git
git push -u origin main
원격 저장소 관리
# 원격 저장소 확인
git remote -v
# 원격 저장소 추가
git remote add origin git@github.com:user/repo.git
# 원격 저장소 URL 변경
git remote set-url origin git@github.com:user/new-repo.git
# 원격 저장소 삭제
git remote remove origin
# 원격 변경사항 가져오기 (병합 안 함)
git fetch origin
# 원격 변경사항 가져와서 병합
git pull origin main
브랜치 관리
# 브랜치 생성
git branch feature/login
# 브랜치 생성 + 이동
git checkout -b feature/login
git switch -c feature/login # 최신 방식
# 브랜치 이동
git checkout main
git switch main # 최신 방식
# 브랜치 목록
git branch # 로컬
git branch -r # 원격
git branch -a # 전체
# 브랜치 삭제
git branch -d feature/login # 병합된 브랜치
git branch -D feature/login # 강제 삭제
# 원격 브랜치 삭제
git push origin --delete feature/login
병합 (Merge)
# feature 브랜치를 main에 병합
git checkout main
git merge feature/login
# 충돌 발생 시
# 1. 충돌 파일 수동 편집
# 2. 충돌 해결 후
git add .
git commit -m "fix: 병합 충돌 해결"
# 병합 취소
git merge --abort
Pull Request (PR)
# PR 생성
gh pr create --title "feat: 로그인 기능" --body "설명"
# PR 생성 (대화형)
gh pr create
# PR 목록
gh pr list
# PR 상세 보기
gh pr view 123
# PR 체크아웃 (로컬에서 테스트)
gh pr checkout 123
# PR 머지
gh pr merge 123
gh pr merge 123 --squash # 스쿼시 머지
gh pr merge 123 --rebase # 리베이스 머지
# PR 닫기
gh pr close 123
이슈 관리
# 이슈 생성
gh issue create --title "버그: 로그인 오류" --body "설명"
# 이슈 목록
gh issue list
# 이슈 상세 보기
gh issue view 45
# 이슈 닫기
gh issue close 45
# 이슈를 PR에 연결 (커밋 메시지에)
git commit -m "fix: 로그인 오류 수정 (closes #45)"
Fork & 오픈소스 기여
# 저장소 Fork
gh repo fork owner/repo --clone
# upstream 원본 저장소 추가
git remote add upstream git@github.com:owner/repo.git
# 원본 최신 코드 동기화
git fetch upstream
git merge upstream/main
# 기여 워크플로우
# 1. Fork → 2. Clone → 3. Branch 생성
# 4. 수정 → 5. Push → 6. PR 생성
GitHub Flow
GitHub Flow는 간단하고 효과적인 분기 기반 협업 워크플로우입니다.
6단계 워크플로우
| 단계 | 작업 | 설명 |
|---|---|---|
| 1 | 브랜치 생성 | main에서 설명적인 이름의 브랜치 생성 (예: add-login-page) |
| 2 | 변경 작업 | 코드 수정 후 설명적인 커밋 메시지로 커밋·푸시 |
| 3 | PR 생성 | Pull Request를 만들어 변경사항 요약 및 관련 이슈 연결 |
| 4 | 코드 리뷰 | 팀원이 코드를 검토하고 피드백, 필요시 추가 커밋 |
| 5 | 병합 | 승인 후 PR을 main 브랜치에 병합 |
| 6 | 브랜치 삭제 | 병합 완료 후 작업 브랜치 삭제 (필요시 복원 가능) |
실전 예시
# 1. 브랜치 생성
git switch -c feature/add-login-page
# 2. 코드 수정 및 커밋
git add .
git commit -m "feat: 로그인 페이지 UI 구현"
git push -u origin feature/add-login-page
# 3. PR 생성
gh pr create --title "feat: 로그인 페이지 추가" \
--body "## 변경사항
- 로그인 폼 UI 구현
- 이메일/비밀번호 유효성 검사
Closes #12"
# 4. 리뷰 반영 후 추가 커밋
git add .
git commit -m "fix: 리뷰 피드백 반영"
git push
# 5. PR 병합
gh pr merge --squash
# 6. 로컬 브랜치 정리
git switch main
git pull
git branch -d feature/add-login-page
브랜치 이름 규칙
feature/기능명- 새 기능 개발fix/버그설명- 버그 수정hotfix/긴급수정- 프로덕션 긴급 수정docs/문서설명- 문서 작업refactor/대상- 코드 리팩토링
코드 리뷰 체크리스트
- 코드가 의도대로 동작하는가?
- 테스트가 충분한가?
- 보안 취약점은 없는가?
- 성능 문제는 없는가?
- 코드 스타일이 일관적인가?
- 불필요한 코드나 console.log가 남아있지 않은가?
마크다운 문법
GitHub에서 이슈, PR, README 등을 작성할 때 사용하는 마크다운 문법입니다.
텍스트 서식
# 제목 (h1 ~ h6)
# 제목 1
## 제목 2
### 제목 3
# 텍스트 스타일
**굵게**
*기울임*
~~취소선~~
**_굵은 기울임_**
<sub>아래첨자</sub>
<sup>위첨자</sup>
링크 & 이미지
# 링크
[표시 텍스트](https://example.com)
# 이미지

# 상대 경로 링크
[문서 보기](./docs/guide.md)
리스트
# 순서 없는 리스트
- 항목 1
- 항목 2
- 하위 항목
# 순서 있는 리스트
1. 첫 번째
2. 두 번째
3. 세 번째
# 체크리스트 (이슈/PR에서 활용)
- [x] 완료된 작업
- [ ] 미완료 작업
코드
# 인라인 코드
`변수명` 또는 `함수()`
# 코드 블록 (언어 지정)
```javascript
function hello() {
console.log("Hello!");
}
```
# diff 표시
```diff
- 삭제된 줄
+ 추가된 줄
```
테이블
| 기능 | 설명 | 상태 |
|------|------|------|
| 로그인 | 이메일 인증 | 완료 |
| 회원가입 | 소셜 로그인 | 진행중 |
# 정렬
| 왼쪽 | 가운데 | 오른쪽 |
|:-----|:------:|------:|
| L | C | R |
인용 & 알림
# 인용
> 인용 텍스트입니다.
# 알림 (GitHub 전용)
> [!NOTE]
> 참고할 내용
> [!TIP]
> 유용한 팁
> [!WARNING]
> 경고 메시지
> [!CAUTION]
> 주의 사항
README.md 템플릿
# 프로젝트 이름
프로젝트에 대한 간단한 설명
## 기능
- 주요 기능 1
- 주요 기능 2
## 설치
```bash
npm install
npm run dev
```
## 사용법
사용 방법 설명
## 기여
기여 방법 안내
## 라이선스
MIT License
GitHub Actions
CI/CD 자동화 워크플로우를 설정하여 빌드, 테스트, 배포를 자동화합니다.
핵심 개념
- Workflow -
.github/workflows/에 저장되는 YAML 자동화 파일 - Event - 워크플로우를 실행하는 트리거 (push, PR, schedule 등)
- Job - 하나의 러너에서 실행되는 단계(Step) 모음
- Step - 개별 명령어 또는 Action
- Action - 재사용 가능한 작업 단위 (마켓플레이스에서 검색)
- Runner - 워크플로우를 실행하는 서버 (ubuntu, windows, macos)
기본 구조
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v4
- name: Node.js 설정
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: 의존성 설치
run: npm ci
- name: 빌드
run: npm run build
- name: 테스트
run: npm test
배포 워크플로우
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
- name: Vercel 배포
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID }}
vercel-project-id: ${{ secrets.PROJECT_ID }}
vercel-args: '--prod'
주요 트리거
# 다양한 이벤트 트리거
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
schedule:
- cron: '0 9 * * 1' # 매주 월요일 9시
workflow_dispatch: # 수동 실행 버튼
release:
types: [published]
Secrets & 환경변수
Settings > Secrets and variables > Actions에서 관리합니다.
# 워크플로우에서 Secrets 사용
env:
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
# 환경변수 직접 설정
env:
NODE_ENV: production
CI: true
유용한 Actions
actions/checkout@v4- 코드 체크아웃actions/setup-node@v4- Node.js 환경 설정actions/setup-python@v5- Python 환경 설정actions/cache@v4- 의존성 캐싱actions/upload-artifact@v4- 빌드 결과물 업로드peaceiris/actions-gh-pages@v4- GitHub Pages 배포
GitHub CLI로 Actions 관리
# 워크플로우 목록
gh workflow list
# 워크플로우 실행
gh workflow run ci.yml
# 실행 상태 확인
gh run list
# 실행 로그 보기
gh run view 12345 --log
소개 및 설정
Supabase는 PostgreSQL 기반의 오픈소스 BaaS(Backend as a Service) 플랫폼으로, Firebase의 오픈소스 대안입니다.
Supabase란?
- PostgreSQL 기반 - 관계형 DB로 복잡한 쿼리와 JOIN 지원
- 실시간 - 데이터 변경을 실시간으로 감지·전달
- 인증 - 이메일, OAuth, 매직링크 등 다양한 인증
- 스토리지 - 파일 업로드/관리/CDN 제공
- Edge Functions - 서버리스 함수 (Deno 기반)
- 벡터 DB - pgvector로 AI/RAG 시스템 구축
- 오픈소스 - 벤더 락인 없이 자체 호스팅 가능
Supabase vs Firebase
| 항목 | Supabase | Firebase |
|---|---|---|
| 데이터베이스 | PostgreSQL (관계형) | Firestore (NoSQL) |
| 쿼리 | SQL, JOIN 지원 | 제한적 쿼리 |
| 오픈소스 | O (자체 호스팅 가능) | X (Google 종속) |
| 벡터 DB | pgvector 내장 | 별도 서비스 필요 |
| 서버리스 함수 | Edge Functions (Deno) | Cloud Functions (Node) |
요금제
| 항목 | Free | Pro ($25/월) | Team ($599/월) |
|---|---|---|---|
| DB 크기 | 500MB | 8GB | 무제한 |
| 스토리지 | 1GB | 100GB | 무제한 |
| 프로젝트 | 2개 | 무제한 | 무제한 |
| 백업 | 없음 | 매일 | PITR |
| 비활성 일시정지 | 1주일 후 정지 | 없음 | 없음 |
회원가입 & 프로젝트 생성
- supabase.com 접속 → Start your project 클릭
- GitHub 또는 이메일로 회원가입 (이메일 인증 10분 내 완료)
- New Project 클릭
- 프로젝트명 입력
- DB 비밀번호 설정 (12자 이상, 대소문자+숫자+특수문자)
- Region: Northeast Asia (Seoul) 선택
- Create new project 클릭
API 키 확인
Project Settings → API에서 확인합니다:
- Project URL - 프로젝트 접속 주소
- anon (public) - 클라이언트에서 사용 (RLS로 보호)
- service_role - 서버에서만 사용 (RLS 우회, 절대 공개 금지)
환경변수 설정
# .env.local
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIs...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIs... # 서버 전용!
클라이언트 설치 & 초기화
# 설치
npm install @supabase/supabase-js
# 초기화 (lib/supabase.js)
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL
const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
export const supabase = createClient(supabaseUrl, supabaseKey)
대시보드 주요 메뉴
- Table Editor - GUI로 테이블 생성·편집·데이터 관리
- SQL Editor - SQL 쿼리 직접 작성·실행
- Authentication - 사용자 관리, OAuth 설정
- Storage - 파일 업로드·버킷 관리
- Edge Functions - 서버리스 함수 배포
- Database - 테이블, Extensions, Roles 관리
- API Docs - 자동 생성 API 문서 확인
데이터베이스
PostgreSQL 기반 테이블 생성, CRUD, 필터링, 실시간 구독을 다룹니다.
테이블 생성 (SQL Editor)
-- todos 테이블 생성
CREATE TABLE public.todos (
id uuid DEFAULT gen_random_uuid() NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL,
task text NOT NULL,
is_complete boolean DEFAULT false NOT NULL,
user_id uuid REFERENCES auth.users(id),
CONSTRAINT todos_pkey PRIMARY KEY (id)
);
-- RLS 활성화
ALTER TABLE public.todos ENABLE ROW LEVEL SECURITY;
또는 Table Editor에서 GUI로 생성할 수 있습니다:
데이터 조회 (SELECT)
// 전체 조회
const { data, error } = await supabase
.from('todos')
.select('*')
// 정렬 + 페이징
const { data } = await supabase
.from('todos')
.select('*')
.order('created_at', { ascending: false })
.range(0, 9) // 0~9번째 (10개)
// 특정 컬럼만
const { data } = await supabase
.from('todos')
.select('id, task, is_complete')
// 관계 테이블 JOIN
const { data } = await supabase
.from('todos')
.select('*, profiles(username, avatar_url)')
필터링
// 같음
.eq('is_complete', true)
// 같지 않음
.neq('status', 'deleted')
// 비교
.gt('score', 80) // >
.gte('score', 80) // >=
.lt('score', 50) // <
.lte('score', 50) // <=
// 포함
.in('status', ['active', 'pending'])
// 텍스트 검색
.like('task', '%공부%')
.ilike('task', '%supabase%') // 대소문자 무시
// NULL 체크
.is('deleted_at', null)
// 복합 조건
.or('is_complete.eq.true, task.ilike.%긴급%')
데이터 삽입 (INSERT)
// 단일 삽입
const { data, error } = await supabase
.from('todos')
.insert({ task: 'Supabase 공부하기', user_id: userId })
.select() // 삽입된 데이터 반환
// 다중 삽입
const { data, error } = await supabase
.from('todos')
.insert([
{ task: '할 일 1' },
{ task: '할 일 2' },
{ task: '할 일 3' }
])
.select()
데이터 수정 (UPDATE)
const { data, error } = await supabase
.from('todos')
.update({ is_complete: true })
.eq('id', '특정-uuid')
.select()
데이터 삭제 (DELETE)
const { error } = await supabase
.from('todos')
.delete()
.eq('id', '삭제할-uuid')
실시간 구독
// 테이블 변경 실시간 감지
const channel = supabase
.channel('todos-changes')
.on('postgres_changes',
{ event: '*', schema: 'public', table: 'todos' },
(payload) => {
console.log('변경 유형:', payload.eventType)
console.log('새 데이터:', payload.new)
console.log('이전 데이터:', payload.old)
}
)
.subscribe()
// 특정 이벤트만 감지
.on('postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'todos' },
(payload) => console.log('새 할 일:', payload.new)
)
// 구독 해제
supabase.removeChannel(channel)
SQL Editor에서 직접 실행
-- 기본 CRUD
INSERT INTO todos (task, user_id) VALUES ('할 일', '...');
SELECT * FROM todos WHERE is_complete = false;
UPDATE todos SET is_complete = true WHERE id = '...';
DELETE FROM todos WHERE id = '...';
인증 (Auth)
이메일, OAuth, 매직링크 등 다양한 인증 방법을 지원합니다.
지원 인증 방식
- 이메일/비밀번호 - 기본 회원가입·로그인
- 매직링크 - 이메일 링크 클릭으로 로그인
- OAuth - Google, GitHub, Apple, Kakao 등 소셜 로그인
- Phone OTP - 전화번호 인증
- 익명 인증 - 회원가입 없이 임시 사용
이메일 회원가입
const { data, error } = await supabase.auth.signUp({
email: 'user@example.com',
password: 'securePassword123!',
options: {
data: {
username: '홍길동', // 추가 메타데이터
avatar_url: 'https://...'
}
}
})
// data.user - 생성된 사용자 정보
// data.session - 세션 정보 (이메일 확인 전에는 null)
로그인
// 이메일/비밀번호 로그인
const { data, error } = await supabase.auth.signInWithPassword({
email: 'user@example.com',
password: 'securePassword123!'
})
// 매직링크 로그인 (이메일 링크)
const { error } = await supabase.auth.signInWithOtp({
email: 'user@example.com'
})
OAuth (소셜 로그인)
대시보드 > Authentication > Providers에서 원하는 프로바이더를 활성화합니다.
// Google 로그인
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'google',
options: {
redirectTo: 'https://your-site.com/callback'
}
})
// GitHub 로그인
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'github'
})
// Kakao 로그인
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'kakao'
})
세션 관리
// 현재 사용자 확인
const { data: { user } } = await supabase.auth.getUser()
// 현재 세션 확인
const { data: { session } } = await supabase.auth.getSession()
// 로그아웃
await supabase.auth.signOut()
// 인증 상태 변화 감지
supabase.auth.onAuthStateChange((event, session) => {
console.log(event) // SIGNED_IN, SIGNED_OUT, TOKEN_REFRESHED 등
console.log(session)
})
비밀번호 재설정
// 재설정 이메일 발송
const { error } = await supabase.auth.resetPasswordForEmail(
'user@example.com',
{ redirectTo: 'https://your-site.com/reset-password' }
)
// 새 비밀번호 설정 (리다이렉트 후)
const { error } = await supabase.auth.updateUser({
password: 'newSecurePassword!'
})
스토리지
파일 업로드, 다운로드, 이미지 변환 등 스토리지 기능을 다룹니다.
버킷 생성
대시보드 > Storage에서 New bucket을 클릭하거나 코드로 생성합니다:
// 공개 버킷 생성
const { data, error } = await supabase.storage.createBucket('avatars', {
public: true,
fileSizeLimit: 1024 * 1024 * 2 // 2MB 제한
})
// 비공개 버킷 생성
const { data, error } = await supabase.storage.createBucket('documents', {
public: false
})
파일 업로드
// 파일 업로드
const { data, error } = await supabase.storage
.from('avatars')
.upload('public/avatar.png', file, {
cacheControl: '3600',
upsert: true // 같은 이름이면 덮어쓰기
})
// 업로드 + 고유 파일명
const fileName = `${Date.now()}-${file.name}`
const { data, error } = await supabase.storage
.from('avatars')
.upload(fileName, file)
파일 URL 가져오기
// 공개 URL (공개 버킷)
const { data } = supabase.storage
.from('avatars')
.getPublicUrl('public/avatar.png')
// data.publicUrl → "https://xxx.supabase.co/storage/v1/object/public/..."
// 임시 URL (비공개 버킷, 60초 유효)
const { data, error } = await supabase.storage
.from('documents')
.createSignedUrl('secret.pdf', 60)
파일 다운로드 & 삭제
// 다운로드
const { data, error } = await supabase.storage
.from('avatars')
.download('public/avatar.png')
// 파일 삭제
const { error } = await supabase.storage
.from('avatars')
.remove(['public/avatar.png'])
// 여러 파일 삭제
const { error } = await supabase.storage
.from('avatars')
.remove(['file1.png', 'file2.png'])
파일 목록 조회
const { data, error } = await supabase.storage
.from('avatars')
.list('public', {
limit: 100,
offset: 0,
sortBy: { column: 'created_at', order: 'desc' }
})
이미지 변환 (Pro 플랜)
// 리사이즈된 이미지 URL
const { data } = supabase.storage
.from('avatars')
.getPublicUrl('avatar.png', {
transform: {
width: 200,
height: 200,
resize: 'cover'
}
})
RLS & 보안
Row Level Security(RLS)로 데이터베이스 보안을 설정합니다. Supabase 보안의 핵심입니다.
RLS란?
PostgreSQL의 행 수준 보안 기능으로, 테이블의 각 행에 대해 누가 읽기/쓰기할 수 있는지 정책(Policy)으로 제어합니다. Supabase에서 테이블을 생성하면 기본적으로 RLS가 활성화되어 정책이 없으면 아무도 접근할 수 없습니다.
RLS 활성화/비활성화
-- RLS 활성화
ALTER TABLE public.todos ENABLE ROW LEVEL SECURITY;
-- RLS 비활성화 (개발 중에만! 프로덕션에서는 절대 비활성화 금지)
ALTER TABLE public.todos DISABLE ROW LEVEL SECURITY;
읽기 정책 (SELECT)
-- 누구나 읽기 허용 (공개 데이터)
CREATE POLICY "공개 읽기" ON public.todos
FOR SELECT USING (true);
-- 본인 데이터만 읽기
CREATE POLICY "본인 데이터 읽기" ON public.todos
FOR SELECT USING (auth.uid() = user_id);
-- 로그인한 사용자만 읽기
CREATE POLICY "인증된 사용자 읽기" ON public.todos
FOR SELECT TO authenticated USING (true);
쓰기 정책 (INSERT / UPDATE / DELETE)
-- 로그인한 사용자만 생성 (본인 user_id로만)
CREATE POLICY "본인 데이터 생성" ON public.todos
FOR INSERT TO authenticated
WITH CHECK (auth.uid() = user_id);
-- 본인 데이터만 수정
CREATE POLICY "본인 데이터 수정" ON public.todos
FOR UPDATE TO authenticated
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);
-- 본인 데이터만 삭제
CREATE POLICY "본인 데이터 삭제" ON public.todos
FOR DELETE TO authenticated
USING (auth.uid() = user_id);
자주 쓰는 RLS 패턴
-- 전체 CRUD (본인 데이터만)
CREATE POLICY "본인 전체 권한" ON public.todos
FOR ALL TO authenticated
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);
-- 관리자 전체 접근
CREATE POLICY "관리자 전체 권한" ON public.todos
FOR ALL USING (
EXISTS (
SELECT 1 FROM profiles
WHERE profiles.id = auth.uid()
AND profiles.role = 'admin'
)
);
정책 관리
-- 정책 삭제
DROP POLICY "정책 이름" ON public.todos;
-- 정책 목록 확인
SELECT * FROM pg_policies WHERE tablename = 'todos';
보안 체크리스트
- 모든 테이블에 RLS 활성화 - 예외 없이
- anon key는 클라이언트용 - RLS가 보호
- service_role key는 서버 전용 - 절대 클라이언트에 노출 금지
- .env 파일 gitignore - API 키를 Git에 커밋하지 않기
- 정책 테스트 - SQL Editor에서 직접 확인
벡터 DB & AI
pgvector 확장으로 벡터 데이터베이스를 구축하고, RAG(검색 증강 생성) 시스템을 만듭니다.
pgvector란?
PostgreSQL에서 벡터(임베딩) 데이터를 저장하고 유사도 검색을 수행하는 확장입니다. 별도의 벡터 DB 서비스(Pinecone 등) 없이 Supabase 하나로 관계형 데이터와 AI 기능을 동시에 처리할 수 있습니다.
pgvector 활성화
대시보드 > Database > Extensions에서 "vector" 검색 후 Enable:
-- 또는 SQL로 활성화
CREATE EXTENSION IF NOT EXISTS vector;
문서 테이블 생성
CREATE TABLE documents (
id serial PRIMARY KEY,
title text NOT NULL,
content text NOT NULL,
embedding vector(1536), -- OpenAI text-embedding-3-small 차원
metadata jsonb,
created_at timestamptz DEFAULT now()
);
-- 검색 성능을 위한 인덱스
CREATE INDEX ON documents
USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);
유사도 검색 함수
CREATE OR REPLACE FUNCTION match_documents (
query_embedding vector(1536),
match_threshold float,
match_count int
)
RETURNS TABLE (
id bigint,
title text,
content text,
similarity float
)
LANGUAGE sql STABLE
AS $$
SELECT
documents.id,
documents.title,
documents.content,
1 - (documents.embedding <=> query_embedding) as similarity
FROM documents
WHERE 1 - (documents.embedding <=> query_embedding) > match_threshold
ORDER BY documents.embedding <=> query_embedding
LIMIT match_count;
$$;
Node.js RAG 구현
import OpenAI from 'openai'
import { supabase } from './lib/supabase'
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY })
// 1. 문서 임베딩 → 저장
async function embedAndStore(title, content) {
const response = await openai.embeddings.create({
model: 'text-embedding-3-small',
input: content
})
const embedding = response.data[0].embedding
const { data, error } = await supabase
.from('documents')
.insert({ title, content, embedding })
return data
}
// 2. 유사 문서 검색
async function searchDocs(query) {
const response = await openai.embeddings.create({
model: 'text-embedding-3-small',
input: query
})
const { data } = await supabase.rpc('match_documents', {
query_embedding: response.data[0].embedding,
match_threshold: 0.7,
match_count: 5
})
return data
}
// 3. RAG 기반 답변 생성
async function generateAnswer(question) {
const docs = await searchDocs(question)
const context = docs.map(d => d.content).join('\n\n')
const completion = await openai.chat.completions.create({
model: 'gpt-4',
messages: [
{ role: 'system', content: '제공된 문서를 기반으로 정확하게 답변하세요.' },
{ role: 'user', content: `문서:\n${context}\n\n질문: ${question}` }
]
})
return completion.choices[0].message.content
}
활용 사례
- 문서 Q&A 챗봇 - 사내 문서 기반 질의응답
- 유사 콘텐츠 추천 - 블로그, 상품 등 유사 항목 검색
- 시맨틱 검색 - 키워드가 아닌 의미 기반 검색
- 이미지 검색 - CLIP 임베딩으로 이미지 유사도 검색
소개 및 배포
Vercel은 프론트엔드 및 풀스택 애플리케이션을 위한 클라우드 배포 플랫폼입니다. Git push만으로 자동 배포됩니다.
Vercel이란?
- 자동 배포 - Git push 시 자동 빌드 & 배포 (CI/CD 내장)
- 프리뷰 환경 - PR마다 고유 프리뷰 URL 자동 생성
- 글로벌 CDN - 전 세계 엣지 네트워크로 빠른 응답
- 서버리스 Functions - API 라우트를 서버 없이 실행
- 자동 HTTPS - SSL 인증서 자동 발급·갱신
- 프레임워크 감지 - Next.js, Vite, Nuxt 등 자동 인식·최적화
- AI 인프라 - AI SDK, AI Gateway, v0 등 AI 도구 통합
요금제
| 항목 | Hobby (무료) | Pro ($20/인/월) | Enterprise |
|---|---|---|---|
| 대상 | 개인 프로젝트 | 팀·비즈니스 | 대규모 조직 |
| 대역폭 | 100GB/월 | 1TB/월 | 커스텀 |
| 빌드 시간 | 6,000분/월 | 24,000분/월 | 커스텀 |
| 서버리스 실행 | 100GB-시간 | 1,000GB-시간 | 커스텀 |
| 팀 기능 | X | 역할·권한 관리 | SSO, SAML |
| 지원 | 커뮤니티 | 이메일 | 전담 매니저, SLA |
계정 생성 & 프로젝트 연결
- vercel.com/signup에서 회원가입 (GitHub/GitLab/이메일)
- Add New Project → GitHub 저장소 선택
- 프레임워크 자동 감지 → Deploy 클릭
- 배포 완료! 이후
git push마다 자동 배포
Vercel CLI 설치
# 설치
npm install -g vercel
# 로그인
vercel login
# 현재 폴더 배포 (프리뷰)
vercel
# 프로덕션 배포
vercel --prod
# 로컬 개발 서버 (환경변수 포함)
vercel dev
# 프로젝트 정보 확인
vercel inspect
# 배포 목록
vercel ls
배포 환경
- Production -
main브랜치 push 시 자동 배포, 실제 도메인에 연결 - Preview - PR 생성 시 고유 URL로 자동 배포 (팀 리뷰용)
- Development -
vercel dev로 로컬에서 Vercel 환경 재현
즉시 롤백
# 이전 배포로 즉시 롤백
vercel rollback
# 특정 배포로 롤백
vercel rollback [deployment-url]
프레임워크
Vercel은 다양한 프레임워크를 자동 인식하고 최적화합니다. 별도 설정 없이 배포할 수 있습니다.
지원 프레임워크 & 기능
| 프레임워크 | SSR | ISR | Middleware | 이미지 최적화 | 스트리밍 |
|---|---|---|---|---|---|
| Next.js | ✓ | ✓ | ✓ | ✓ | ✓ |
| SvelteKit | ✓ | ✓ | ✓ | ✓ | ✓ |
| Nuxt | ✓ | ✓ | ✓ | ✓ | ✗ |
| Astro | ✓ | ✓ | ✓ | ✓ | ✓ |
| Remix | ✓ | ✗ | ✓ | ✗ | ✓ |
| Vite / React | N/A | N/A | ✓ | N/A | N/A |
| TanStack | ✓ | ✗ | ✓ | N/A | ✓ |
주요 프레임워크 특징
- Next.js - Vercel이 개발. 모든 기능 최우선 지원, App Router, Server Components
- SvelteKit - Svelte 기반 풀스택. 컴파일 기반으로 매우 빠름
- Nuxt - Vue.js 기반 풀스택. SEO, SSR 우수
- Astro - 콘텐츠 중심. 아일랜드 아키텍처로 최소 JS
- Remix - 웹 표준 기반 풀스택. 중첩 라우팅
- Vite - 빠른 빌드 도구. React, Vue, Svelte 등과 함께 사용
Next.js 프로젝트 생성 & 배포
# Next.js 프로젝트 생성
npx create-next-app@latest my-app
cd my-app
# 로컬 개발
npm run dev
# GitHub에 푸시
git init && git add . && git commit -m "Initial commit"
gh repo create my-app --public --push --source=.
# Vercel에서 자동 배포 (GitHub 연동 후)
# 또는 CLI로 배포
vercel --prod
정적 사이트 배포 (Vite)
# Vite + React 프로젝트
npm create vite@latest my-site -- --template react
cd my-site && npm install
# vercel.json (선택)
{
"buildCommand": "npm run build",
"outputDirectory": "dist"
}
# 배포
vercel --prod
Functions & API
Vercel Functions로 서버 없이 API 라우트와 서버사이드 로직을 실행합니다.
Vercel Functions란?
- 서버리스 - 서버 관리 없이 코드만 작성
- 자동 스케일링 - 트래픽에 따라 자동으로 확장·축소
- 제로 스케일 - 요청이 없으면 비용 0
- Fluid Compute - 동일 인스턴스에서 동시 요청 처리로 비용 절감
- 글로벌 배치 - 기본 Washington D.C., 데이터 소스 가까이 설정 가능
API 라우트 생성 (Next.js App Router)
// app/api/hello/route.ts
export function GET(request: Request) {
return Response.json({ message: 'Hello from Vercel!' })
}
export async function POST(request: Request) {
const body = await request.json()
return Response.json({ received: body })
}
API 라우트 (api/ 디렉토리 - 범용)
// api/hello.ts (프레임워크 무관)
export default {
fetch(request: Request) {
return new Response('Hello from Vercel!')
}
}
// api/users.ts - HTTP 메서드별
export function GET(request: Request) {
return Response.json([{ id: 1, name: '홍길동' }])
}
export async function POST(request: Request) {
const { name } = await request.json()
return Response.json({ id: 2, name }, { status: 201 })
}
Middleware
요청이 처리되기 전에 실행되는 코드로, 인증 체크·리다이렉트·헤더 수정 등에 사용합니다.
// middleware.ts (프로젝트 루트)
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
// 인증 체크
const token = request.cookies.get('auth-token')
if (!token && request.nextUrl.pathname.startsWith('/dashboard')) {
return NextResponse.redirect(new URL('/login', request.url))
}
// 응답 헤더 추가
const response = NextResponse.next()
response.headers.set('X-Custom-Header', 'hello')
return response
}
export const config = {
matcher: ['/dashboard/:path*', '/api/:path*']
}
ISR (Incremental Static Regeneration)
// app/blog/[slug]/page.tsx
export const revalidate = 60 // 60초마다 재생성
export default async function BlogPost({ params }) {
const post = await fetch(`https://api.example.com/posts/${params.slug}`)
.then(r => r.json())
return <article>{post.title}</article>
}
// 또는 온디맨드 재검증
// app/api/revalidate/route.ts
import { revalidatePath } from 'next/cache'
export function POST(request: Request) {
revalidatePath('/blog')
return Response.json({ revalidated: true })
}
Functions 설정
// vercel.json
{
"functions": {
"api/**/*.ts": {
"memory": 1024, // MB (128~3008)
"maxDuration": 60 // 초 (Hobby: 10, Pro: 300)
}
},
"regions": ["icn1"] // 서울 리전
}
설정 및 도메인
프로젝트 설정, 커스텀 도메인, 리다이렉트 등을 관리합니다.
vercel.json 주요 설정
{
"buildCommand": "npm run build",
"outputDirectory": ".next",
"framework": "nextjs",
"regions": ["icn1"],
"rewrites": [
{ "source": "/api/:path*", "destination": "/api/:path*" }
],
"redirects": [
{ "source": "/old-page", "destination": "/new-page", "permanent": true }
],
"headers": [
{
"source": "/api/(.*)",
"headers": [
{ "key": "Access-Control-Allow-Origin", "value": "*" },
{ "key": "Cache-Control", "value": "s-maxage=86400" }
]
}
]
}
커스텀 도메인 연결
- Vercel 대시보드 > Settings > Domains
- 도메인 입력 후 Add
- DNS 레코드 설정:
- CNAME:
cname.vercel-dns.com(서브도메인용) - A 레코드:
76.76.21.21(루트 도메인용)
- CNAME:
- SSL 인증서 자동 발급 (Let's Encrypt)
도메인 CLI 관리
# 도메인 추가
vercel domains add example.com
# 도메인 목록
vercel domains ls
# 도메인 삭제
vercel domains rm example.com
# DNS 레코드 확인
vercel dns ls example.com
리전 목록 (자주 사용)
icn1- 서울 (한국)hnd1- 도쿄 (일본)sfo1- 샌프란시스코iad1- 워싱턴 D.C. (기본값)lhr1- 런던cdg1- 파리
보안 기능
- Deployment Protection - 비인가 접근 차단
- WAF - 웹 애플리케이션 방화벽 (공격·스크래퍼 차단)
- DDoS 보호 - 자동 DDoS 완화
- Bot Management - 봇 트래픽 관리
- RBAC - 역할 기반 접근 제어 (Pro+)
환경변수 관리
환경별 변수 설정으로 API 키와 설정값을 안전하게 관리합니다.
대시보드에서 설정
Settings > Environment Variables에서 추가합니다. 환경별로 다른 값을 설정할 수 있습니다:
| 변수명 | 용도 | 환경 |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase 프로젝트 URL | 전체 |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase 공개 키 | 전체 |
SUPABASE_SERVICE_ROLE_KEY | Supabase 서버 키 (비공개) | Production |
OPENAI_API_KEY | OpenAI API 키 | Production |
CLI로 관리
# 환경변수 추가 (대화형)
vercel env add SUPABASE_SERVICE_ROLE_KEY
# 환경 지정 추가
vercel env add API_KEY production
# 환경변수 목록
vercel env ls
# 로컬로 가져오기 (.env.local 생성)
vercel env pull
# 환경변수 삭제
vercel env rm API_KEY production
환경별 구분
- Production -
main브랜치 배포에만 적용 - Preview - PR 프리뷰 배포에 적용 (테스트 키 사용)
- Development -
vercel dev실행 시 적용
주의사항
NEXT_PUBLIC_접두사가 있는 변수는 클라이언트에 노출됨- 서버 전용 키(service_role 등)에는 접두사를 붙이지 않기
- 환경변수 변경 후 재배포 필요 (
vercel --prod) - Sensitive 체크 시 대시보드에서도 값 숨김
AI 인프라
Vercel의 AI SDK, AI Gateway, v0 등을 활용해 AI 애플리케이션을 구축합니다.
Vercel AI 도구 모음
- AI SDK - LLM 통합 라이브러리 (스트리밍, 도구 호출, 구조화 출력)
- AI Gateway - 여러 AI 프로바이더 통합 라우팅 + 자동 장애 조치
- v0 - AI 기반 UI 생성 도구 (프롬프트 → React 컴포넌트)
- MCP Servers - AI 에이전트가 시스템과 상호작용하는 도구
- Sandbox - 신뢰할 수 없는 코드의 안전한 실행 환경
AI SDK 설치 & 사용
# 설치
npm install ai @ai-sdk/openai
# app/api/chat/route.ts
import { openai } from '@ai-sdk/openai'
import { streamText } from 'ai'
export async function POST(req: Request) {
const { messages } = await req.json()
const result = streamText({
model: openai('gpt-4o'),
messages,
})
return result.toDataStreamResponse()
}
클라이언트에서 사용
// app/page.tsx
'use client'
import { useChat } from 'ai/react'
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit } = useChat()
return (
<div>
{messages.map(m => (
<div key={m.id}>
<b>{m.role}:</b> {m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
<button type="submit">전송</button>
</form>
</div>
)
}
AI SDK 지원 프로바이더
@ai-sdk/openai- OpenAI (GPT-4o, GPT-4, o1 등)@ai-sdk/anthropic- Anthropic (Claude Opus, Sonnet, Haiku)@ai-sdk/google- Google (Gemini Pro, Flash)@ai-sdk/mistral- Mistral AI@ai-sdk/cohere- Cohere
도구 호출 (Tool Use)
import { openai } from '@ai-sdk/openai'
import { generateText, tool } from 'ai'
import { z } from 'zod'
const result = await generateText({
model: openai('gpt-4o'),
tools: {
weather: tool({
description: '특정 도시의 날씨를 가져옵니다',
parameters: z.object({
city: z.string().describe('도시 이름')
}),
execute: async ({ city }) => {
// 실제 API 호출
return { city, temp: 22, condition: '맑음' }
}
})
},
prompt: '서울 날씨 알려줘'
})
AI Gateway 설정
// vercel.json
{
"ai": {
"providers": [
{
"id": "openai",
"type": "openai",
"apiKey": "@openai-api-key"
},
{
"id": "anthropic",
"type": "anthropic",
"apiKey": "@anthropic-api-key"
}
]
}
}
소개 및 설치
Visual Studio Code는 Microsoft가 만든 무료 코드 편집기로, 전 세계 개발자들이 가장 많이 사용하는 IDE입니다.
VS Code란?
- 무료 & 오픈소스 - 개인·기업 모두 무료, MIT 라이선스
- 크로스 플랫폼 - Windows, macOS, Linux, 웹(vscode.dev) 지원
- 확장 프로그램 - 수만 개의 확장으로 기능 무한 확장
- 내장 터미널 - 여러 셸을 동시에 열고 관리
- Git 통합 - 스테이징, 커밋, 브랜치를 GUI로 관리
- IntelliSense - 스마트 코드 자동완성·타입 정보·시그니처
- AI Copilot - GitHub Copilot, Claude Code 등 AI 통합
- 원격 개발 - SSH, 컨테이너, WSL, Codespaces 원격 작업
설치 방법
# 공식 사이트: https://code.visualstudio.com
# Windows (winget)
winget install Microsoft.VisualStudioCode
# macOS (Homebrew)
brew install --cask visual-studio-code
# Linux (Ubuntu/Debian)
sudo apt install code
# 또는 snap
sudo snap install code --classic
CLI 명령어
# 현재 폴더를 VS Code로 열기
code .
# 특정 파일 열기
code index.html
# 특정 파일의 특정 줄로 열기
code -g index.html:42
# 새 창으로 열기
code -n .
# 파일 차이점 비교
code --diff file1.js file2.js
# 확장 프로그램 설치
code --install-extension ms-python.python
# 설치된 확장 목록
code --list-extensions
# 설정 초기화
code --user-data-dir /tmp/vscode-test
웹 버전
- vscode.dev - 브라우저에서 바로 VS Code 사용
- github.dev - GitHub 저장소에서
.키를 누르면 열림 - 설치 불필요, 가벼운 편집 작업에 적합
UI 구조 & 편집
VS Code의 인터페이스 구조를 이해하고, 편집 기능을 마스터합니다.
UI 구성 요소
| 영역 | 위치 | 역할 |
|---|---|---|
| Activity Bar | 왼쪽 끝 | 탐색기, 검색, Git, 디버그, 확장 등 뷰 전환 |
| Side Bar | 왼쪽 | 선택한 뷰의 상세 정보 (파일 트리, 검색 결과 등) |
| Editor | 중앙 | 코드 편집 영역. 탭으로 여러 파일, 분할 가능 |
| Panel | 하단 | 터미널, 출력, 문제, 디버그 콘솔 |
| Status Bar | 맨 아래 | 언어, 인코딩, 줄/열, Git 브랜치, 에러 수 |
편집기 분할
# 에디터 분할 단축키
Ctrl+\ → 세로 분할 (macOS: Cmd+\)
Ctrl+K Ctrl+\ → 가로 분할
# 분할 에디터 간 이동
Ctrl+1, Ctrl+2, Ctrl+3 → 1번, 2번, 3번 그룹
# 탭을 다른 그룹으로 이동
Ctrl+Alt+→ → 오른쪽 그룹으로 이동
IntelliSense (자동완성)
- 자동 트리거 - 입력하면 자동으로 제안 표시
- 수동 트리거 -
Ctrl+Space로 제안 열기 - 매개변수 힌트 -
Ctrl+Shift+Space로 함수 시그니처 보기 - 빠른 정보 - 심볼 위에 마우스를 올려 타입/문서 확인
코드 탐색
# 정의로 이동
F12 또는 Ctrl+Click
# 미리보기 (팝업)
Alt+F12 → Peek Definition
# 모든 참조 찾기
Shift+F12
# 심볼로 이동 (현재 파일)
Ctrl+Shift+O
# 심볼로 이동 (워크스페이스)
Ctrl+T
# 특정 줄로 이동
Ctrl+G
리팩토링
- 이름 바꾸기 -
F2로 심볼 이름 일괄 변경 - 함수 추출 - 코드 선택 후
Ctrl+.→ Extract Function - 변수 추출 - 표현식 선택 후
Ctrl+.→ Extract Variable - Quick Fix - 전구 아이콘 또는
Ctrl+.로 빠른 수정
멀티 커서 & 선택
# 멀티 커서
Alt+Click → 클릭 위치에 커서 추가
Ctrl+Alt+↑/↓ → 위/아래에 커서 추가
Ctrl+D → 같은 단어 선택 (반복 가능)
Ctrl+Shift+L → 같은 단어 모두 선택
# 선택 확장/축소
Shift+Alt+→ → 선택 확장
Shift+Alt+← → 선택 축소
# 열 선택 (박스 선택)
Shift+Alt+드래그 → 직사각형 영역 선택
터미널
- 열기:
Ctrl+`(백틱) - 새 터미널:
Ctrl+Shift+` - 터미널 분할:
Ctrl+Shift+5 - 터미널 간 이동:
Ctrl+PageUp/Down - 셸 선택: 드롭다운에서 PowerShell, Bash, Zsh 등 선택
- 이전 명령어:
Ctrl+↑/↓
확장 프로그램
Visual Studio Marketplace의 수만 개 확장으로 VS Code를 맞춤 개발 환경으로 만듭니다.
확장 설치 방법
- 사이드바: Activity Bar에서 확장 아이콘 클릭 (
Ctrl+Shift+X) - 명령 팔레트:
Ctrl+Shift+P→ "Install Extensions" - CLI:
code --install-extension 확장ID
한국어 지원
Korean Language Pack- VS Code 메뉴를 한국어로 변경
AI 어시스턴트
| 확장 | 특징 | 무료 |
|---|---|---|
| GitHub Copilot | 인라인 자동완성, 채팅, 에이전트, 커밋 메시지 생성 | 무료 티어 있음 |
| Claude Code | 터미널 기반 AI 코딩, 파일 편집, 명령 실행 | 유료 |
| Continue | 오픈소스, 여러 AI 모델 동시 활용 | 무료 |
| Cody (Sourcegraph) | 코드베이스 이해, 코드 검색, 설명 | 무료 티어 있음 |
필수 공통 도구
Material Icon Theme- 파일 종류별 아이콘 표시GitLens- 파일 변경 이력, blame, 비교Prettier- 코드 자동 포맷팅 (JS/TS/CSS/HTML/JSON)ESLint- JavaScript/TypeScript 코드 품질 검사Live Server- HTML 파일 실시간 브라우저 미리보기Markdown All in One- 마크다운 자동완성과 미리보기Error Lens- 에러/경고를 코드 줄에 인라인 표시Todo Tree- TODO/FIXME 주석을 트리로 정리
웹 개발
Auto Rename Tag- HTML 여는/닫는 태그 동시 변경CSS Peek- HTML에서 CSS 정의 미리보기Tailwind CSS IntelliSense- Tailwind 클래스 자동완성REST Client- VS Code에서 HTTP 요청 테스트Thunder Client- GUI REST API 클라이언트
언어별 필수 확장
- Python:
Python+Pylance+Jupyter - JavaScript/TypeScript: 기본 내장 (추가 불필요)
- Java:
Extension Pack for Java - C/C++:
C/C++(Microsoft) - Go:
Go(Google) - Rust:
rust-analyzer
테마 추천
One Dark Pro- Atom의 인기 테마Dracula Official- 보라색 계열 다크 테마GitHub Theme- GitHub 스타일 밝은/어두운 테마Catppuccin- 파스텔 컬러 테마
확장 관리 CLI
# 설치
code --install-extension ms-python.python
# 특정 버전 설치
code --install-extension ms-python.python@2024.0.1
# 설치 목록 확인
code --list-extensions
# 목록을 파일로 저장 (팀 공유용)
code --list-extensions > extensions.txt
# 파일에서 일괄 설치
cat extensions.txt | xargs -L 1 code --install-extension
# 제거
code --uninstall-extension ms-python.python
# 모든 확장 비활성화로 실행 (문제 해결)
code --disable-extensions
Git & 소스 제어
VS Code에 내장된 Git 기능으로 터미널 없이도 버전 관리를 수행합니다.
필수 요구사항
# Git 2.0 이상 설치 필요
git --version
# 사용자 설정
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
소스 제어 뷰 열기
- Activity Bar에서 분기 아이콘 클릭 또는
Ctrl+Shift+G - Changes - 수정된 파일 목록 (Diff 보기)
- Staged Changes - 스테이징된 파일
- Source Control Graph - 커밋 이력 시각화
기본 워크플로우 (GUI)
- 변경사항 확인 - 소스 제어 뷰에서 수정 파일 클릭 → Diff 보기
- 스테이징 - 파일 옆
+아이콘 클릭 (또는 전체 스테이징) - 커밋 메시지 입력 - 상단 텍스트 박스에 메시지 작성
- 커밋 -
Ctrl+Enter또는 체크마크 클릭 - Push - Status Bar의 동기화 아이콘 클릭
브랜치 관리
- 브랜치 전환 - Status Bar 왼쪽 하단 브랜치명 클릭
- 브랜치 생성 - 명령 팔레트 → "Git: Create Branch"
- 브랜치 병합 - 명령 팔레트 → "Git: Merge Branch"
- 브랜치 삭제 - 명령 팔레트 → "Git: Delete Branch"
병합 충돌 해결
충돌 발생 시 VS Code가 자동으로 충돌 영역을 표시합니다:
- Accept Current Change - 현재 브랜치 변경사항 선택
- Accept Incoming Change - 들어오는 변경사항 선택
- Accept Both Changes - 양쪽 모두 유지
- 3-way Merge Editor - 상세 비교 편집기 열기
Git 단축키
| 기능 | 단축키 |
|---|---|
| 소스 제어 뷰 열기 | Ctrl+Shift+G |
| 변경사항 스테이징 | 파일 옆 + |
| 커밋 | Ctrl+Enter |
| 인라인 Diff 열기 | 거터의 색상 표시 클릭 |
| Git 명령 팔레트 | Ctrl+Shift+P → "Git:" |
추천 Git 확장
GitLens- 줄별 blame, 이력 비교, 커밋 그래프GitHub Pull Requests- VS Code에서 PR 생성·리뷰·병합Git Graph- 커밋 이력을 그래프로 시각화
디버깅
VS Code의 강력한 디버거로 코드 문제를 효율적으로 찾고 해결합니다.
디버깅 시작
- 디버깅할 파일 열기
- 브레이크포인트 설정 - 줄 번호 왼쪽 클릭 또는
F9 F5키로 디버깅 시작 (또는 Run and Debug 뷰)- 디버거 선택 (Node.js, Python 등)
디버그 작업
| 작업 | 단축키 | 설명 |
|---|---|---|
| 계속/일시정지 | F5 | 다음 브레이크포인트까지 실행 |
| Step Over | F10 | 현재 줄 실행 (함수 안으로 들어가지 않음) |
| Step Into | F11 | 함수 내부로 진입 |
| Step Out | Shift+F11 | 현재 함수에서 빠져나옴 |
| 재시작 | Ctrl+Shift+F5 | 디버깅 세션 재시작 |
| 중지 | Shift+F5 | 디버깅 종료 |
브레이크포인트 종류
- 기본 브레이크포인트 -
F9또는 줄 번호 클릭 (빨간 원) - 조건부 브레이크포인트 - 우클릭 → "Add Conditional Breakpoint" (조건이 true일 때만 정지)
- 히트 카운트 - 지정 횟수 실행 후 정지 (반복문 디버깅)
- 로그포인트 - 우클릭 → "Add Logpoint" (정지 없이 로그만 출력)
- 인라인 브레이크포인트 -
Shift+F9(한 줄에 여러 문장이 있을 때) - 함수 브레이크포인트 - 함수명으로 브레이크포인트 설정
데이터 검사
- VARIABLES - 현재 스코프의 변수값 실시간 확인
- WATCH - 특정 표현식을 모니터링 (+아이콘으로 추가)
- CALL STACK - 함수 호출 스택 확인
- DEBUG CONSOLE -
Ctrl+Shift+Y로 열기, 표현식 직접 평가 (REPL) - 마우스 호버 - 변수 위에 마우스를 올려 값 확인
launch.json 설정
// .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Node.js 실행",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/index.js",
"console": "integratedTerminal"
},
{
"name": "Python 실행",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Chrome 디버깅",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/src"
}
]
}
기본 지원 언어
- JavaScript / TypeScript / Node.js - 별도 설치 없이 디버깅 가능
- Python - Python 확장 설치 후 디버깅
- Java / C++ / Go / Rust - 각 언어별 확장 설치 필요
설정 및 단축키
자주 사용하는 단축키와 권장 설정으로 작업 속도를 극대화합니다.
핵심 단축키 (Windows / macOS)
| 기능 | Windows | macOS |
|---|---|---|
| 명령 팔레트 | Ctrl+Shift+P | Cmd+Shift+P |
| 파일 빠르게 열기 | Ctrl+P | Cmd+P |
| 설정 열기 | Ctrl+, | Cmd+, |
| 내장 터미널 | Ctrl+` | Cmd+` |
| 사이드바 토글 | Ctrl+B | Cmd+B |
| 전체 검색 | Ctrl+Shift+F | Cmd+Shift+F |
| 줄 복사 | Alt+Shift+↓ | Opt+Shift+↓ |
| 줄 이동 | Alt+↑/↓ | Opt+↑/↓ |
| 줄 삭제 | Ctrl+Shift+K | Cmd+Shift+K |
| 멀티 커서 | Alt+Click | Opt+Click |
| 같은 단어 선택 | Ctrl+D | Cmd+D |
| 찾기 & 바꾸기 | Ctrl+H | Cmd+H |
| 정의로 이동 | F12 | F12 |
| 브레이크포인트 | F9 | F9 |
| 디버깅 시작 | F5 | F5 |
권장 설정 (settings.json)
{
// 편집기
"editor.fontSize": 14,
"editor.tabSize": 2,
"editor.wordWrap": "on",
"editor.formatOnSave": true,
"editor.bracketPairColorization.enabled": true,
"editor.minimap.enabled": false,
"editor.linkedEditing": true,
"editor.stickyScroll.enabled": true,
"editor.inlineSuggest.enabled": true,
// 파일
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 1000,
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
// 터미널
"terminal.integrated.fontSize": 13,
"terminal.integrated.defaultProfile.windows": "PowerShell",
// 워크벤치
"workbench.colorTheme": "One Dark Pro",
"workbench.iconTheme": "material-icon-theme",
"workbench.startupEditor": "none",
// Git
"git.autofetch": true,
"git.confirmSync": false,
"git.enableSmartCommit": true
}
설정 열기 방법
- GUI 설정:
Ctrl+,(macOS:Cmd+,) - JSON 설정: 명령 팔레트 →
Preferences: Open Settings (JSON) - 키보드 단축키 편집:
Ctrl+K Ctrl+S - User 설정: 모든 프로젝트에 적용
- Workspace 설정: 현재 프로젝트에만 적용 (
.vscode/settings.json)
유용한 설정 동기화
- Settings Sync - GitHub/Microsoft 계정으로 설정 동기화 (내장)
- 설정, 키바인딩, 확장 프로그램, 스니펫 등이 자동 동기화
- Activity Bar 하단 계정 아이콘 → Turn on Settings Sync
워크스페이스 설정 (.vscode/)
프로젝트/
├── .vscode/
│ ├── settings.json # 프로젝트별 설정
│ ├── launch.json # 디버그 설정
│ ├── tasks.json # 빌드/실행 태스크
│ └── extensions.json # 권장 확장 프로그램
├── src/
└── package.json
# extensions.json (팀원에게 확장 추천)
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-python.python"
]
}
시작하기
Vibe Coding Manual 사이트의 사용 방법을 안내합니다.
Vibe Coding Manual이란?
Vibe Coding Manual은 현대 웹 개발에 필요한 5가지 핵심 도구(Claude Code, GitHub, Supabase, Vercel, VS Code)의 사용법을 한곳에 모은 종합 바이브코딩 완벽 매뉴얼입니다. 초보자부터 실무 개발자까지 단계별로 학습할 수 있도록 구성되어 있습니다.
사용 방법
- 상단 내비게이션 - 원하는 도구(Claude, GitHub, Supabase, Vercel, VS Code)를 클릭하면 해당 가이드의 첫 페이지로 이동합니다.
- 사이드바 메뉴 - 좌측 사이드바에서 각 도구의 세부 항목을 선택하여 원하는 내용으로 바로 이동할 수 있습니다.
- 코드 복사 - 코드 블록 우측 상단의 "복사" 버튼을 클릭하면 명령어를 클립보드에 복사합니다.
- 랜딩 페이지 - 좌측 상단의 "Vibe Coding Manual" 로고를 클릭하면 홈 화면으로 돌아갑니다.
권장 학습 순서
- VS Code 설치 - 코드 편집기가 모든 개발의 시작점입니다. winget install Microsoft.VisualStudioCode
- Node.js 설치 - JavaScript 런타임과 npm을 설치합니다. winget install OpenJS.NodeJS.LTS
- Git & GitHub 설정 - 버전 관리 환경을 구축합니다. winget install Git.Git
- Claude Code 설치 - AI 코딩 어시스턴트를 활용합니다. npm install -g @anthropic-ai/claude-code
- Supabase & Vercel - 백엔드와 배포 환경을 설정합니다. npm install -g vercel
화면 구성
Vibe Coding Manual의 인터페이스 구성 요소를 설명합니다.
상단 내비게이션 바
화면 최상단에 위치한 내비게이션 바입니다. 각 도구별 버튼을 클릭하면 해당 섹션으로 빠르게 이동할 수 있습니다.
- Vibe Coding Manual - 클릭 시 홈(랜딩 페이지)으로 이동
- Claude - Claude Code AI 어시스턴트 가이드
- GitHub - Git 버전 관리 & 협업 가이드
- Supabase - 백엔드 서비스 가이드
- Vercel - 배포 플랫폼 가이드
- VS Code - 코드 에디터 가이드
- 사용자 매뉴얼 - 본 사용자 매뉴얼
좌측 사이드바
각 도구의 세부 메뉴가 카테고리별로 정리되어 있습니다. 원하는 항목을 클릭하면 우측 콘텐츠 영역에 해당 내용이 표시됩니다.
우측 콘텐츠 영역
선택한 항목의 상세 내용이 표시되는 메인 영역입니다. 설명, 코드 예제, 이미지 등이 포함되어 있으며, 코드 블록에는 복사 버튼이 제공됩니다.
하단 푸터
사이트 정보, 포함된 가이드 목록, 관련 링크 등이 표시됩니다.
주요 기능
Vibe Coding Manual에서 제공하는 5가지 핵심 가이드를 소개합니다.
Claude Code
Anthropic이 개발한 AI 코딩 어시스턴트입니다. 모바일, 웹, 데스크톱, CLI 4가지 방식으로 사용할 수 있으며, 코드 생성, 디버깅, 리팩토링 등 개발 전반을 지원합니다.
- 4종 소개 및 비교
- 7단계 설치 가이드
- 기본 사용법 & 고급 기능
- 사용료 체계 & 토큰 절감 방안
GitHub
세계 최대의 코드 호스팅 플랫폼입니다. Git을 기반으로 버전 관리, 협업, CI/CD를 지원합니다.
- Git 핵심 명령어
- 저장소 관리 & GitHub Flow
- 마크다운 문법
- GitHub Actions CI/CD
Supabase
오픈소스 Firebase 대안으로, PostgreSQL 기반의 백엔드 서비스를 제공합니다.
- 데이터베이스 설계 & 관리
- 인증(Auth) 시스템
- 파일 스토리지
- RLS 보안 & 벡터 DB
Vercel
프론트엔드 배포에 최적화된 클라우드 플랫폼입니다. Git 연동으로 자동 배포를 지원합니다.
- 프레임워크 지원 (Next.js 등)
- Serverless Functions
- 도메인 설정 & 환경변수
- AI SDK 인프라
VS Code
Microsoft가 개발한 무료 코드 에디터로, 확장 프로그램을 통해 다양한 개발 환경을 구성할 수 있습니다.
- UI 구조 & 편집 기능
- 필수 확장 프로그램
- Git 소스 제어 연동
- 디버깅 & 단축키
자주 묻는 질문 (FAQ)
Vibe Coding Manual 사용 중 자주 묻는 질문과 답변입니다.
Q. 이 매뉴얼은 누구를 위한 것인가요?
프로그래밍 초보자부터 실무 개발자까지 모두를 대상으로 합니다. 각 도구의 기초부터 고급 활용법까지 단계별로 설명하고 있어 자신의 수준에 맞는 내용을 선택하여 학습할 수 있습니다.
Q. 모든 도구를 반드시 설치해야 하나요?
아닙니다. 자신의 프로젝트에 필요한 도구만 선택적으로 설치하면 됩니다. 다만, VS Code와 Git은 대부분의 개발 환경에서 필수이므로 우선 설치를 권장합니다.
Q. 설치 순서가 중요한가요?
네, 권장 설치 순서가 있습니다. VS Code → Node.js → Git & GitHub → Claude Code → Supabase & Vercel 순으로 설치하면 의존성 문제 없이 원활하게 환경을 구축할 수 있습니다.
Q. Claude Code 사용료가 발생하나요?
Claude Code는 유료 서비스입니다. 자세한 사용료 체계는 Claude 섹션의 "사용료 체계" 페이지에서 확인할 수 있으며, "토큰 절감 방안" 페이지에서 비용을 절약하는 방법도 안내하고 있습니다.
Q. 오프라인에서도 사용할 수 있나요?
이 매뉴얼 페이지 자체는 HTML 파일로 되어 있어 다운로드 후 오프라인에서 열람할 수 있습니다. 단, 일부 외부 이미지는 인터넷 연결이 필요할 수 있습니다.
Q. 매뉴얼에 오류가 있거나 개선 사항이 있으면 어떻게 하나요?
푸터에 있는 연락처로 문의해 주시면 확인 후 반영하겠습니다.
Obsidian 소개 & 개요
Obsidian은 로컬 기반의 강력한 노트 작성 및 지식 관리 플랫폼입니다. AI 통합과 플러그인을 통해 개인 지식 베이스를 구축합니다.
Obsidian이란?
Obsidian은 마크다운 기반의 강력한 로컬 노트 작성 앱으로, 폴더와 마크다운 파일로 지식을 저장하고 관리합니다. 클라우드에만 의존하지 않고, 로컬 컴퓨터에 모든 데이터를 보관합니다.
주요 특징
- 로컬 저장 — 모든 노트가 마크다운 파일로 로컬 저장되어 완전한 통제권 확보
- 양방향 링크 (Backlinks) — 노트들을 서로 연결하여 지식 네트워크 구축
- 그래프 뷰 — 연결된 노트들의 관계를 시각화하여 전체 지식 구조 파악
- 플러그인 생태계 — 36개 이상의 권장 플러그인으로 기능 확장
- AI 통합 — Claude, ChatGPT와의 통합으로 스마트 작성 지원
- 테마 커스터마이징 — 다양한 테마로 시각적 커스터마이징
- 검색 최적화 — Omnisearch와 Google 통합으로 빠른 정보 검색
Obsidian의 4가지 핵심 가치
📚 지식 관리
개인 위키처럼 구조화된 지식 베이스를 구축하고 유지보수합니다.
🧠 AI 협력
Claude, ChatGPT와 통합하여 스마트한 콘텐츠 작성과 분석을 합니다.
🔧 개인화
36개 이상의 플러그인으로 자신의 워크플로우에 맞게 커스터마이징합니다.
🔍 검색 최적화
Omnisearch와 Google 통합으로 정보 검색 속도와 정확성을 극대화합니다.
학습 순서 로드맵
- 아키텍처 & 조직화 — 폴더 구조와 문서 체계 설계
- AI 통합 도구 — Claude, ChatGPT와의 연동
- 기술 설정 — 플러그인 설치와 단축키 커스터마이징
- 콘텐츠 관리 — 마크다운 문법과 외부 라이브러리 연동
아키텍처 & 조직화
효과적인 지식 관리를 위한 폴더 구조 설계와 문서 체계 구축 방법입니다.
시스템 프레임워크와 폴더 구조
Obsidian 지식 베이스의 기본이 되는 폴더 구조입니다. 확장성과 유지보수성을 고려한 설계입니다:
My Vault/
├── 00-Inbox/ # 새로운 노트를 임시로 저장
├── 01-Projects/ # 진행 중인 프로젝트들
├── 02-Areas/ # 관심 영역별 지식 (업무, 학습 등)
├── 03-Resources/ # 참고 자료와 외부 콘텐츠
├── 04-Archive/ # 완료되거나 보관된 항목
├── Templates/ # 노트 작성 템플릿
├── Attachments/ # 이미지와 파일 저장소
└── README.md # 전체 구조 설명
테이블 오브 컨텐츠 (TOC) 계층 구조
효과적인 네비게이션을 위한 목차 시스템:
- L1 (메인 인덱스) — 전체 지식 맵의 진입점
- L2 (카테고리) — 주요 주제별 분류
- L3 (세부 항목) — 구체적인 내용과 실행 항목
- L4 (스니펫) — 코드, 수식, 참고 자료 등
양방향 링크 (Backlinks) 활용
노트들을 서로 연결하여 지식의 관계를 표현합니다:
[[프로젝트명]] — 다른 노트로의 링크
[[프로젝트명|Custom Label]] — 표시명 커스터마이징
#태그 — 주제별 분류
그래프 뷰 (Graph View)
연결된 노트들의 관계를 시각화하여 전체 지식 구조를 파악합니다:
- 노드 = 개별 노트
- 엣지 = 양방향 링크
- 중앙 집중도 = 중요도를 반영하는 네트워크 분석
문서 체계 설계 원칙
- 원자성 (Atomicity) — 하나의 노트는 하나의 개념을 다룹니다
- 연결성 (Connectivity) — 관련된 노트들을 양방향 링크로 연결합니다
- 계층성 (Hierarchy) — MOC(Map of Contents)로 상위 개념을 연결합니다
- 검색 가능성 (Discoverability) — 태그와 검색 최적화를 통해 빠른 접근성 확보
AI 통합 & 도구
Claude Code, ChatGPT, Smart Connections 플러그인을 활용한 AI 협력 워크플로우입니다.
Claude Code 시스템 파일 활용
Obsidian 노트를 Claude Code의 시스템 파일로 활용하여 스마트한 작성 지원을 받습니다:
- Obsidian 지식 베이스를 Claude에 제공하여 컨텍스트 확보
- 기존 노트의 스타일과 톤을 유지하는 자동 작성
- 일관성 있는 지식 네트워크 구축
AI 모델 선택 기준
| 작업 | 추천 모델 | 특징 |
|---|---|---|
| 콘텐츠 생성 | Claude Opus 4.7 | 고품질 생성, 맥락 이해도 높음 |
| 빠른 작성 | Claude Sonnet 4.6 | 속도와 품질의 균형 |
| 단순 요약 | Claude Haiku 4.5 | 빠르고 경제적 |
| 인터넷 검색 | Perplexity AI | 최신 정보 검색 및 인용 |
Smart Connections 플러그인
AI를 활용한 자동 링크 제안:
- 의미론적 검색 (Semantic Search) — 단어 매칭이 아닌 의미 기반 검색
- 자동 관련 노트 제안 — 유사한 내용의 노트 자동 연결
- 임베딩 모델 — 로컬 또는 OpenAI API 기반 임베딩
커스텀 시스템 프롬프트
Obsidian과 AI의 협력을 위한 시스템 프롬프트 예시:
당신은 Obsidian 지식 베이스 관리 전문가입니다.
- 노트는 원자성(한 개념 = 한 노트)을 유지합니다
- 양방향 링크로 관련 노트를 연결합니다
- MOC(Map of Contents)로 상위 개념을 정의합니다
- 마크다운 형식을 준수합니다
- 태그는 #분류/세부분류 형식을 사용합니다
AI 기반 콘텐츠 자동화
- 자동 요약 — 긴 텍스트의 핵심 정리
- 번역 — 다국어 지식 베이스 관리
- 분류 — 태그와 카테고리 자동 부여
- 관계 추출 — 노트 간 연결 관계 자동 발견
기술 설정
36개 이상의 권장 플러그인, 단축키 설정, 검색 최적화를 위한 기술 가이드입니다.
필수 플러그인 (36개 권장)
📝 편집 & 작성
- Obsidian Editor
- Templater (템플릿 자동화)
- Recall (노트 상기)
- Various Complements
- Code Editor Syntax Highlighter
🔍 검색 & 탐색
- Omnisearch (고급 검색)
- Google Search (Google 통합)
- Quick Switcher++
- Recent Files (최근 파일)
- Backlinks in Document
🧠 AI & 스마트
- Smart Connections (AI 링크)
- Prompt (프롬프트 실행)
- Waypoint (AI 네비게이션)
- Llm (LLM 통합)
📊 데이터 & 시각화
- Dataview (데이터 쿼리)
- Excalidraw (다이어그램)
- Charts (그래프)
- Canvas (캔버스)
🎨 테마 & UI
- Theme Browser
- Icon Folder (폴더 아이콘)
- Hider (UI 요소 숨기기)
- Custom Frames
⚙️ 자동화 & 동기
- Obsidian Git (버전 관리)
- Sync (클라우드 동기)
- Save Search (검색 저장)
- Tag Wrangler (태그 관리)
- Calendar (달력 통합)
핵심 단축키 설정
| 기능 | 추천 단축키 | 용도 |
|---|---|---|
| 빠른 열기 | Ctrl+K | 노트 검색 및 빠른 이동 |
| 명령 팔레트 | Ctrl+P | 모든 명령 실행 |
| 검색 | Ctrl+F | 노트 내 검색 |
| 전역 검색 | Ctrl+Shift+F | 전체 볼트 검색 |
| 새 노트 | Ctrl+N | 신규 노트 생성 |
| 템플릿 삽입 | Ctrl+Alt+T | 미리 정의된 템플릿 적용 |
Omnisearch & Google 통합
고급 검색 기능으로 정보 검색을 최적화합니다:
- Omnisearch — 파일명, 콘텐츠, 태그를 동시에 검색
- Google 통합 — Obsidian에서 직접 Google 검색 수행
- 검색 문법 — 정규식, 필터 조건을 활용한 정밀 검색
테마 커스터마이징
시각적 환경을 개인화하여 생산성을 향상합니다:
- 커뮤니티 테마 (40개 이상)
- CSS 스니펫으로 세밀한 조정
- 다크 모드/라이트 모드 자동 전환
- 폰트와 색상 팔레트 커스터마이징
콘텐츠 관리
마크다운 문법, 외부 라이브러리 통합, AI 기반 콘텐츠 자동화입니다.
마크다운 문법 (연구자용)
Obsidian에서 지원하는 마크다운 문법 완전 가이드:
# H1 제목
## H2 부제목
### H3 소제목
**굵은 글씨** / *이탤릭* / ~~취소선~~
- 불릿 항목
- 중첩 항목
1. 번호 항목
[[노트명]] — 내부 링크
[[노트명|표시명]] — 커스텀 라벨
#태그 — 태그 분류
#분류/세부분류 — 계층적 태그
> 인용문
>> 중첩 인용
```javascript
코드 블록
```
| 표 | 헤더 |
|----|-----|
| 셀 | 내용 |
---
Eagle Library 연동
외부 이미지 라이브러리 (Eagle)와 Obsidian 통합:
- Eagle에서 정리한 이미지를 Obsidian에서 직접 삽입
- 이미지 메타데이터 활용으로 검색 효율성 증가
- 시각적 자료와 텍스트 노트의 통합 관리
AI 기반 콘텐츠 자동화
ChatGPT 자동 작성
- 프롬프트 기반 콘텐츠 생성
- 자동 요약 및 번역
- 구조화된 데이터 생성
Claude 스마트 조합
- 맥락 기반 작성
- 일관성 있는 톤 유지
- 지식 베이스 기반 보강
외부 라이브러리 통합
Obsidian과 함께 사용할 수 있는 외부 도구들:
| 도구 | 기능 | 통합 방식 |
|---|---|---|
| Eagle | 이미지 라이브러리 | 직접 삽입 |
| ReadWise | 웹 클리핑 | 자동 임포트 |
| Notion | 데이터베이스 | 양방향 동기 |
| Google Drive | 파일 저장소 | 링크 삽입 |
| Claude Code | AI 시스템 파일 | 시스템 프롬프트 |
모범 사례 (Best Practices)
- 원자 노트 작성 — 한 노트는 하나의 개념만 다룹니다
- 일관된 네이밍 — YYYY-MM-DD 형식의 타임스탬프와 명확한 제목
- 정기적인 검토 — 주 1회 이상 노트를 검토하고 연결 관계 확인
- 백업 전략 — Git을 통한 버전 관리와 주기적인 클라우드 백업
- 메타데이터 활용 — 프론트매터를 활용한 노트 분류 및 조회
- AI 협력 — 반복적인 작업은 AI에 위임하고, 창의적 작업에 집중
시작 체크리스트
- ☐ Obsidian 설치 및 Vault 생성
- ☐ 폴더 구조 설계 및 생성
- ☐ 기본 플러그인 설치 (Templater, Dataview, Smart Connections)
- ☐ 단축키 커스터마이징
- ☐ 노트 템플릿 작성
- ☐ Claude/ChatGPT 통합 설정
- ☐ 첫 번째 노트 작성 및 링크 구축
- ☐ 정기 검토 일정 설정
Make (구 Integromat) 소개
Make는 코드 없이 앱과 서비스를 연결하는 비주얼 자동화 플랫폼입니다. 드래그 & 드롭으로 복잡한 워크플로우를 구축할 수 있습니다.
Make란 무엇인가?
Make(구 Integromat)는 노코드 자동화 플랫폼으로, 수백 개의 앱과 서비스를 시각적으로 연결하여 자동화 시나리오를 만들 수 있습니다.
핵심 개념
시나리오 (Scenario)— 자동화 워크플로우의 기본 단위. 트리거 → 액션 순서로 구성모듈 (Module)— 시나리오를 구성하는 개별 블록 (앱 연결, 데이터 변환 등)연결 (Connection)— 외부 앱과 Make를 연결하는 인증 설정라우터 (Router)— 조건에 따라 데이터를 다른 경로로 분기필터 (Filter)— 특정 조건에 맞는 데이터만 통과이터레이터 (Iterator)— 배열 데이터를 하나씩 처리애그리게이터 (Aggregator)— 여러 데이터를 하나로 합침
Make vs Zapier 비교
| 항목 | Make | Zapier |
|---|---|---|
| 인터페이스 | 비주얼 캔버스 (드래그&드롭) | 리스트 기반 (단순) |
| 분기/조건 | 라우터 + 필터 (복잡한 로직 가능) | Path (제한적) |
| 가격 | 무료 1,000 ops/월 | 무료 100 tasks/월 |
| 에러 핸들링 | Break, Resume, Rollback 등 상세 | 기본적 |
| 데이터 변환 | 내장 함수 풍부 | Formatter 앱 필요 |
| 적합 대상 | 복잡한 자동화, 개발자 친화적 | 단순 자동화, 비개발자 |
시작하기
make.com접속 → 무료 계정 가입- 대시보드에서 Create a new scenario 클릭
- 트리거 모듈 추가 (예: Webhook, Gmail, Google Sheets)
- 액션 모듈 연결 (예: Slack 알림, 데이터베이스 저장)
- Run once로 테스트 → Turn on으로 활성화
시나리오 기초
Make 시나리오의 생성, 실행, 스케줄링 방법을 알아봅니다.
시나리오 생성
- 대시보드 → + Create a new scenario
- 캔버스에서 + 버튼 클릭 → 앱 검색
- 트리거 모듈 선택 (시나리오 시작점)
- 연결(Connection) 설정 — API 키 또는 OAuth 인증
- 다음 모듈 추가하여 파이프라인 구성
트리거 유형
Instant Trigger (Webhook)— 이벤트 발생 즉시 실행. 실시간 반응에 적합Polling Trigger— 설정된 간격으로 새 데이터 확인. 스케줄 기반
스케줄링
간격 설정— 15분, 1시간, 매일 등 실행 주기 설정즉시 실행— Webhook 트리거 사용 시 이벤트 즉시 처리Run once— 테스트용 1회 실행ON/OFF— 시나리오 활성화/비활성화 토글
실행 히스토리
시나리오 상세 페이지에서 History 탭을 통해 과거 실행 기록, 입출력 데이터, 에러 로그를 확인할 수 있습니다. 디버깅에 필수적입니다.
데이터 매핑
모듈 간 데이터 전달은 매핑 패널을 통해 이루어집니다. 이전 모듈의 출력값을 다음 모듈의 입력 필드에 드래그하여 연결합니다.
{{1.body.data}}— 모듈 1의 출력에서 body.data 참조- 함수 사용:
{{formatDate(1.date; "YYYY-MM-DD")}} - 배열 접근:
{{1.items[].name}}
모듈 & 연결
주요 모듈 유형과 외부 앱 연결 방법을 다룹니다.
모듈 유형
| 유형 | 설명 | 예시 |
|---|---|---|
| 트리거 | 시나리오 시작점. 데이터 감지 | Gmail: Watch Emails, Webhook |
| 액션 | 데이터 생성/수정/삭제 | Google Sheets: Add a Row |
| 검색 | 기존 데이터 조회 | Airtable: Search Records |
| 변환 | 데이터 형식 변환 | JSON: Parse, CSV: Create |
| 흐름 제어 | 분기/반복/에러 처리 | Router, Iterator, Error Handler |
자주 사용하는 앱 연결
Google Workspace— Gmail, Sheets, Drive, Calendar, DocsSlack— 메시지 전송, 채널 관리, 알림Notion— 데이터베이스 CRUD, 페이지 생성Supabase— 데이터베이스 쿼리, 인증, 스토리지OpenAI / Claude— AI 텍스트 생성, 분석, 번역HTTP / Webhook— 커스텀 API 호출, 웹훅 수신Airtable— 레코드 생성/검색/수정GitHub— 이슈 생성, PR 모니터링, 커밋 트리거
HTTP 모듈 활용
Make에 직접 통합되지 않은 서비스는 HTTP 모듈로 연결할 수 있습니다.
HTTP: Make a request— GET/POST/PUT/DELETE 요청HTTP: Make a Basic Auth request— 기본 인증 APIHTTP: Make an OAuth 2.0 request— OAuth 2.0 인증 APIWebhooks: Custom webhook— 외부에서 Make로 데이터 전송
연결(Connection) 관리
- 모듈 설정에서 Create a connection 클릭
- 앱 인증 (OAuth, API Key, 토큰 등)
- 한번 생성된 연결은 여러 시나리오에서 재사용 가능
- Connections 메뉴에서 전체 연결 목록 관리
AI & 챗봇 자동화
Make를 활용한 AI 통합과 챗봇 구축 방법을 다룹니다.
AI 챗봇 구축 방법
- Webhook 트리거 — 사용자 메시지를 수신하는 엔드포인트 생성
- OpenAI / Claude 모듈 — 수신된 메시지를 AI에 전달하여 응답 생성
- 응답 전송 — Slack, 카카오톡, 웹채팅 등으로 AI 응답 전달
- 대화 기록 저장 — Google Sheets 또는 Supabase에 히스토리 저장
OpenAI 연동
OpenAI: Create a Completion— GPT 모델로 텍스트 생성OpenAI: Create a Chat Completion— 대화형 응답 생성OpenAI: Create an Image— DALL-E 이미지 생성OpenAI: Create a Transcription— Whisper 음성→텍스트
Claude (Anthropic) 연동
HTTP 모듈을 사용하여 Anthropic API에 직접 연결합니다.
- HTTP 모듈 → URL:
https://api.anthropic.com/v1/messages - Headers:
x-api-key,anthropic-version - Body: model, messages, max_tokens 등 JSON 형태
AI 자동화 시나리오 예시
| 시나리오 | 구성 |
|---|---|
| 이메일 자동 응답 | Gmail 트리거 → AI 분석 → 자동 답장 생성 → Gmail 전송 |
| 고객문의 분류 | Webhook 수신 → AI 카테고리 분류 → Notion DB 저장 → Slack 알림 |
| 콘텐츠 생성 | Google Sheets 키워드 → AI 글 생성 → WordPress 포스팅 |
| 번역 파이프라인 | Google Drive 파일 감지 → AI 번역 → 번역본 저장 → 알림 |
| SNS 자동화 | RSS 피드 → AI 요약 → 이미지 생성 → Instagram/X 포스팅 |
고급 기능
라우터, 에러 핸들링, 데이터 스토어 등 고급 기능을 다룹니다.
라우터 (Router)
하나의 데이터 흐름을 조건에 따라 여러 갈래로 분기합니다.
필터 조건— 각 분기에 조건 설정 (예: status = "urgent")Fallback 라우트— 어떤 조건에도 해당하지 않을 때 실행- 여러 라우터를 중첩하여 복잡한 비즈니스 로직 구현 가능
에러 핸들링
| 핸들러 | 동작 | 용도 |
|---|---|---|
| Resume | 대체값으로 실행 계속 | 선택적 실패 허용 |
| Rollback | 전체 시나리오 롤백 | 트랜잭션 보장 |
| Commit | 실행 중단 + 완료 처리 | 부분 실행 허용 |
| Ignore | 에러 무시하고 계속 | 비핵심 모듈 실패 허용 |
| Break | 미완료 실행 큐에 저장 | 재시도 필요 시 |
데이터 스토어 (Data Store)
Make 내장 간이 데이터베이스입니다. 시나리오 간 데이터 공유에 활용합니다.
Add/Replace a record— 레코드 추가/갱신Search records— 조건 검색Delete a record— 레코드 삭제Delete all records— 전체 초기화- 키-값 구조, 최대 저장 용량은 요금제에 따라 다름
웹훅 (Webhook) 심화
Custom Webhook— Make가 URL을 생성, 외부에서 POST 요청Webhook Response— 웹훅 호출자에게 응답 반환 (API처럼 사용)- IP 제한, 데이터 구조 정의, JSON/Form 파싱 지원
유용한 내장 함수
ifempty(value; default)— 빈 값일 때 기본값 사용formatDate(date; format)— 날짜 포맷 변환parseJSON(text)— JSON 문자열 파싱replace(text; pattern; replacement)— 텍스트 치환length(array)— 배열 길이map(array; key)— 배열에서 특정 키 값만 추출
템플릿 & 실전 활용
바로 사용 가능한 자동화 템플릿과 실전 활용 팁입니다.
추천 자동화 템플릿
| 이름 | 구성 | 난이도 |
|---|---|---|
| 폼 → 스프레드시트 → 알림 | Webhook → Google Sheets → Slack | 초급 |
| 이메일 첨부파일 자동 저장 | Gmail → Google Drive → 알림 | 초급 |
| SNS 예약 발행 | Google Sheets → 이미지 생성 → Instagram API | 중급 |
| 고객 리뷰 AI 분석 | Google Forms → OpenAI 분석 → Notion 저장 | 중급 |
| GitHub 이슈 → 프로젝트 관리 | GitHub 트리거 → Notion/Linear → Slack 알림 | 중급 |
| 다국어 콘텐츠 파이프라인 | 원본 → AI 번역(5개 언어) → CMS 배포 | 고급 |
| 풀스택 웹훅 API | Webhook → Supabase CRUD → 응답 반환 | 고급 |
Make + Claude Code 연동 팁
- Webhook 기반 배포 자동화 — GitHub push → Make Webhook → Vercel 배포 트리거
- 에러 모니터링 — Make 시나리오 실패 시 Slack/이메일 알림 자동 발송
- 데이터 수집 — 외부 API 크롤링 → Supabase 저장 → 대시보드 자동 업데이트
- AI 콘텐츠 파이프라인 — 키워드 입력 → Claude API → 블로그 글 생성 → CMS 발행
비용 최적화 팁
- 불필요한 모듈 실행을 필터로 차단하여 오퍼레이션 절약
- 애그리게이터로 여러 건을 묶어 한 번에 처리
- Polling 간격을 적절히 설정 (15분 vs 매시간)
- 데이터 스토어 활용으로 외부 DB 호출 최소화
- Webhook 트리거 사용 시 오퍼레이션 소모가 가장 적음
유용한 리소스
make.com/en/integrations— 전체 앱 통합 목록make.com/en/templates— 공식 템플릿 갤러리make.com/en/help— 공식 문서 & 튜토리얼community.make.com— 커뮤니티 포럼
n8n 자동화 플랫폼 소개
n8n은 오픈소스 워크플로우 자동화 플랫폼으로, 400개 이상의 앱을 연결하고 AI와 통합하여 업무를 자동화합니다.
n8n이란?
n8n은 2019년 독일의 Jan Oberhauser가 창립한 오픈소스 워크플로우 자동화 플랫폼으로, 현재 100,000개 이상의 조직이 사용하고 있습니다.
- 오픈소스 — GitHub에서 소스코드 공개, 커뮤니티 기여 활발
- 셀프호스팅 가능 — 자체 서버에 설치하여 데이터 완전 통제
- JavaScript 코드 실행 — 비주얼 편집기와 코드를 자유롭게 혼합
- AI 에이전트 네이티브 지원 — LLM, 벡터 DB, 메모리 등 AI 워크플로우 내장
왜 n8n인가?
- 오픈소스 & 무료 셀프호스팅 — 서버에 직접 설치하면 비용 거의 없음, 사용량 제한 없음
- 코드도 되고 노코드도 된다 — 비주얼 편집기 + JavaScript/Python 코드 삽입 모두 지원
- AI와의 완벽한 통합 — OpenAI GPT, Anthropic Claude, Google Gemini 등 네이티브 통합
- 400개 이상 앱 연동 — Gmail, Slack, Notion, Google Sheets 등 대부분 서비스 지원
- 확장성 — 커뮤니티 노드 2,800+ 개, 커스텀 노드 개발 가능
n8n vs 경쟁 도구
| 항목 | n8n | Zapier | Make | Power Automate |
|---|---|---|---|---|
| 가격 | 무료(셀프호스팅) | 유료($20/월~) | 유료($9/월~) | 유료($15/월~) |
| 오픈소스 | O | X | X | X |
| 코드 지원 | JavaScript/Python | X | 제한적 | 제한적 |
| AI 에이전트 | 네이티브 지원 | 부분 지원 | 부분 지원 | 부분 지원 |
| 셀프 호스팅 | O | X | X | 부분 |
| 적합 대상 | 개발자, 파워유저 | 비개발자 | 복잡한 자동화 | MS 생태계 |
핵심 개념
워크플로우 (Workflow)— 자동화하려는 전체 작업의 흐름노드 (Node)— 워크플로우를 구성하는 개별 작업 단위트리거 (Trigger)— 워크플로우를 시작시키는 이벤트크리덴셜 (Credential)— 외부 서비스 인증 정보표현식 (Expression)— {{ }} 안에서 동적 데이터 참조
참고 자료
- n8n AI 자동화 가이드 (
wikidocs.net/book/19485) — AI_Innovation_Studio 저, 10장 78페이지 종합 가이드 - n8n 노코드 자동화 한글 가이드북 (
wikidocs.net/book/18092) — 100+ 페이지, 실전 중심 한글 가이드 - n8n 한 시간 안에 끝내기 (
wikidocs.net/book/18895) — 박응용 저, 1시간 완성 실습형 입문서
설치 가이드
n8n Cloud, Docker, npm, Railway 등 다양한 설치 방법을 안내합니다.
설치 방법 비교
| 방법 | 난이도 | 비용 | 소요 시간 | 적합 대상 |
|---|---|---|---|---|
| n8n Cloud | 매우 쉬움 | 월 $20~ | 5분 | 빠른 시작, 관리 부담 최소화 |
| Docker Desktop | 쉬움 | 무료 | 10분 | 로컬 개발/테스트 |
| Docker CLI | 중간 | 무료 | 15분 | 서버 운영 |
| Railway | 쉬움 | $2~5/월 | 1분 | 가성비 클라우드 배포 |
| npm | 쉬움 | 무료 | 5분 | Node.js 환경 로컬 테스트 |
Docker로 설치 (권장)
# 데이터 볼륨 생성
docker volume create n8n_data
# n8n 실행
docker run -d \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Seoul" \
-e TZ="Asia/Seoul" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Docker Compose (운영 환경)
# docker-compose.yml
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Seoul
- TZ=Asia/Seoul
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
n8n Cloud 시작하기
- 14일 무료 체험 — 신용카드 불필요
- 5분 내 설정 — 가입 후 바로 워크플로우 구축 가능
- 자동 업데이트, 백업, SSL 인증서 관리 포함
Railway 배포
- 1분 배포 — 템플릿 활용으로 즉시 시작
- 무료 $5 크레딧 — 소규모 테스트에 충분
- 자동 스케일링 및 HTTPS 지원
초기 설정 체크리스트
- 관리자 계정 생성 (강력한 비밀번호 설정)
- 타임존
Asia/Seoul설정 - 이메일 인증 완료
서버 권장 사양
| 환경 | CPU | RAM | 용도 |
|---|---|---|---|
| 프로토타입 | 1-2 코어 | 2-4GB | 학습, 소규모 테스트 |
| 테스트 | 2-4 코어 | 4-8GB | 팀 개발 환경 |
| 프로덕션 | 4+ 코어 | 8-16GB+ | 본격 운영 |
핵심 개념 & 노드
노드, 트리거, 데이터 구조, 표현식 등 n8n의 기본 개념을 마스터합니다.
노드 유형
- 트리거 노드 (주황 번개 아이콘) — 워크플로우 시작점
- 일반 노드 — 트리거 이후 데이터 처리
- 노드 내부 구조 — Parameters(설정값), Input/Output(데이터 흐름), Credentials(인증 정보)
트리거 종류
| 유형 | 설명 | 예시 |
|---|---|---|
| Manual Trigger | 수동 실행 | 테스트용 |
| Schedule Trigger | Cron 기반 예약 | 매일 오전 9시 |
| Webhook Trigger | 외부 이벤트 수신 | 폼 제출, 결제 완료 |
| Email Trigger | IMAP 이메일 감지 | 새 이메일 수신 |
| 앱별 트리거 | 서비스 이벤트 | Slack 메시지, GitHub PR |
Cron 표현식 예시
0 9 * * 1-5 # 평일 오전 9시
0 */2 * * * # 2시간마다
30 8 1 * * # 매월 1일 오전 8시 30분
0 0 * * 0 # 매주 일요일 자정
핵심 노드
Edit Fields (Set)— 데이터 필드 추가/수정/삭제IF— 조건 분기 (참/거짓)Switch— 다중 조건 분기Merge— 여러 경로 데이터 합치기Split Out— 배열을 개별 아이템으로 분리Aggregate— 여러 아이템을 하나로 합침Filter— 조건에 맞는 아이템만 통과Sort— 아이템 정렬Loop Over Items— 아이템 반복 처리Wait— 시간/이벤트 대기Code— JavaScript/Python 코드 실행HTTP Request— API 호출
JSON 데이터 구조
n8n에서 모든 데이터는 아이템 배열로 흐릅니다. 각 아이템은 {json: {실제 데이터}} 구조를 가집니다.
[
{ "json": { "name": "홍길동", "email": "hong@example.com" } },
{ "json": { "name": "김철수", "email": "kim@example.com" } }
]
표현식 (Expressions)
| 표현식 | 설명 |
|---|---|
{{ $json.field }} | 현재 아이템 데이터 |
{{ $node["이름"].json }} | 특정 노드 데이터 |
{{ $input.first().json }} | 직전 노드 첫 아이템 |
{{ $env.변수명 }} | 환경 변수 |
{{ $now.toFormat('yyyy-MM-dd') }} | 현재 시간 |
{{ $json.name ?? "이름 없음" }} | null 처리 |
HTTP Request 노드
가장 범용적인 노드로, 전용 노드가 없는 서비스에 API를 호출할 수 있습니다.
- 메서드: GET / POST / PUT / PATCH / DELETE
- 인증: API Key, OAuth, Bearer Token 등
- 페이지네이션 자동 지원
키보드 단축키
| 단축키 | 기능 |
|---|---|
| Ctrl+S | 워크플로우 저장 |
| Ctrl+Z | 실행 취소 |
| Tab | 노드 추가 |
| Ctrl+Enter | 워크플로우 실행 |
| D | 노드 활성화/비활성화 |
| E | 노드 실행 |
| P | 데이터 핀 |
| Ctrl+A | 전체 선택 |
워크플로우 구축 & 관리
효과적인 워크플로우 설계 원칙, 분기 처리, 반복, 에러 핸들링을 다룹니다.
5가지 설계 원칙
- 목표를 한 문장으로 정의하라 — 무엇을 자동화하는지 명확히
- 명확한 이름을 붙여라 — 동작 설명 2~4단어 (예: "이메일 분류", "Slack 알림 전송")
- 왼쪽에서 오른쪽으로 흐르게 만들어라 — 일관된 시각적 흐름
- 조기 종료로 불필요한 처리를 막아라 — Filter/IF로 초반에 걸러내기
- 테스트를 위한 여유를 남겨라 — 20개 노드 이상이면 Sub-Workflow로 분리
데이터 흐름 패턴
| 패턴 | 설명 | 노드 |
|---|---|---|
| 분기 (Splitting) | 조건별 경로 분리 | IF, Switch, Split Out |
| 병합 (Merging) | 여러 경로 합치기 | Merge (Append/By Fields/By Position) |
| 반복 (Looping) | 배치/조건 반복 | Loop Over Items, Split In Batches |
| 대기 (Waiting) | 시간/이벤트 대기 | Wait |
| 서브 워크플로우 | 모듈화 호출 | Execute Workflow |
IF 조건과 Switch
- IF 노드 — 참/거짓 2분기 처리
- Switch 노드 — 3개 이상 다중 분기 처리
- Switch 사용 시 Default 경로 필수 — 예상치 못한 값 처리
반복 처리
- 대부분 노드가 아이템을 자동 순차 처리
- Split In Batches로 API 제한 대응 (100~500건씩)
- 지수 백오프(1→2→4→8초) 재시도 전략
에러 핸들링
| 방법 | 설명 |
|---|---|
| Stop and Error | 즉시 중단 (기본값) |
| Continue | 에러 무시하고 계속 |
| Continue (error output) | 성공/실패 경로 분리 (가장 강력) |
| Retry on Fail | 자동 재시도 (Max Tries, Wait 설정) |
| Error Trigger | 워크플로우 전체 미처리 에러 캐치 |
HTTP 상태 코드 대응
- 429/503/504 (일시적 오류) → 자동 재시도
- 401/403 (인증 오류) → 운영팀 알림
- 400/422 (데이터 오류) → 실패 로그 기록
AI 에이전트
n8n의 AI Agent 노드, LLM 연동, 프롬프팅 전략, 메모리 관리를 다룹니다.
AI 에이전트란?
AI 에이전트는 목표 수립 후 자율적으로 계획→도구 선택→실행→검증→재시도하는 시스템입니다. n8n은 ReAct 패턴(생각→행동→관찰)을 반복하여 복잡한 작업을 수행합니다.
AI Agent 노드 3대 구성요소
- Brain (LLM 모델) — GPT-4o, Claude, Gemini 등
- Tools (도구) — Calculator, Wikipedia, HTTP Request, Gmail, Sheets, Slack, Notion, DB
- Memory (기억) — Window Buffer, Postgres/Redis Chat Memory, Vector Store Memory
지원 AI 모델 비교
| 제공업체 | 모델 | 가격 (입/출력 $1M) | 특징 |
|---|---|---|---|
| OpenAI | GPT-4o | $2.5 / $10 | 범용 최강, 멀티모달 |
| OpenAI | GPT-4o-mini | $0.15 / $0.6 | 가성비 최고 |
| Anthropic | Claude Opus 4 | $15 / $75 | 최고 추론, 200K 컨텍스트 |
| Anthropic | Claude Sonnet 4 | $3 / $15 | 균형잡힌 성능 |
| Anthropic | Claude Haiku 4 | $0.8 / $4 | 빠른 속도, 저렴 |
| Gemini 1.5 Pro | $1.25 / $5 | 1M 컨텍스트 |
모델 선택 가이드
| 작업 유형 | 추천 모델 | 이유 |
|---|---|---|
| 일반 텍스트 | GPT-4o mini | 속도/비용/성능 균형 |
| 긴 문서 요약 | Claude Sonnet 4 | 200K 컨텍스트 |
| 이미지 분석 | GPT-4o / Gemini 1.5 Pro | 멀티모달 |
| 보안 민감 | Ollama (로컬) | 외부 전송 없음 |
| 복잡한 추론 | Claude Opus 4 | 최고 정밀도 |
프롬프팅 전략
- 역할 부여 — "당신은 고객 지원 전문가입니다"
- 구체적 출력 형식 — JSON 스키마 지정
- Few-Shot 예시 — 입력/출력 예시 2~3개 제공
- 제약 조건 명시 — 금지 사항, 길이 제한 등
Temperature 가이드: 0.0~0.3(데이터 추출), 0.5~0.7(이메일), 0.7~1.0(창의적 콘텐츠)
메모리 유형
| 유형 | 저장 | 용도 | 특징 |
|---|---|---|---|
| Window Buffer | 임시 | 단기 대화 | 최근 N개 메시지 |
| Postgres Chat | 영구 | 장기 기록 | DB 영구 저장 |
| Redis Chat | 고성능 | 대규모 동시사용 | TTL 설정 가능 |
| Vector Store | 의미 기반 | 수백 메시지 검색 | 관련 내용만 추출 |
LLM Chain vs AI Agent
- LLM Chain — 미리 정해진 순서, 비용/속도 예측 가능, 단순 반복 작업에 적합
- AI Agent — 자율적 판단, 도구 호출 가능, 복잡한 의사결정에 적합
비용 절약 전략
- 모델 티어링 — 복잡→Opus, 단순→Haiku
- 프롬프트 최적화 — 불필요한 토큰 줄이기
- Claude Prompt Caching — 반복 프롬프트 90% 비용 절감
- Redis 캐싱 — 동일 질문 재사용
실전 프로젝트
Gmail, Slack, Telegram, Google Sheets, Notion, 웹훅 등 주요 서비스 자동화 실습입니다.
Gmail 이메일 자동화
- 기본 흐름 — Google OAuth 설정 → 이메일 분류(VIP/일반/스팸) → Switch 라우팅
- 고급 활용 — 주간 리포트 자동화, 업무 자동 배정 시스템
Slack 봇 만들기
Bot Token Scopes: chat:write, channels:read, users:read
- 프로젝트 1: 슬래시 명령어 봇 (/report) — Webhook → 데이터 조회 → Block Kit 리포트
- 프로젝트 2: 자동 알림 봇 — 주문 금액별 채널 분기
- 프로젝트 3: 데일리 스탠드업 봇 — 평일 오전 9시 자동 질문
Telegram 봇 만들기
BotFather /newbot으로 생성
- 명령어 기반 봇 — /help, /status 등 텍스트 명령 처리
- 인라인 키보드 봇 — 버튼 기반 인터랙션
- 주문 알림 봇 — 주문 상태 실시간 알림
- 파일 전송 봇 — 문서, 이미지 자동 전송
- 보안 — 허가된 User ID 목록으로 접근 제한
Google Sheets 자동화
Sheets API + Drive API 활성화, OAuth 2.0 설정
- 기본 작업 — Read Rows, Append Row, Update Row, Delete Row
- 폼 응답 자동 저장 — Google Forms → Sheets 자동 기록
- Sheets→이메일 일괄 발송 — 스프레드시트 기반 대량 메일
- 자동 대시보드 — 데이터 집계 및 리포트 생성
Notion 연동 자동화
Internal Integration Token (ntn_ 또는 secret_ 접두사), 반드시 해당 데이터베이스에 통합 초대 필요
- 고객 문의 CRM 자동 등록 — 이메일/챗봇 문의 → Notion DB 자동 저장
- 이메일/Slack에서 할 일 자동 추가 — 특정 키워드 감지 → Notion 태스크 생성
웹훅 기반 자동화
테스트 URL vs 프로덕션 URL — 프로덕션 URL은 워크플로우 활성화 필수
- 보안 — HMAC 서명 검증, API Key 검증, IP 화이트리스트
- 중복 방지 — 이벤트 ID로 중복 확인
- 쇼핑몰 결제 완료 — 결제 웹훅 → 주문 처리 → 알림
- GitHub PR 자동 리뷰어 — PR 생성 → 리뷰어 자동 배정
- 폼 제출 처리 — 외부 폼 → 데이터 저장 → 확인 이메일
ChatGPT & Claude AI 자동화
OpenAI GPT, Anthropic Claude 연동과 AI 이메일 분류, 고객 지원 봇, RAG 시스템, 콘텐츠 생성을 다룹니다.
OpenAI GPT 연동
- 모델 — gpt-4o($2.5/$10), gpt-4o-mini($0.15/$0.6), o3($10/$40)
- 설정 — API Key 발급 → n8n Credential 설정
- 기능 — 텍스트 분류, 이미지 분석(Vision), Function Calling
Anthropic Claude 연동
- 강점 — 200K 토큰 컨텍스트, 정교한 추론, 코딩 성능, 한국어 지원
- 모델 — Claude Opus 4($15/$75), Sonnet 4($3/$15), Haiku 4($0.8/$4)
- Extended Thinking(확장 사고) — 복잡한 문제에 대한 심층 추론
- Prompt Caching — 반복 프롬프트 90% 비용 절감
- 동적 모델 선택 — 복잡도에 따라 Haiku/Sonnet/Opus 자동 선택
AI 이메일 자동 분류
처리 시간 4시간→10분 단축
- 파이프라인 — Gmail Trigger → AI 분석(카테고리/긴급도/감정) → Switch 라우팅
- 자동 처리 — FAQ 답변, 주문 조회, 환불 처리, 복잡 문의 에스컬레이션
- 품질 관리 — 환불/불만 등 중요 응답은 인간 검토 후 발송
AI 고객 지원 봇
24시간 자동 고객 문의 처리 — Claude Sonnet 또는 GPT-4o
- 에스컬레이션 규칙 — 환불 10만원 이상, 같은 문제 3회 반복, 법적 분쟁, 강한 불만
- 성능 목표 — 자동 해결률 70%, 평균 응답 5초, 만족도 4.0/5.0+
RAG 시스템 구축
- 인덱싱 — 문서→텍스트 추출→청크 분할(300-500 토큰)→임베딩→벡터 DB
- 질의 — 질문 임베딩→벡터 DB 유사 검색(Top 3-5)→프롬프트 구성→AI 답변
- 도구 — Supabase + pgvector, OpenAI text-embedding-3-small
- 활용 — 내부 문서 검색 봇, 상품 매뉴얼 Q&A, 법률 판례 검색
AI 콘텐츠 생성
8~16시간 → 30분 단축
- 파이프라인 — 아이디어→키워드 리서치→구조 설계→초안→SEO 최적화→이미지→게시→소셜 배포
멀티 에이전트 시스템
- 3가지 패턴 — 오케스트레이터-워커, 파이프라인 체인, 전문가 패널
- n8n 구현 — 서브 워크플로우 + Execute Workflow, Promise.all() 병렬
- 비용 최적화 — 오케스트레이터(Sonnet), 데이터 수집(4o-mini), 분석(Opus)
고급 활용 & 보안
Sub-Workflow, 성능 최적화, 보안 모범 사례, 서버 관리를 다룹니다.
Sub-Workflow
- 재사용 가능한 자동화 함수 — Execute Workflow 노드로 호출
- 레이어 구조 — 트리거 → 비즈니스 로직 → 유틸리티 모듈
- 활용 예시 — 공통 에러 알림, 고객 데이터 정제, AI 텍스트 요약
성능 최적화
- 배치 처리 — Split In Batches로 100~500건씩
- 병렬 처리 — 10개 작업 10초→1초
- 데이터 최소화 — 필요한 필드만 추출
- 캐싱 — Redis/DB에 자주 조회하는 데이터 저장
- DB 쿼리 최적화 — SELECT 필드 제한, WHERE, LIMIT, 인덱스
서버 환경 변수
EXECUTIONS_CONCURRENCY_ACTIVE=25
NODE_OPTIONS=--max-old-space-size=4096
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=336
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
보안 7대 영역
| 영역 | 핵심 조치 |
|---|---|
| 인증 & 접근 | 강력한 비밀번호, JWT, 역할 기반 접근, IP 허용 목록 |
| 웹훅 보안 | HMAC 서명 검증, API Key 검증 |
| 크리덴셜 보안 | n8n Credentials 암호화 저장, 환경변수, 하드코딩 금지 |
| 데이터 보안 | 민감 데이터 마스킹, GDPR 준수 |
| 네트워크 보안 | HTTPS 강제, Nginx 리버스 프록시, Rate limiting |
| 코드 노드 보안 | eval 금지, 입력값 검증, 파라미터화된 쿼리 |
| 감사 로그 | 누가, 언제, 무엇을, 어디서, 결과 기록 |
백업 전략
- 워크플로우 JSON 내보내기 — 정기적으로 Export
- Credentials 백업 — 별도 안전 저장
- .n8n 폴더 전체 백업 — 설정 및 데이터 포함
- 암호화 키 별도 안전 보관 (CRITICAL) — 분실 시 크리덴셜 복구 불가
커뮤니티 노드
2,800+ 노드 — npm 또는 n8n UI에서 설치
- AI/LLM — 추가 AI 모델 및 벡터 DB 연동
- 데이터 처리 — CSV, Excel, PDF 변환 등
- 커뮤니케이션 — 카카오톡, Line, WhatsApp 등
- 브라우저 자동화 — Puppeteer, Playwright 스크래핑
- 문서 생성 — PDF, DOCX, 이미지 생성
MCP & Claude Code 연동
MCP(Model Context Protocol)를 통한 AI-n8n 통합과 Claude Code에서 워크플로우를 생성/실행하는 방법입니다.
MCP란?
MCP(Model Context Protocol)는 AI 모델과 도구 간 표준 통신 프로토콜입니다.
- 자동 도구 문서화 — 도구 설명을 AI가 자동으로 이해
- 모델 교체 간편 — 프로토콜 표준화로 LLM 교체 용이
- 노코드 AI 에이전트 생성 — MCP 서버 연결만으로 도구 사용 가능
보안 주의사항
- 미검증 MCP 서버를 프로덕션에 사용 금지
- 관리자 권한 부여 금지
- 자동 승인 금지
- 반드시 human-in-the-loop, 최소 권한 원칙, 환경 분리, 실시간 모니터링
n8n-mcp 설정
{
"mcpServers": {
"n8n-mcp": {
"command": "npx",
"args": ["n8n-mcp"],
"env": {
"MCP_MODE": "stdio",
"N8N_API_URL": "https://your-n8n-instance.com",
"N8N_API_KEY": "your-api-key"
}
}
}
}
Claude Code + n8n 연동
- 양방향 통합 — Claude Code가 워크플로우 생성, n8n이 Claude Code 트리거
- n8n — 시각적, 24/7 스케줄 | Claude Code — 자연어, 세션 기반, 판단 작업
- 4가지 연결 방법 — n8n 내장 MCP(v1.120+), n8n-mcp 라이브러리, Claude Code Skills, CLAUDE.md
Claude Code로 워크플로우 만들기
- 자연어 → JSON 워크플로우 생성
- 가져오기 — UI 붙여넣기(Ctrl+V), API 배포, MCP 통합
- 팁 — 예시 제공, CLAUDE.md 가이드라인, Plan 모드 활용
- 주의 — 프로토타입으로 취급, 노드 타입 검증, 크리덴셜 수동 연결
n8n에서 Claude Code 활용
SSH 노드로 Claude Code CLI 호출
claude -p "prompt" --output-format text
- 세션 관리 —
--session-id,--resume플래그 - 고객 문의 초안 — 문의 내용 → Claude Code → 답변 초안
- Slack Q&A — Slack 질문 → Claude Code → 답변 자동 게시
- 주간 뉴스 요약 — RSS 수집 → Claude Code → 요약 리포트
n8n 스킬 설치
git clone https://github.com/czlonkowski/n8n-skills.git
cp -r n8n-skills/skills/* ~/.claude/skills/
설치되는 스킬: n8n-code-javascript, n8n-code-python, n8n-expression-syntax, n8n-mcp-tools-expert, n8n-node-configuration, n8n-validation-expert, n8n-workflow-patterns
n8n 한 시간 안에 끝내기
박응용 저 — 1시간 만에 실전 블로그 자동 포스팅 워크플로우를 완성합니다.
목표
사용자 입력 → AI 블로그 작성 → 이미지 생성 → 자동 포스팅. 30~60분 걸리는 블로그 작업을 수 분으로 단축
필요한 API Key
| API | 용도 | 비용 |
|---|---|---|
| Claude API | 블로그 콘텐츠 생성 | $5 무료 크레딧 |
| Google Gemini API | 이미지 생성 | 무료 티어 |
| 위키독스 API | 블로그 포스팅 | 무료 |
8단계 워크플로우
- 사용자 입력 — n8n Form 트리거, topic(제목)과 contents(아이디어) 필드
- 클로드 API 호출 — HTTP Request(POST), Claude API에 블로그 작성 요청
- JSON 파싱 — Code 노드(JavaScript), AI 응답에서 title/content/tags/image_prompt 추출
- 블로그 생성 — HTTP Request(POST), 위키독스 API로 빈 블로그 생성 → ID 획득
- 이미지 생성 — Google Gemini 노드, image_prompt 기반 썸네일 생성 (4번과 병렬 실행)
- 이미지 업로드 — HTTP Request, Form Data로 이미지 파일 업로드
- 블로그 수정 — HTTP Request(PUT), 제목+내용+이미지 URL로 블로그 완성
- 결과 출력 — Form Ending 노드, 완료 메시지와 블로그 ID/URL 표시
핵심 코드
// JSON 파싱 (Code 노드)
const text = $input.first().json.content[0].text;
const cleaned = text.replace(/```json\n?/g, '').replace(/```\n?/g, '');
const parsed = JSON.parse(cleaned);
return [{
json: {
title: parsed.title,
content: parsed.content,
tags: parsed.tags,
image_prompt: parsed.image_prompt
}
}];
표현식 참조 예시
{{ $json.topic }}— 사용자 입력의 블로그 제목{{ $('JSON 파싱').item.json.image_prompt }}— 특정 노드의 출력 참조{{ $('블로그 생성').item.json.id }}— 블로그 ID 참조
Claude Code로 n8n 수정하기 (부록)
- MCP 서버 설정으로 AI 채팅으로 워크플로우 직접 생성/수정
- n8n 스킬 설치로 전문적인 워크플로우 구축 지원
- 문제 해결 — API URL/Key 확인, 스킬 설치 확인, 웹 인터페이스에서 수동 테스트
다음 단계
- 프롬프트 조정으로 콘텐츠 품질 개선
- 다중 이미지 생성 추가
- 뉴스 요약 이메일 자동화
- 스케줄링과 웹훅 활용
- 에러 처리와 조건문 학습
사전 준비: SEO 인프라 구축
검색엔진에 등록하기 전에, 크롤러가 사이트를 찾고 읽을 수 있는 인프라를 먼저 구축해야 합니다.
1. robots.txt 생성
크롤러에게 "어디를 방문해도 되는지" 알려주는 파일입니다.
파일 위치: app/robots.ts
import { MetadataRoute } from 'next';
export default function robots(): MetadataRoute.Robots {
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://www.geo-aio.com';
return {
rules: [
{
userAgent: '*',
allow: '/',
disallow: ['/api/', '/admin/', '/settings/', '/mypage/'],
},
// AI 크롤러 명시적 허용
{ userAgent: 'GPTBot', allow: '/' },
{ userAgent: 'ClaudeBot', allow: '/' },
{ userAgent: 'Google-Extended', allow: '/' },
{ userAgent: 'PerplexityBot', allow: '/' },
{ userAgent: 'Amazonbot', allow: '/' },
],
sitemap: `${siteUrl}/sitemap.xml`,
};
}
핵심 포인트:
/api/,/admin/등 비공개 경로는 차단- GPTBot, ClaudeBot 등 주요 AI 크롤러를 명시적으로 허용
- sitemap.xml 위치를 안내
확인 방법: 배포 후 https://사이트주소/robots.txt 접속
2. sitemap.xml 생성
크롤러에게 "사이트에 어떤 페이지들이 있는지" 알려주는 파일입니다.
파일 위치: app/sitemap.ts
import { MetadataRoute } from 'next';
export default function sitemap(): MetadataRoute.Sitemap {
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://www.geo-aio.com';
const now = new Date();
return [
{ url: siteUrl, lastModified: now, changeFrequency: 'weekly', priority: 1.0 },
{ url: `${siteUrl}/blog`, lastModified: now, changeFrequency: 'daily', priority: 0.9 },
{ url: `${siteUrl}/introduction`, lastModified: now, changeFrequency: 'monthly', priority: 0.8 },
{ url: `${siteUrl}/pricing`, lastModified: now, changeFrequency: 'monthly', priority: 0.7 },
{ url: `${siteUrl}/community`, lastModified: now, changeFrequency: 'weekly', priority: 0.6 },
{ url: `${siteUrl}/resources`, lastModified: now, changeFrequency: 'weekly', priority: 0.6 },
{ url: `${siteUrl}/manual`, lastModified: now, changeFrequency: 'monthly', priority: 0.5 },
];
}
핵심 포인트:
- 공개 페이지만 포함 (로그인 필요 페이지 제외)
- priority: 홈페이지 1.0 > 블로그 0.9 > 소개 0.8 순
- changeFrequency: 블로그는 daily, 소개/가격은 monthly
3. 메타태그 추가 (layout.tsx)
검색엔진과 SNS에서 사이트 정보를 올바르게 표시하기 위한 메타데이터입니다.
파일 위치: app/layout.tsx
export const metadata: Metadata = {
title: "GEOAIO - AI 콘텐츠 최적화 대시보드",
description: "AI Overview 및 Generative Engine 최적화를 위한 콘텐츠 분석 도구",
metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL || 'https://www.geo-aio.com'),
verification: {
google: process.env.NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION,
other: {
'naver-site-verification': process.env.NEXT_PUBLIC_NAVER_SITE_VERIFICATION
? [process.env.NEXT_PUBLIC_NAVER_SITE_VERIFICATION] : [],
},
},
openGraph: {
type: 'website', locale: 'ko_KR', siteName: 'GEO-AIO',
title: 'GEOAIO - AI 콘텐츠 최적화 대시보드',
description: 'AI Overview 및 Generative Engine 최적화를 위한 콘텐츠 분석 도구',
},
robots: { index: true, follow: true, googleBot: { index: true, follow: true } },
};
4. 환경변수 설정
.env.local (로컬 개발용):
NEXT_PUBLIC_SITE_URL=https://www.geo-aio.com
NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION=인증코드
NEXT_PUBLIC_NAVER_SITE_VERIFICATION=인증코드
Vercel 환경변수 (배포용):
- Vercel 대시보드 > Settings > Environment Variables
- 위 3개 변수를 동일하게 추가
- Environment: All (Production, Preview, Development) 선택
.env.local은 로컬 전용이므로, Vercel에도 반드시 추가해야 배포 시 반영됩니다.
5. 빌드 및 배포
# 빌드 확인
npx next build
# 빌드 결과에서 확인:
# ○ /robots.txt ← 정적 생성 확인
# ○ /sitemap.xml ← 정적 생성 확인
# Git 커밋 & 푸시 (Vercel 자동 배포)
git add app/robots.ts app/sitemap.ts app/layout.tsx
git commit -m "feat: add SEO infrastructure"
git push origin master
Google Search Console 등록
Google 검색에 사이트를 등록하고 사이트맵을 제출하는 절차입니다.
1단계: Search Console 접속 및 사이트 추가
- https://search.google.com/search-console 접속 (Google 계정 로그인)
- 좌측 상단 "속성 추가" 클릭
- "도메인" 선택 →
geo-aio.com입력 (www 없이)
2단계: 소유권 인증 (DNS TXT 레코드)
Google이 제공하는 TXT 레코드를 도메인 DNS에 추가합니다.
DNS 네임서버 확인:
nslookup -type=NS geo-aio.com 8.8.8.8
DNS 설정 방법 (가비아 기준):
https://dns.gabia.com로그인- 도메인 선택
- DNS 레코드 추가:
| 타입 | TXT |
| 호스트 | @ (또는 빈칸) |
| 값 | google-site-verification=인증코드 |
| TTL | 3600 (기본값) |
DNS 반영 확인 (수 분 소요):
nslookup -type=TXT geo-aio.com 8.8.8.8
결과에 google-site-verification=... 텍스트가 보이면 반영 완료.
Search Console에서 "확인" 버튼 클릭 → 소유권 인증 완료
3단계: 사이트맵 제출
- Search Console 좌측 메뉴 > "사이트맵" 클릭
- URL 입력:
https://www.geo-aio.com/sitemap.xml - "제출" 클릭
4단계: URL 색인 생성 요청
주요 페이지는 개별 색인 요청으로 빠르게 등록할 수 있습니다.
- Search Console > "URL 검사" 클릭
- 다음 URL을 하나씩 입력 후 "색인 생성 요청" 클릭:
https://www.geo-aio.com
https://www.geo-aio.com/blog
https://www.geo-aio.com/introduction
https://www.geo-aio.com/pricing
블로그 SSR 전환
크롤러가 블로그 콘텐츠를 읽을 수 있도록 서버사이드 렌더링으로 전환합니다.
왜 필요한가?
Next.js에서 'use client' 컴포넌트도 서버에서 초기 렌더링됩니다. 하지만 useEffect로 데이터를 가져오는 경우, 크롤러가 방문할 때 데이터가 비어 있는 HTML을 보게 됩니다.
| 변경 전 | 크롤러에게 "총 0개 포스트" (데이터 없음) |
| 변경 후 | 크롤러에게 "총 61개 포스트" (모든 제목/요약 포함) |
해결: 서버 컴포넌트 + 클라이언트 컴포넌트 분리
page.tsx (서버 컴포넌트 — 데이터 fetch):
// app/blog/page.tsx
import { createClient } from '@supabase/supabase-js';
import BlogClient from './BlogClient';
export const dynamic = 'force-dynamic'; // 매 요청마다 최신 데이터
async function getServerBlogData() {
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
);
const { data } = await supabase
.from('blog_articles')
.select('*')
.order('created_at', { ascending: false })
.limit(200);
// ... 데이터 가공
return { posts, categories };
}
export default async function BlogPage() {
const { posts, categories } = await getServerBlogData();
return <BlogClient initialPosts={posts} initialCategories={categories} />;
}
BlogClient.tsx (클라이언트 컴포넌트 — 인터랙티브 UI):
// app/blog/BlogClient.tsx
'use client';
import { useState } from 'react';
export default function BlogClient({ initialPosts, initialCategories }) {
const [posts] = useState(initialPosts);
// ... 탭 전환, 포스트 클릭 등 인터랙티브 로직
}
핵심 포인트
createClient:@supabase/supabase-js에서 직접 import (쿠키 기반 아닌 공개 데이터용)export const dynamic = 'force-dynamic': 매 요청마다 최신 데이터 렌더링- 빌드 시
/blog이ƒ (Dynamic)으로 표시되면 성공
# 빌드 결과 확인
├ ƒ /blog ← Dynamic (서버 렌더링) ✅
├ ○ /pricing ← Static (정적 생성)
등록 후 확인 및 유지보수
색인 반영 일정과 정기 확인 사항, AI 인용 확률을 높이는 방법입니다.
색인 반영 예상 일정
| 1~3일 | Google 크롤링 시작, 일부 페이지 색인 |
| 1~2주 | 주요 페이지 검색 노출 시작 |
| 2~4주 | Search Console에 실적 데이터 표시 (클릭, 노출) |
| 즉시~수일 | Perplexity에서 검색 가능 (실시간 크롤링) |
정기 확인 사항 (주 1회)
Google Search Console
- 색인 생성 현황: 몇 개 페이지가 색인되었는지
- 크롤링 오류: 404, 서버 에러 등
- 실적: 검색 노출 수, 클릭 수, 평균 게재순위
네이버 서치어드바이저
- 수집 현황: 페이지 수집 성공/실패
- 사이트 진단: SEO 문제점 리포트
새 페이지 추가 시
app/sitemap.ts에 새 경로 추가- 배포
- Google Search Console > URL 검사 > 색인 생성 요청
AI 인용 확률을 높이는 5가지 방법
- 독창적 데이터 포함 — 자체 조사, 실험 결과, 사례 분석
- 외부 백링크 확보 — 브런치, 링크드인 등에서 사이트 URL 언급
- E-E-A-T 강화 — 저자 정보, 전문 자격, 실제 경험 데이터 포함
- 구조화된 FAQ/How-to 형식 — AI가 답변으로 채택하기 쉬운 구조
- 꾸준한 발행 — 도메인 권위 축적
생성/수정된 파일 및 환경변수 목록
검색엔진 등록 과정에서 생성 또는 수정된 모든 파일과 환경변수입니다.
파일 목록
| 파일 | 설명 | 구분 |
|---|---|---|
app/robots.ts |
AI 크롤러 허용 robots.txt | 신규 |
app/sitemap.ts |
동적 사이트맵 생성 (7개 페이지) | 신규 |
app/layout.tsx |
Google/네이버 인증 메타태그, OpenGraph, robots | 수정 |
app/blog/page.tsx |
블로그 SSR 서버 컴포넌트 | 수정 |
app/blog/BlogClient.tsx |
블로그 클라이언트 컴포넌트 | 신규 |
public/naver*.html |
네이버 소유확인 파일 | 신규 |
.env.local |
사이트 URL, Google/네이버 인증 코드 | 수정 |
환경변수 목록
| 변수명 | 값 | 설정 위치 |
|---|---|---|
NEXT_PUBLIC_SITE_URL |
https://www.geo-aio.com | .env.local + Vercel |
NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION |
Google 인증 코드 | .env.local + Vercel |
NEXT_PUBLIC_NAVER_SITE_VERIFICATION |
네이버 인증 코드 | .env.local + Vercel |
DNS 네임서버 확인 방법
# 도메인의 DNS가 어디서 관리되는지 확인
nslookup -type=NS geo-aio.com 8.8.8.8
# 결과 예시:
# geo-aio.com nameserver = ns.gabia.co.kr → 가비아에서 DNS 관리 중
스킬 목록
Claude Code에서 사용할 수 있는 커스텀 스킬(슬래시 커맨드) 모음입니다. 복사 버튼을 클릭하면 해당 스킬의 MD 파일 전체 내용이 클립보드에 복사됩니다.
웹 디자인 분석기
웹사이트 URL을 입력하면 디자인 시스템, 컬러, 레이아웃, 타이포그래피, 반응형, 접근성을 자동 분석합니다.
실시간 디자인 분석
분석할 웹사이트 URL을 입력하고 '분석 시작' 버튼을 클릭하세요. CORS 프록시를 통해 HTML/CSS를 가져와 클라이언트에서 분석합니다.
📊 분석 기록 0건
⚡ Supabase 연동추출된 컬러 팔레트
사용된 폰트
✓ 강점
⚠ 개선 필요
★ 최적화 제안
메뉴 & 레이아웃 디자인 분석
현재 사이트의 UI/UX 구조를 분석하고, 각 영역별 강점과 개선 가능한 최적화 아이디어를 정리했습니다.
backdrop-filter: blur(20px) + 85% 투명도 조합이 세련된 깊이감 제공. 스크롤 시에도 콘텐츠와 자연스럽게 블렌딩되면서 가독성 유지.
translateY(-4px) + 그림자 확산, 버튼 복사 완료 시 색상 전환 피드백 등 세밀한 인터랙션이 프리미엄 UX 경험을 제공. 모든 트랜지션이 0.2s ease로 일관됨.
repeat(5, 1fr) 그리드를 사용해 중간 해상도(1024~1280px)에서 카드가 지나치게 좁아짐. repeat(auto-fit, minmax(260px, 1fr))로 변경하면 모든 뷰포트에서 자연스러운 리플로우 가능.
:focus-visible 스타일이 정의되지 않아 키보드 네비게이션 시 활성 요소를 식별할 수 없음. 각 인터랙티브 요소에 브랜드 컬러 기반 아웃라인 링을 추가하면 접근성(WCAG 2.1 AA) 준수 가능.
text-overflow: ellipsis로 긴 설명이 잘리는데, 모바일에서는 전체 설명을 볼 방법이 없음. 호버 시 툴팁 표시 또는 2줄 클램프(-webkit-line-clamp: 2)로 변경하면 더 많은 정보 노출 가능.
:root 변수셋만 교체하면 됨. 상단 네비게이션에 작은 토글 스위치 추가로 사용자 선호 테마 지원.
grid-template-columns: repeat(2, 1fr)로 배치. 한 화면에 더 많은 스킬이 보이고 스크롤이 줄어듦. 1200px 이상에서 자동 적용.
position: fixed + scroll-behavior: smooth로 3줄 CSS + 5줄 JS면 구현 완료.@keyframes pulse + 그라디언트 오버레이로 10줄 CSS면 구현 가능.Ctrl+K로 열 수 있게 추가. 현재 섹션별 검색을 통합하여 어디서든 빠르게 원하는 스킬/섹션/키워드로 점프 가능.IntersectionObserver로 스크롤 위치에 따라 사이드바와 상단 네비 버튼의 활성 상태를 자동 동기화. 현재 위치를 항상 정확하게 반영.프로젝트 폴더 탐색기
C:\01 클로드코드 내 93개 프로젝트 폴더를 카테고리별로 탐색합니다. 카드를 클릭하면 해당 목록이 아래에 표시됩니다.
10 — Vibe Coding OS / 플랫폼
바이브코딩 OS 핵심 도구, 매뉴얼, Claude, 플랫폼 프로젝트| 번호 | 폴더명 | 설명 |
|---|---|---|
| 03-01 | aitutorhub 심재우대표 - AI솔루션 포트폴리오 | AI 솔루션 포트폴리오 사이트 |
| 03-02 | Shim Platform Index | 심재우 플랫폼 인덱스 |
| 03-03 | AX비즈그룹 | AX 비즈니스 그룹 포탈 |
| 03-04 | AX덴탈그룹 | AX덴탈그룹 포탈 |
| 10 | Vibe Coding OS | 바이브코딩 운영체제 메인 |
| 10-00 | Vibe Coding OS - 정치솔루션 | 정치 특화 솔루션 |
| 10-00-01 | 오세훈 플랫폼 | 오세훈 시장 전용 플랫폼 |
| 10-00-02 | 정치인 표준 플랫폼 | 정치인 표준 템플릿 플랫폼 |
| 10-01 | 바이브코딩 매뉴얼(집필용) | 바이브코딩 매뉴얼 집필 원고 |
| 10-02 | 바이브코딩 깃 사용법 | Git/GitHub 워크플로우 가이드 |
| 10-03 | 메이크 매뉴얼 | Make(Integromat) 자동화 매뉴얼 |
| 10-04 | 클로드코드 오케스트레이션 | Claude Code 멀티에이전트 오케스트레이션 |
| 10-05 | Claude | Claude AI 관련 리소스 |
| 10-06 | UI & 유틸리티 쇼케이스 | UI 컴포넌트 및 유틸리티 데모 |
| 10-7 | AX교육플랫폼 | AX 교육 플랫폼 (clone 포함) |
| 10-08 | n8n - AI Super Platform | n8n 기반 AI 자동화 슈퍼 플랫폼 |
| 10-9 | 미로피쉬 | 미로피쉬 프로젝트 |
| 10-10 | 미로피쉬-선웅규 | 선웅규 대표 미로피쉬 |
| 10-11 | 대한민국 AI 로드맵 2026 | 대한민국 AI 로드맵 프로젝트 |
20 — 치과 AI 솔루션
치과 산업 특화 AI 솔루션 프로젝트| 번호 | 폴더명 | 설명 |
|---|---|---|
| 20-01 | AX덴탈그룹 | AX덴탈그룹 메인 프로젝트 |
| 20-02 | AX BIZ 그룹 | AX 비즈니스 그룹 |
| 20-03 | 덴탈클리닉파인더 | 치과 병원 검색 플랫폼 |
| 20-04 | 덴탈클리닉파인더 프랜차이즈 | 프랜차이즈 치과 연계 시스템 |
| 20-05 | 치과 AI 솔루션 통합 | 치과 광고/마케팅 AI 통합 솔루션 |
| 20-06 | 치과 병원 진단지 분석 앱 | AI 기반 치과 진단지 분석 |
| 20-07 | 치과 광고 콘텐츠 생성 - 구버전 | 치과 마케팅 콘텐츠 (구버전) |
| 20-08 | 치과 카드뉴스 생성기 | 치과 카드뉴스 자동 생성 도구 |
| 20-09 | 디지털스마일치과 | 디지털스마일치과 프로젝트 |
| 20-10 | 개원의 빌드업 프로그램 | 치과 개원의 성장 지원 프로그램 |
| 20-11 | 구강 방문케어 센터 | 방문형 구강 케어 서비스 |
| 20-12 | 치과 개업 의사결정 맵 | 치과 개업 의사결정 지원 도구 |
| 20-13 | 대한치과위생사 유은미 교수 | 유은미 교수 협업 프로젝트 |
| 20-14 | 덴탈클리닉파인더 아카데미 - 복사본 | 아카데미 복사본 (정리 필요) |
| 20-14 | 치과 카드뉴스 생성기 | 카드뉴스 생성기 (중복 번호) |
| 20-15 | 디지털스마일치과 | 디지털스마일치과 (추가 버전) |
| 20-16 | 화이트서울치과 | 화이트서울치과 프로젝트 |
30 — AI 교육/출판
AI 기반 교육 콘텐츠와 출판 프로젝트| 번호 | 폴더명 | 설명 |
|---|---|---|
| 30-00 | AI노벨문해력5 02 - 복사본 | 복사본 (정리 필요) |
| 30-01 | AI노벨문해력5 v1 | AI 소설 문해력 교육 v1 |
| 30-02 | AI노벨문해력5 v2 | AI 소설 문해력 교육 v2 (개선판) |
| 30-03 | AI노벨문해력5 앱 학교용 | 학교 교육용 AI노벨문해력 앱 |
| 30-04 | AITutorHub 통합 | AI 튜터링 허브 통합 플랫폼 |
| 30-05 | AITutorHub 포트폴리오 | AITutorHub 포트폴리오 사이트 |
| 30-06 | AUTOBOOK STUDIO | AI 자동 도서 제작 스튜디오 |
| 30-07 | 오토북 엔진 | AUTOBOOK 코어 엔진 |
| 30-08 | Book Store | 온라인 서점 플랫폼 |
| 30-09 | 집필 | 도서 집필 프로젝트 |
| 30-10 | 어머니의 손맛 레시피 | 레시피 콘텐츠 출판 프로젝트 |
| 30-11 | 큐매쓰(질문수학) | 질문 기반 수학 교육 플랫폼 |
| 30-11-02 | 큐매쓰 2 / 큐매쓰 3 | 큐매쓰 후속 버전들 |
| 30-12 | future_competency_ai_lab | 미래 역량 AI 연구소 |
| 30-13 | RQTDW | RQTDW 교육 프로젝트 |
| 30-14 | K-AI출판허브 | 한국 AI 출판 허브 플랫폼 |
| 32 | AUTOBOOK STUDIO (오토북 스튜디오) - 복사본 | 복사본 (정리 필요) |
40 — 미디어/콘텐츠
미디어 제작, 라디오카페, 영상/이미지 생성| 번호 | 폴더명 | 설명 |
|---|---|---|
| 40-01 | 클라라 라디오카페 | 클라라 AI 라디오카페 |
| 40-02 | 스타벅스 라디오카페 | 스타벅스 테마 라디오카페 |
| 40-03 | 더불어민주당 라디오카페 | 정당 라디오카페 |
| 40-04 | 오세훈 서울시장 라디오카페 | 서울시장 라디오카페 |
| 40-05 | 장경동 목사 중문교회 | 교회 라디오카페 |
| 40-06 | 텍스트 2 비디오 생성 | 텍스트 기반 영상 자동 생성 |
| 40-07 | PDF 슬라이드 편집기 | PDF 기반 슬라이드 제작 도구 |
| 40-08 | Ad Gen Engine | 광고 콘텐츠 자동 생성 엔진 |
| 40-09 | 씽크드로우 AI | AI 기반 드로잉/이미지 생성 |
| 40-10 | GEO-AIO 콘텐츠 | GEO-AIO 콘텐츠 |
| 40-11 | GEO-AIO | GEO-AIO 메인 플랫폼 |
| 41 | Claude Code Manual | 이 매뉴얼 사이트 (현재 페이지) |
50 — 비즈니스/스타트업
비즈니스 솔루션, 스타트업, 선거, 특허, 내비| 번호 | 폴더명 | 설명 |
|---|---|---|
| 50-01 | 스타트업파인더 | 스타트업 검색/매칭 플랫폼 |
| 50-02 | Sales Spark | 영업 자동화 솔루션 |
| 50-03 | M&A BuySell | M&A 매매 중개 플랫폼 |
| 50-04 | OPS & AI-BM | 운영 및 AI 비즈니스 모델 |
| 50-04 | ops-website | OPS 웹사이트 (중복 번호) |
| 50-05 | AI선거솔루션 | AI 기반 선거 캠페인 솔루션 |
| 50-06 | 선거 리포트 | 선거 분석 리포트 시스템 |
| 50-07 | BJ | BJ 프로젝트 |
| 50-07 | 선거 차량 이동 최적화 | 선거 유세 차량 경로 최적화 |
| 50-08 | 시니어 1인 창업 | 시니어 대상 1인 창업 가이드 |
| 50-09 | Patent_VibeCoding_Process | 바이브코딩 특허 프로세스 |
| 50-09 | 특허-저작권 솔루션 | 특허 및 저작권 관리 솔루션 |
| 50-10 | RQTDW AI트레이너 | AI 트레이닝 플랫폼 |
| 50-11 | 택시기사용 빈차 운행 AI내비 | 택시 빈차 운행 AI 내비게이션 |
| 50-12 | 화이어 내비 | 화이어 내비게이션 |
60 — 개인 클라이언트
개인 클라이언트 전용 프로젝트| 번호 | 폴더명 | 설명 |
|---|---|---|
| 60-01 | 선욱규 대표 | 선욱규 대표 프로젝트 |
| 60-01-1 | AX-On 플랫폼 | AX-On 플랫폼 (선욱규 대표 하위) |
| 60-02 | 이병목 대표 (미소미) | 미소미 이병목 대표 프로젝트 |
| 60-03 | 리젠메드컨설팅 | 리젠메드 컨설팅 |
| 60-03 | 이장춘 | 이장춘 프로젝트 (중복 번호) |
| 60-04 | 장석화 대표 브레인트러스트 | 브레인트러스트 장석화 대표 |
| 60-05 | 케르비시아 브루잉 수제맥주 | 수제맥주 브루어리 |
| 60-05-01 | 케르비시아 홈페이지-사업전략 및 투자제안서 | 케르비시아 사업전략/투자제안 |
| 60-05-02 | 소셜허브터널 홈페이지 | Social Hub Tunnel Vision |
기타 / 자료 / 임시
70~80번대, 자료 백업, 임시 폴더70~80번대 (신규 카테고리)
| 번호 | 폴더명 | 설명 |
|---|---|---|
| 70-01 | 공대생 할아버지, 미대생 할머니 | 라이프스타일 / 콘텐츠 프로젝트 |
| 80-01 | AI여행 플랫폼 | AI 기반 여행 서비스 플랫폼 |
자료 백업 폴더
| 번호 | 폴더명 | 설명 |
|---|---|---|
| 자료01 | RQTDW AI트레이너 | RQTDW 백업 자료 |
| 자료02 | 삼국지 | 삼국지 프로젝트 자료 |
| 자료03 | 특허-저작권 | 특허/저작권 백업 자료 |
| 자료04 | .claude | Claude 설정 백업 |
| 자료05 | 케르비시아 브루잉 수제맥주 | 케르비시아 백업 자료 |
| 자료06 | 선웅규 대표 | 선웅규 대표 백업 자료 |
| 자료07 | OPS & AI-BM | OPS 백업 자료 |
| 자료08 | 소셜미디어 마케팅 자료 | 소셜미디어 마케팅 자료 모음 |
기타/임시 폴더
| 폴더명 | 설명 |
|---|---|
| 사이버장례 플랫폼 | 사이버 장례 서비스 플랫폼 |
| autorun | 자동 실행 스크립트 |
| pages | 페이지 자산 |
| !!OXz, !!xtHT, !$cMdO 등 | 임시/시스템 생성 폴더 (정리 가능) |
관리자 비밀번호 목록
각 플랫폼별 관리자 계정 정보를 정리하여 빠르게 확인합니다.
| 플랫폼명 | 폴더번호 | 시스템관리자 ID | 회원 ID | 비번 | 캠프관리자 비번 | 작업 |
|---|
01. 시작 가이드: 이 책을 끝까지 읽는 법
처음부터 모든 용어를 외우려 하지 않아도 됩니다. 기술 개념을 일상 장면으로 바꿔 이해하는 것이 핵심입니다.
어려운 개념 → 생활 비유
| 용어 | 생활 비유 |
|---|---|
| LLM | 똑똑하지만 회사 규칙을 모르는 신입사원 |
| 하네스 | 신입사원이 안정적으로 일할 수 있게 해주는 사무실·도구·규칙·검토 체계 |
| 컨텍스트 창 | 지금 책상 위에 펼쳐 놓은 자료 |
| 장기 메모리 | 서랍, 창고, 회의록, 단골 카페의 취향 기록 |
| 도구 호출 | 직원이 전화, 검색, 계산기, 파일함을 사용하는 행동 |
| Hook | 문을 열면 자동으로 켜지는 센서등 |
| Eval | 운전면허 시험, 품질검사표 |
| Sandbox | 아이가 모래놀이하는 안전한 울타리 |
목적별 추천 읽기 순서
| 목적 | 추천 순서 |
|---|---|
| AI 에이전트 처음 알고 싶다 | 시작 가이드 → 용어 읽기법 → 제1~3장 |
| 바로 실습하고 싶다 | 실습 준비 → 제1장 → 각 장 실습 |
| 회사에 AI 도입해야 한다 | 머리말 → 제1장 → 제10장 → 제12장 → 제14장 |
| 실제 하네스를 써보고 싶다 | 제2장 → 제4장 → 제6장 → 제7장 |
| 강의/워크숍 운영 | 목차 → 실습 준비 → 제1장 → 제11~12장 |
02. 목차
5부 구성으로 이해·구현·운영·설계·실습을 단계적으로 다룹니다.
| 구분 | 범위 | 핵심 질문 |
|---|---|---|
| 들어가기 | 시작 가이드 ~ 실습 준비 | 학습 방법 및 준비 절차 |
| 1부 기초 | 제1~3장 | 하네스의 정의와 기본 개념 |
| 2부 도구·구현 | 제4~7장 | OpenAI, Claude, MCP 실무 활용 |
| 3부 평가·운영 | 제8~10장 | 장시간 작업·평가·안전 설계 |
| 4부 설계·사례 | 제11~14장 | 패턴·결정·메모리 소유권 |
독자별 추천 경로
- 처음 접하는 사람 → 제1~3장에서 기본 개념 학습
- 실무자 → 제10, 12, 14장으로 운영 위험과 도입 판단 확인
- 개발자 → 제4~8장으로 구현 흐름 파악
03. 책의 구성: 다섯 개의 길
"기술 백과처럼 넓게 다루지만, 처음 접하는 사람도 길을 잃지 않도록 다섯 개의 흐름으로 묶었다."
- 1단계 이해의 길 (1~3장) — 하네스의 유래, 에이전트 작동 원리, 프롬프트와 컨텍스트. "AI가 똑똑한데 왜 자꾸 실수할까?"
- 2단계 구현의 길 (4~7장) — 도구, MCP, OpenAI, Claude. "무엇을 연결하고, 어떻게 제한하고, 어떤 파일을 준비할 것인가?"
- 3단계 운영의 길 (8~10장) — 장시간 작업, 평가, 안전, 거버넌스. 데모가 아닌 실제 조직 활용에 초점.
- 4단계 판단의 길 (11~14장) — 실전 패턴, 설계 결정, 사례, 메모리 소유권. "우리 팀은 어떤 하네스를 선택해야 하는가?"
- 5단계 실습과 종합의 길 — 각 장 마지막 실습 + 부록 용어집·워크시트·메모리 운영 원칙.
04. 머리말
"이제 중요한 것은 '모델에게 무엇을 시킬 수 있는가'가 아니라 '모델이 일하는 환경을 어떻게 설계할 것인가'다"
시대 변화
| 시점 | AI의 역할 |
|---|---|
| 2023년 | 질문 응답 챗봇 |
| 2025년 이후 | 웹 검색, 파일 조작, 코드 수정, DB 조회, 브라우저 제어, 테스트 실행, 보고서 작성이 가능한 "도구 활용 작업자" |
핵심 비유: 신입사원 아날로지
아무리 능력 있는 신입사원도 규정, 도구, 권한, 문서 위치, 보고 양식, 결재 절차, 품질 기준, 보안 규칙 없이는 제대로 일하지 못한다. "알아서 잘해"가 아닌 구체적 시스템이 필요하다.
주요 학습 목표
- AI 활용의 패러다임 변화 이해
- 실무에 필요한 통합 요소(지시+자료+도구+권한+검사 체계) 이해
- 책의 성격 인식: 기술 설명서가 아닌 환경 설계 안내서
05. 이 책을 읽는 방법
세 가지 읽기 방식과 대상별 학습 수준 가이드
세 가지 읽기 방식
- 개념서처럼 읽기 — 비유와 설명으로 "AI 에이전트가 실수하는 이유" 이해
- 실무 매뉴얼처럼 읽기 — AGENTS.md, CLAUDE.md, progress.md 등 템플릿을 프로젝트에 직접 적용
- 강의 교재처럼 읽기 — 핵심 개념→비유→도표→실습→요약 구조로 진행
대상별 학습 수준 가이드
| 상황 | 여기까지면 충분 | 더 해보고 싶다면 |
|---|---|---|
| 일반 사용자 | 각 장의 핵심 비유와 한 장 요약 | 마지막 실습 질문을 일상에 대입 |
| 실습 중심 | harness-lab으로 청사진 작성 | 청사진을 실행 하네스로 구현 |
| 실무 도입자 | 권한, 검증, 기록, 사람 승인 지점 표시 | 실제 업무 절차 연결 |
| 개발자 | 파일 구조, Skill, Agent, 평가 흐름 적용 | 테스트와 회귀 평가까지 반복 운영 |
| 강사/스터디 운영자 | 비유, 도표, 실습 순서로 설명 가능 | 부록 C 워크시트로 수강생 점검 |
06. 처음 접하는 사람을 위한 용어 읽기법
낯선 용어를 만날 때마다 "이것이 회사, 주방, 병원에서는 무엇과 비슷할까?"라고 자문하세요.
| 용어 | 일상 비유 | 한 문장 의미 |
|---|---|---|
| LLM | 기억이 제한된 신입사원 | 말을 이해하고 생성하는 모델 |
| 프롬프트 | 업무 지시서 | 모델에게 무엇을 하라고 말하는 문장 |
| 컨텍스트 창 | 책상 위 펼쳐진 자료 | 모델이 한 번에 볼 수 있는 정보 공간 |
| RAG | 사서가 필요한 책을 찾아 펼쳐 주는 방식 | 답변 전 관련 문서를 검색해 컨텍스트에 넣는 방식 |
| MCP | AI용 멀티탭 / USB-C 포트 | 여러 외부 도구를 표준 방식으로 연결하는 규격 |
| Guardrail | 도로의 가드레일, 공항 보안검색대 | 위험한 행동을 막거나 확인하는 안전 장치 |
| Handoff | 고객센터에서 전문 부서로 넘기는 일 | 한 에이전트가 다른 에이전트에게 작업을 넘기는 것 |
| Hook | 문을 열면 켜지는 센서등 | 특정 순간에 자동으로 실행되는 절차 |
| Compaction | 긴 회의록을 요약본으로 줄이는 일 | 오래된 대화를 압축해 컨텍스트를 아끼는 방식 |
| Artifact | 작업 결과를 증명하는 영수증과 사진 | 계획서, 스크린샷, 테스트 결과처럼 검토 가능한 산출물 |
07. 실습 준비: harness-lab 설치와 사용법
harness-lab은 AI 하네스 설계를 단계적으로 실습할 수 있게 도와주는 도구입니다.
Windows 설치
# WSL 설치 (PowerShell 관리자 권한)
wsl --install
# Ubuntu 기본 도구
sudo apt update && sudo apt install -y git curl
# Claude Code 설치
npm install -g @anthropic-ai/claude-code
# 단축 명령 등록 (.bashrc에 추가)
alias cc="claude --dangerously-skip-permissions"
harness-lab 내려받기
git clone https://github.com/jikime/harness-lab.git
cd harness-lab
# 개인용 스킬 설치
mkdir -p ~/.claude/skills
cp -R skills/harness-lab ~/.claude/skills/
청사진 vs 실행 하네스
| 단계 | 무엇을 하나 | 언제 쓰면 좋은가 |
|---|---|---|
| 청사진 | Agent, Skill, Orchestrator, Test, Evolution의 설계안 | 개념 이해 및 실습 결과 검토 시 |
| 실행 하네스 | 승인 후 실제 Agent와 Skill 구성 생성 | 같은 일을 반복해서 실제로 수행할 때 |
초보자 오류 대응
| 오류 메시지 | 원인 | 해결 |
|---|---|---|
command not found: claude | Claude Code 미설치 | 터미널 재시작 후 claude 실행 |
command not found: git | Git 미설치 | sudo apt install -y git |
/harness-lab이 보이지 않음 | 스킬 미설치 | ls ~/.claude/skills/harness-lab 확인 |
08. 제1장. 하네스의 탄생
"원시 LLM은 운영체제 없는 CPU다" — 모델 자체가 아닌 실행 환경이 핵심입니다.
컴퓨터 구조로 보는 하네스
| 컴퓨터 구조 | LLM 에이전트 | 설명 |
|---|---|---|
| CPU | LLM, 모델 가중치 | 계산 엔진, 혼자서는 일 미완성 |
| RAM | 컨텍스트 창 | 책상 위 자료, 공간 제한 있음 |
| 하드디스크 | 벡터DB, 문서, 파일 | 장기 저장소 |
| 장치 드라이버 | 도구 통합, MCP, API | 외부 세계 접촉 통로 |
| 운영체제 | 에이전트 하네스 | 메모리·도구·권한·오류·검증 관리 |
| 애플리케이션 | 에이전트 행동 | 사용자가 경험하는 결과 |
AI 하네스 최소 구성요소 5가지
- 목표 문서 — 무엇을 해야 하는지, 무엇을 하지 말아야 하는지
- 컨텍스트 지도 — 필요한 문서와 데이터의 위치
- 도구 목록 — 사용 가능한 도구와 금지된 도구 구분
- 검증 방법 — 테스트나 체크리스트, 결과 확인 방식
- 기록 방식 — 수행 내용 문서화, 다음 세션으로의 기억 이전
메모리 유형
| 유형 | 의미 | 비유 |
|---|---|---|
| Working Context | 지금 작업에 필요한 상태 | 책상 위 펼쳐둔 자료 |
| Semantic Knowledge | 의미 있는 지식과 개념 | 자주 참고하는 업무 창고 |
| Episodic Experience | 과거 경험과 사건 | 이전 회의록과 업무 이력 |
| Personalized Memory | 개인화된 기억 | 단골 가게의 취향 기억 |
09. 제2장. LLM 에이전트의 작동 원리
입력-판단-도구 사용-결과 읽기의 반복 루프가 에이전트의 핵심 작동 방식입니다.
7단계 Agent Loop
- 프롬프트 조립 — 시스템 지시, 도구 스키마, 메모리, 대화 기록, 사용자 요청 통합
- LLM 추론 — 최종 답변 / 도구 호출 / 다른 에이전트 handoff 중 결정
- 출력 분류 — 최종 답변 vs 도구 실행 요청 vs handoff 요청 구분
- 도구 실행 — 인자 검사, 권한 정책 확인, 샌드박스 실행
- 결과 패키징 — 도구 결과를 관찰 메시지로 변환
- 컨텍스트 업데이트 — 새 관찰, 파일 변경, 테스트 결과 반영
- 반복 또는 종료 — 최종 답변이면 종료, 조건에 따라 중단
ReAct vs Plan-and-Execute
| 방식 | 특징 | 사용 사례 |
|---|---|---|
| ReAct | 즉석에서 한 단계씩, 유연함 | 편의점 물 사기 같은 단순 작업 |
| Plan-and-Execute | 전체 계획 먼저, 실행자에게 분담 | 결혼식 준비 같은 복합 작업 |
하위 에이전트 오케스트레이션 3형태
| 형태 | 설명 | 주의점 |
|---|---|---|
| Fork | 부모 컨텍스트 복사해 별도 작업 | 결과 요약 필수 |
| Teammate | 별도 터미널/세션에서 동료처럼 작업 | 누가 뭘 했는지 기록 필요 |
| Worktree | 격리된 브랜치/작업공간에서 수정 | merge 및 충돌 해결 정책 필요 |
10. 제3장. 프롬프트와 컨텍스트 엔지니어링
세 가지 엔지니어링의 관계를 이해하면 하네스 설계의 전체 그림이 보입니다.
세 가지 엔지니어링의 관계
| 구분 | 핵심 질문 | 비유 |
|---|---|---|
| 프롬프트 엔지니어링 | 어떻게 말할 것인가? | 업무 지시서 쓰기 |
| 컨텍스트 엔지니어링 | 무엇을 보여 줄 것인가? | 책상 위 자료 정리 |
| 하네스 엔지니어링 | 어떤 환경에서 일하게 할 것인가? | 사무실·도구·승인·검사 체계 만들기 |
AGENTS.md 기본 템플릿
## 프로젝트 목표
이 프로젝트는 고객 문의를 빠르고 정확하게 분류하는 AI 도우미를 만든다.
## 작업 전 읽을 문서
- docs/product.md
- docs/policy.md
## 반드시 지킬 규칙
- 문서에 없는 내용은 추측하지 않는다.
- 고객 개인정보를 답변에 노출하지 않는다.
## 완료 기준
- 결과 요약 작성, 불확실한 항목 표시
컨텍스트 압축 전략
| 전략 | 설명 | 비유 |
|---|---|---|
| 압축(compaction) | 오래된 대화를 요약해 공간 확보 | 회의록 요약본 만들기 |
| JIT 검색 | 필요할 때만 grep/search로 읽음 | 창고 전체가 아니라 필요한 상자만 꺼내기 |
| 구조화 메모 | progress.md, feature_list.json으로 정리 | 인수인계 문서 작성 |
Lost in the Middle 현상: 중요 정보가 문서 중간에 있으면 성능 저하 → 중요 정보는 문서의 시작/끝에 배치하세요.
11. 제4장. 도구 엔지니어링과 MCP
도구가 에이전트의 손과 발입니다. 많이 주는 것이 항상 좋은 것은 아닙니다.
위험도별 도구 분류
| 위험도 | 도구 예시 | 원칙 |
|---|---|---|
| 낮음 | 파일 읽기, 문서 검색 | 자동 허용 가능 |
| 중간 | 파일 수정, 초안 작성 | 작업 후 확인 필요 |
| 높음 | 이메일 전송, 결제, 삭제, 배포 | 사람 승인 필수 |
MCP 정의
AI 애플리케이션이 외부 도구와 데이터 소스에 연결하기 위한 표준. "AI용 USB-C 포트"처럼 Jira, Sentry, PostgreSQL, Figma, Slack, Gmail 등과 연결 가능.
도구 범위 설계 순서
- 이 업무에 반드시 필요한 도구를 적는다
- 읽기 도구와 쓰기 도구를 분리한다
- 위험한 도구는 승인 필요로 표시한다
- 비슷한 도구는 하나로 합치거나 이름을 명확히 한다
- 장시간 작업에서는 단계별로 도구를 동적으로 열어 준다
12. 제5장. 평가 하네스와 신뢰성
AI 결과를 감으로 판단하지 않고 평가 케이스와 채점 기준으로 확인합니다.
3가지 검증 방식 비교
| 방식 | 예시 | 장점 | 한계 |
|---|---|---|---|
| 규칙 기반 | 테스트, 린터, 스키마 검사 | 형식 오류 감지 | 의미 품질 놓침 |
| 시각적·환경 | 스크린샷, DB 상태 확인 | 실제 상태 불일치 감지 | 검증 도구 준비 필요 |
| 추론 기반 | LLM 평가자, 리뷰 에이전트 | 어조, 논리, 의도 파악 | 지연시간, 비용 증가 |
하네스 힐클라이밍 루프
운영 trace 수집
→ 실패 사례를 eval case로 변환
→ 실패 유형 태그: 도구선택 / 컨텍스트누락 / 권한 / 검증부족
→ 하네스 수정: 프롬프트, 도구 설명, 권한, 검증, 컨텍스트
→ 재평가
→ holdout case로 과적합 확인
핵심 원칙: Guides(사전 제어) + Sensors(사후 교정)을 함께 가져야 합니다.
13. 제6장. OpenAI에서 하네스 구축하기
Responses API, Agents SDK, 도구, 평가, 추적, 권한까지 통합 설계합니다.
OpenAI 구성요소 대응표
| OpenAI 구성요소 | 하네스에서 하는 일 |
|---|---|
| Responses API | 모든 요청이 처음 들어오는 접수 창구 |
| Function calling | 캘린더, 메일, 예약 앱을 실제로 여는 행동 |
| Handoff | 전문 담당자에게 넘기는 일 |
| Guardrail | 결제·외부 발송·민감 정보 처리 전 확인 규칙 |
| Tracing | 누가 어떤 도구를 썼고 어떤 결과가 나왔는지 남기는 업무 일지 |
| Eval | 업무 정확성을 주기적으로 확인하는 점검표 |
Codex 하네스 부품 지도
| 구성요소 | 비유 | 하네스에서 하는 일 |
|---|---|---|
| AGENTS.md | 매장 운영 수칙 | 프로젝트 규칙·주의사항을 작업 전에 읽게 함 |
| Skill | 반복 업무 레시피 카드 | 자주 하는 작업 절차를 재사용 가능하게 묶음 |
| Subagent | 조사 담당자 | 독립적으로 처리할 일을 병렬로 맡기고 결과 회수 |
| Worktree | 별도 작업대 | 같은 프로젝트에서 여러 작업을 서로 방해하지 않고 진행 |
| Hook | 자동으로 켜지는 센서등 | 특정 시점에 검사·기록·승인·요약을 자동 실행 |
14. 제7장. Claude에서 하네스 구축하기
Claude Code를 "프롬프트 도구"가 아닌 "작업 환경 설계"로 이해하는 것이 핵심입니다.
CLAUDE.md 6가지 기본 영역
| 영역 | 포함 내용 | 비유 |
|---|---|---|
| 대화 방식 | 불필요한 인사말 제거, 불확실성 표시 | 대화 예절 |
| 변경 통제 | 큰 수정 전 확인, 요청 범위만 수정 | 허락받고 진행 |
| 기억과 연속성 | MEMORY.md, 세션 요약, 실패 기록 | 회의록과 실수 노트 |
| 개발 안전 | 관련 파일만 수정, 파괴적 작업 확인 | 공구함 사용 규칙 |
| 고위험 행동 차단 | 배포, DB 변경, 외부 전송 제한 | 현관 열쇠와 결제 카드 |
권한 설계
Read/Grep/Glob: allow
Edit/Write: ask
Bash: ask 또는 제한
삭제/배포: deny
.claude 폴더 구조
| 위치 | 역할 |
|---|---|
CLAUDE.md | 프로젝트 설명, 명령, 원칙 |
.claude/skills/ | 특정 작업의 Skill |
.claude/agents/ | subagent 정의 |
.claude/settings.json | 권한, 승인 흐름 |
~/.claude/ | 개인 선호와 습관 |
15. 제8장. 장시간 실행 에이전트와 세션 인계
"모델이 기억한다" → "다음 모델도 읽을 수 있게 남긴다"
Handoff Artifact 필수 포함 항목
목표 - 현재 프로젝트 목표
완료된 일 - 검증된 완료 항목
진행 중인 일 - 미완료 항목
다음 행동 - 다음 세션 우선 과제
주의점 - 실패 접근법, 위험 파일, 미해결 질문
파일별 역할
| 파일 | 역할 |
|---|---|
feature_list.json | 남은 작업을 구조화 |
progress.md | 시간순 작업 기록 설명 |
| git history | 실제 변경 이력 |
| test report | 검증된 항목 증거 |
세션 시작 플로우
pwd 확인 → progress.md 읽기 → git log 확인
→ feature_list.json에서 미완료 항목 선택
→ smoke test 실행
→ 한 기능 작업 → 테스트 및 상태 업데이트
→ commit + 진행 기록
16. 제9장. Generator-Evaluator 하네스
만드는 에이전트와 평가하는 에이전트를 분리하면 품질이 안정적으로 높아집니다.
3-Agent Architecture
- Planner — 큰 목표를 작은 sprint로 분해
- Generator — 코드, 문서, 보고서 등 결과물 생성 (창의성과 실행력)
- Evaluator — 비판적으로 검사, 결함 발견에 집중
Sprint Contract 예시
# Sprint Contract
## 이번 범위
사용자 검색 입력 UI와 빈 결과 상태 구현
## 제외 범위
고급 필터, 엑셀 다운로드, 권한 관리
## 완료 기준
- 검색어 입력 시 API 호출
- 결과 없음 메시지 표시
- 로딩 상태 표시
- 관련 테스트 통과
반복 개선 루프
- Planner가 작은 목표를 정한다
- Generator가 만든다
- Evaluator가 검사한다
- 실패하면 구체적 피드백을 준다
- Generator가 수정한다
- 통과하면 다음 sprint로 간다
17. 제10장. 안전, 거버넌스, 운영
"초심자는 '할 수 있는 일'이 아닌 '절대 하면 안 되는 일'부터 정의하세요."
권한 설계
| 행동 | 정책 |
|---|---|
| 문서 읽기·요약 | 허용 |
| 파일 수정 | 확인 요청 |
| 이메일 초안 | 허용 |
| 이메일 전송 | 사람 승인 |
| 결제·환불·파일 삭제 | 승인 또는 거부 |
| 배포 | 승인 |
운영 지표
| 지표 | 의미 |
|---|---|
| 성공률 | 작업이 완료 기준을 통과한 비율 |
| 평균 비용 | 작업당 토큰·도구 비용 |
| 재시도율 | 한 번에 성공하지 못한 비율 |
| 사람 개입률 | 승인 또는 수정이 필요한 비율 |
| 회귀율 | 이전 고장이 재발한 비율 |
사람 개입이 필요한 행동
- 금융 거래 (송금, 환불, 결제)
- 외부 커뮤니케이션 (고객 메시지 발송)
- 데이터 삭제 또는 변경
- 법적·의료적 판단
- 회사 평판에 영향을 주는 공개 게시
18. 제11장. 에이전틱 하네스 12가지 실전 패턴
"좋은 에이전트는 더 똑똑한 모델이 아닌 더 잘 설계된 작업 환경에서 나온다."
| # | 패턴 | 일상 비유 |
|---|---|---|
| 1 | 영구 지침 파일 — 핵심 규칙을 파일로 고정 | 냉장고에 붙인 집안 규칙 메모 |
| 2 | 범위별 문맥 조립 — 상황에 맞는 규칙만 선택 | 백화점 전체 규칙이 아닌 구역별 규칙 |
| 3 | 계층형 메모리 — 자주/가끔 쓰는 정보를 층으로 분리 | 책상 → 서랍 → 창고 |
| 4 | 메모리 정리 — 주기적으로 중복·모순 제거 | 계절마다 옷장 정리 |
| 5 | 점진적 문맥 압축 — 오래된 것부터 단계적으로 요약 | 최근 논의는 자세히, 오래된 것은 결론만 |
| 6 | 탐색-계획-실행 루프 — 살펴본 후 계획 세우고 마지막에 실행 | 숙련된 수리 기사는 먼저 상태를 확인 |
| 7 | 문맥 격리 하위 에이전트 — 다양한 업무를 별도 에이전트로 분리 | 회계·법무·디자인·개발 각 팀 담당 |
| 8 | 포크-조인 병렬성 — 독립 작업을 동시 실행 후 병합 | 가족이 각자 방 하나씩 청소 |
| 9 | 점진적 도구 확장 — 기본 세트로 시작해 필요 시 추가 | 초보 운전자에게 한 번에 모든 키를 주지 않기 |
| 10 | 명령 위험 분류 — 자동허용·확인요청·자동차단으로 분류 | 공항 보안 검사대의 기준 |
| 11 | 단일 목적 도구 설계 — 전용 도구로 분리 | 스위스 아미 나이프가 아닌 목적별 도구 |
| 12 | 결정론적 수명 주기 훅 — 반드시 일어나야 하는 절차를 자동 실행 | 세탁기가 자동으로 헹굼→탈수 실행 |
핵심 원칙: "매번 일어나야 하는 일은 지침이 아니라 훅에 있어야 한다."
19. 제12장. 하네스 설계의 7가지 결정과 3가지 역발상
"개발할 때 기분 좋은 선택과 운영에서 살아남는 선택은 자주 다르다."
7가지 설계 결정
| 결정 | 한쪽 선택 | 반대쪽 선택 |
|---|---|---|
| 에이전트 수 | 단일 에이전트 | 멀티 에이전트 |
| 추론 전략 | ReAct | 계획 후 실행 |
| 컨텍스트 전략 | 강한 압축 | 풍부한 컨텍스트 |
| 검증 방식 | 계산적 검증 | 추론적 검증 |
| 권한 설계 | 허용적 | 제한적 |
| 도구 범위 | 전체 상시 노출 | 단계별 최소 도구 |
| 하네스 두께 | 얇은 하네스 | 두꺼운 하네스 |
역발상 — Vercel d0 실증 데이터
| 지표 | 기존 | 개선 후 |
|---|---|---|
| 평균 실행 시간 | 274.8초 | 77.4초 (3.5배 빠름) |
| 성공률 | 80% | 100% |
| 토큰 사용량 | 약 102k | 약 61k (37% 감소) |
| 평균 단계 수 | 약 12단계 | 약 7단계 (42% 감소) |
"도구를 줄인 것이 아니라, 작업 환경을 읽기 좋게 만든 것이다."
20. 제13장. 아키텍처에서 에이전트-퍼스트 엔지니어링까지
"모델은 생각하는 엔진이다. 하네스는 그 엔진이 무엇을 보고, 무엇을 만지고, 어디서 멈추고, 어떻게 다시 시작하는지를 결정한다."
하네스 관점의 질문 전환
- "모델이 회사 정책을 반영하지 못했다" → 정책 문서가 컨텍스트에 있었는가?
- "도구를 잘못 사용했다" → 도구 설명이 명확했는가?
- "테스트 없이 완료했다고 말했다" → 검증 루프가 하네스에 있었는가?
초보자용 최소 하네스
progress.md— 매 세션 시작/종료 때 업데이트feature_list.json— 검증 가능한 완료 기준- git commit — 깨끗한 상태로 커밋
- 테스트/린터/브라우저 검증
환경 감사 체크리스트
- 에이전트가 알아야 하는데 읽을 수 없는 정보가 있는가?
- 자주 막히는 지점은 어디인가?
- 실수가 너무 늦게 발견되는가?
- 컨텍스트가 잡음으로 가득 찬가?
- 위험한 행동을 모델 판단에만 맡기는가?
- 세션이 바뀔 때마다 처음부터 다시 시작하는가?
21. 제14장. 하네스와 메모리 소유권
"기억을 소유하지 못하면 에이전트를 소유하기 어렵다."
네 가지 메모리 소유권 모델
- 내가 소유한 하네스 — 프롬프트, 도구, 단기/장기 메모리 모두 자체 관리. 구현 부담 크지만 이식성 높음
- 상태형 제공자 API — 장기 메모리는 자체 관리, 단기 스레드/압축은 제공자 내부
- 폐쇄형/블랙박스 하네스 — 메모리 형태, 요약 방식, 출처 불분명
- 관리형 하네스와 메모리 — 도구 실행부터 메모리까지 전부 제공자 인프라
메모리 스키마 예시
{
"memory_id": "mem_001",
"scope": "user|project|organization",
"type": "preference|decision|constraint|lesson|summary",
"content": "사용자는 보고서 첫머리에 3줄 요약을 선호한다.",
"source": "session_2026_04_26",
"confidence": 0.82,
"created_at": "2026-04-26T10:00:00Z"
}
폐쇄형 하네스 점검 질문
| 점검 질문 | 좋은 신호 | 위험 신호 |
|---|---|---|
| 메모리는 어디에 저장되는가 | 내 DB, 파일, 스토리지 | 제공자 내부 상태만 |
| 다른 모델로 옮길 수 있는가 | 모델 독립적 API 또는 파일 내보내기 | 특정 모델/스레드에 종속 |
| 삭제와 수정이 가능한가 | 사용자별 삭제, redaction | 삭제 정책 불분명 |
22. 맺음말: 하네스는 AI 시대의 업무 운영체제다
"AI를 잘 쓰는 사람은 질문을 잘 쓰는 사람에서, AI가 일하는 환경을 잘 설계하는 사람으로 바뀌고 있다."
5가지 핵심 요약
- AI 시대의 역량은 모델에게 좋은 문장을 쓰는 것 → 모델이 일할 환경을 설계하는 것으로 이동
- 하네스는 모델·도구·메모리·권한·검증·기록·안전장치를 묶어 실제 업무가 가능하게 만든다
- 잘 설계된 하네스는 AI를 가두는 장치가 아니라 AI가 더 안전하고 오래 일할 수 있게 해주는 업무 운영체제
- 초보자는 지시 파일·작은 도구·테스트·진행 기록부터 시작하면 된다
- 앞으로의 경쟁력은 "어떤 모델을 쓰는가"뿐 아니라 "그 모델에게 어떤 하네스를 제공하는가"에서 나온다
하네스의 구성
프롬프트(시작) + 컨텍스트(작업대) + 도구(손과 발) + 평가(눈) + 권한(안전벨트) + 로그(기억) + 구조(이 모든 것을 연결하는 하네스)
23. 부록 A. 하네스 엔지니어링 핵심 용어집
읽다가 막혔을 때 다시 책상으로 돌아오게 해주는 지도. 각 용어마다 일상 비유 / 쉬운 설명 / 초보자 주의점 3가지를 제공합니다.
주요 카테고리
- 기본 개념 — Model, Agent, Harness, Prompt, Context, Token
- 도구 및 기능 — Tool, Tool Calling, Skill, MCP, A2A, RAG, Vector DB, Embedding
- 메모리 및 평가 — Memory, Eval, Grader, Rubric
- 생성-평가 패턴 — Generator, Evaluator, Guardrail, Permission, Sandbox
- Claude 관련 구조 — CLAUDE.md, .claude/ 폴더, Plan Mode, /memory, /compact
- 에이전트 패턴 — ReAct, Plan-and-Execute, Prompt Chaining, Routing, Parallelization
- 설계 철학 — Harness Thickness, Black-box Harness, Harness Entropy
핵심 용어 빠른 참조
| 용어 | 비유 | 초보자 주의점 |
|---|---|---|
| Model | 엔진 | 모델만 바꾸면 문제가 해결된다고 생각하지 않는다 |
| Harness | 업무 운영체제 | 모델이 아니라 환경을 먼저 점검한다 |
| Subagent | 전문 담당자 | Fire-and-forget이라 공유 상태 없음을 주의 |
| Hook | 센서등 | 지침이 아니라 시스템으로 연결해야 반드시 실행됨 |
| Eval | 품질검사표 | 감이 아니라 케이스와 기준으로 측정한다 |
24. 부록 B. 참고문헌과 출처 지도
이 책이 참조한 공식 문서, 논문, 보안 프레임워크 목록입니다.
공식 문서
- OpenAI — Agents SDK, 도구 사용법, 함수 호출, MCP 커넥터, Codex CLI, Tracing, Handoff
- Anthropic — 효과적인 컨텍스트 엔지니어링, 에이전트용 도구 작성법, 장기 실행 에이전트 하네스, Evals, Claude Agent SDK
- Claude Code — 권한 설정, Hooks 워크플로우, 커스텀 서브에이전트, MCP 통합, 프로젝트 메모리, 스킬 확장
8개 핵심 논문
- ReAct: Synergizing Reasoning and Acting (Yao et al., 2022)
- Toolformer: Language Models Teaching Themselves to Use Tools (Schick et al., 2023)
- Reflexion: Verbal Reinforcement Learning (Shinn et al., 2023)
- Self-Refine: Iterative Refinement with Self-Feedback (Madaan et al., 2023)
- SWE-bench: Real-World GitHub Issues Resolution (Jimenez et al., 2023)
- SWE-agent: Agent-Computer Interfaces (Yang et al., 2024)
- AgentBench: Evaluating LLMs as Agents (Liu et al., 2023)
- Lost in the Middle: How Language Models Use Long Contexts (Liu et al., 2023)
보안·거버넌스
- OWASP Top 10 for Large Language Model Applications
- NIST AI Risk Management Framework (AI 600-1, 2024)
- Simon Willison: "Prompt injection" 시리즈
25. 부록 C. 함께 따라하는 하네스 실습 워크시트
자신의 업무를 하네스 관점으로 진단하고 소규모 하네스 v0.1을 설계합니다.
10개 하네스 계층 자가진단 (0~3점)
| 계층 | 평가 항목 |
|---|---|
| 목표 | 결과 명확성 |
| 지시 | 원칙과 금지사항 |
| 컨텍스트 | 자료 정리 |
| 메모리 | 작업 연속성 |
| 도구 | 사용 가능성 |
| 워크플로우 | 이해→계획→실행→확인 흐름 |
| 검증 | 확인 기준 |
| 가드레일 | 금지 행동 정의 |
| 로그·관찰 | 추적 가능성 |
| 사람 승인 | 개입 지점 |
최종 선언 문장
"나는 내 AI 업무에서 먼저 ___ 계층을 보강하고, ___을/를 모델 밖으로 꺼내 구조화하겠다."
26. 부록 D. AI의 기억을 설계하는 법
AI가 "기억한다"는 것은 실제로 하네스가 기록을 남기고 다시 꺼내 보여주는 운영 방식입니다.
저장하면 좋은 기억 vs 저장하지 않는 기억
| 저장하면 좋은 기억 | 저장하지 않는 편이 좋은 기억 |
|---|---|
| 반복되는 사용자 선호 | 오늘 한 번만 필요한 임시 요청 |
| 계속 지켜야 하는 규칙 | 이미 문서에 명확히 적힌 일반 정보 |
| 과거에 실패했던 접근과 이유 | 확인되지 않은 추측 |
| 보고 형식, 승인 절차, 금지 표현 | 곧 바뀔 가능성이 큰 일시적 선택 |
| 다시 설명하면 시간이 드는 업무 방식 | 불필요하게 민감한 개인정보 |
8가지 핵심 원칙
- 기억의 위치: 모델의 머릿속이 아니라 하네스가 운영하는 기록장
- 저장 원칙: 모든 것을 저장하면 중요한 것을 놓침
- 접근 방식: 목차를 먼저 보고 필요한 페이지만 펼쳐야 함
- 검증 방식: 오래된 기억은 포스트잇처럼 다시 확인해야 함
- 이전 방식: 파일 복사가 아니라 사용 규칙 이전
- 범위 분류: 개인, 프로젝트, 조직, 임시 기억 구분 보관
- 초기 설정: 사용자가 승인한 소개서로 시작
- 보안 관리: 오래 남는 기억일수록 삭제·수정 이력 중요
27. 부록 E. Subagent와 Agent Teams를 구분하는 법
언제 혼자 보낼 것인가 vs 팀을 꾸릴 것인가를 결정하는 기준입니다.
핵심 차이
| 구분 | Subagent | Agent Teams |
|---|---|---|
| 기본 성격 | Fire-and-forget | Collaborative |
| 작업 방식 | 맡긴 일 끝내고 보고 | 상태 공유하며 조율 |
| 에이전트 간 대화 | 없음 | 있음 |
| 공유 메모리 | 없음 | 공유 작업 목록·상태 있음 |
| 지속 상태 | 거의 없음 | 시간에 따라 문맥 축적 |
5가지 오케스트레이션 패턴
| 패턴 | 의미 | 사용 시기 |
|---|---|---|
| 프롬프트 체이닝 | 앞 단계 결과를 다음 단계 입력으로 | 순차적 의존 작업 |
| 라우팅 | 요청에 따라 전문가로 발송 | 난이도 분류·전문 담당 선택 |
| 병렬화 | 독립 작업을 동시 실행 | 여러 조사·후보 생성 |
| 오케스트레이터-워커 | 중앙 에이전트가 일 분배·결과 종합 | Subagent & Teams 모두에서 활용 |
| 평가자-개선자 | 하나가 생성, 다른 하나가 평가해 반환 | 품질이 중요하고 한 번에 끝내기 어려울 때 |
멀티에이전트를 쓰지 말아야 할 때
- 작업이 단순해서 하나의 좋은 프롬프트로 충분할 때
- 에이전트들이 계속 서로의 문맥을 물어봐야 할 때
- 작업 의존성 관리 비용이 실제 실행 이득보다 클 때
- 여러 에이전트가 같은 파일을 동시에 고쳐야 할 때
28. 부록 F. 최종 종합 보고서
하네스 엔지니어링의 역사·실증 데이터·미래 로드맵을 종합합니다.
Agent = Model + Harness
모델은 점점 범용화되고, 하네스가 차이를 만든다.
3단 진화 계보
Prompt Engineering (2022~2024): "모델에게 뭘 말할까?"
Context Engineering (2025): "모델이 뭘 보게 할까?"
Harness Engineering (2026~): "모델을 둘러싼 실행 환경을 어떻게 설계할까?"
글로벌 타임라인
| 시점 | 사건 |
|---|---|
| 2025.01 | Andrej Karpathy의 "Vibe Coding" 표현 등장 |
| 2026.02.05 | Mitchell Hashimoto, 하네스 관점 제시 |
| 2026.02 | OpenAI, 「Harness engineering」 공식 발행 |
| 2026.04 | AWS, Red Hat, Anthropic 등 주요 기업 공식 가이드 발행 |
실증 데이터
- Top 30 → Top 5 점프 (52.8% → 66.5%): 모델 그대로 + 하네스만 개선
- $3.00/MTok → $0.30/MTok (10분의 1): KV-cache + Semantic Routing 하네스 적용
- OpenAI Codex (2025.09~2026.02): 3인 팀 × 5개월, 100만 줄 프로덕션 코드, PR 1,500개 머지
AI 성숙도 레벨
| 레벨 | 명칭 | 역량 |
|---|---|---|
| L0 | 도구 사용자 | AI 챗봇, 기본 프롬프트 |
| L1 | 컨텍스트 설계자 | AGENTS.md 작성, 업무 규칙 명문화 |
| L2 | 하네스 구축자 | 훅 작성, 피드백 루프 구현 |
| L3 | 하네스 엔지니어 | Eval 체계, 멀티에이전트, CI 통합 |
| L4 | 하네스 아키텍트 | 조직 표준화, Self-Harness 설계 |
핵심 인사이트
"바이브코딩이 AI와 같이 논다면, 하네스 엔지니어링은 AI가 제대로 일하도록 판을 짠다."
"2025년은 AI가 코드를 쓰는 해였다. 2026년은 인간이 AI가 일할 환경을 설계하는 해다."
"교육의 최소 단위는 '실수 1개 → 하네스 업데이트 1회'다. 이 사이클을 10번 경험하면 하네스 엔지니어가 된다."
Claude Code CLI — 스킬(Skill) 만들기 완전 정복
스킬의 개념부터 제작, 품질 관리까지 완벽 가이드 · skill-creator로 표준화된 스킬 개발
📖 강의안 다운로드
완전한 강의안 MD 파일 다운로드
⚡ 빠른 시작
Claude Code에서 바로 스킬 활용
📌 주요 목차
- 1. 스킬이란 무엇인가 — 정의와 작동 원리
- 2. 스킬이 왜 필요한가 — 문제 상황 vs 해결책
- 3. 폴더 구조와 파일 역할 — SKILL.md, scripts, references, assets
- 4. 개인 공용 vs 프로젝트 전용 — 설치 위치와 공유 방법
- 5. 실습: 프롬프트만으로 스킬 만들기 — 6단계 Step-by-Step
- 6. 문제점: 프롬프트만으로 만들면 — 중구난방이 되는 5가지
- 7. skill-creator — 품질 관리의 답 — 표준화된 스킬 제작
- 8. skill-creator 실전 사용법 — 7단계 완성 프로세스
- 9. 전체 흐름 요약 — 방법 A vs 방법 B 선택 가이드
🎯 학습 시간
초급 (개념만)
15분
중급 (실습)
1시간
고급 (skill-creator)
2시간
💡 핵심 개념
| 용어 | 설명 |
|---|---|
SKILL.md | 스킬의 심장 · 필수 파일 · 이것만 있어도 작동 |
description | 트리거 키워드 · 사용자 자연어 매칭 담당 |
scripts/ | 실행 코드 분리 · 스킬 일관성 보장 |
~/.claude/skills/ | 개인 공용 스킬 · 모든 프로젝트에서 사용 가능 |
.claude/skills/ | 프로젝트 전용 스킬 · Git으로 팀 공유 가능 |
skill-creator | 메타 스킬 · 스킬 제작 표준화 · 품질 보장 |
🚀 다음 스텝
- 강의안 다운로드 — 위의 "다운로드 (.md)" 버튼으로 전체 강의안 확보
- Claude Code 실행 — 터미널에서
claude명령 입력 - 스킬 기획 — 만들고 싶은 스킬의 목적, 트리거 키워드, 출력 형식 정리
- 방법 선택 — 간단하면 방법 A(프롬프트), 중요하면 방법 B(skill-creator)
- 반복 개선 — 테스트 → 피드백 → 수정 → description 최적화
- 팀 공유 — Git에 커밋 또는 .skill 파일로 패키징
📢 강의안 정보
버전: v1.0
작성: Claude Code 공식 문서 기반
파일: skills/Claude_Code_Skills_강의안.md
스킬: ~/.claude/skills/claude-code-skills-lecture/
트리거: "스킬 강의", "스킬 만드는 법", "skill 튜토리얼" 등