바이브코딩 완벽 매뉴얼
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. 매뉴얼에 오류가 있거나 개선 사항이 있으면 어떻게 하나요?
푸터에 있는 연락처로 문의해 주시면 확인 후 반영하겠습니다.
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 | 비번 | 캠프관리자 비번 | 작업 |
|---|