<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>exploration25-ai.log</title>
        <link>https://velog.io/</link>
        <description>AI 탐사대</description>
        <lastBuildDate>Tue, 10 Feb 2026 11:25:28 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>exploration25-ai.log</title>
            <url>https://velog.velcdn.com/images/exploration25-ai/profile/fb36f8df-04f8-40c5-998a-da4cff9f5253/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. exploration25-ai.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/exploration25-ai" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[n8n node lists]]></title>
            <link>https://velog.io/@exploration25-ai/n8n-node-lists</link>
            <guid>https://velog.io/@exploration25-ai/n8n-node-lists</guid>
            <pubDate>Tue, 10 Feb 2026 11:25:28 GMT</pubDate>
            <description><![CDATA[<h1 id="n8n-노드-목록-기능별-분류">n8n 노드 목록 (기능별 분류)</h1>
<blockquote>
<p>기반 경로: <code>n8n/packages/nodes-base/nodes/</code>, <code>n8n/packages/@n8n/nodes-langchain/nodes/</code>
생성일: 2026-02-04
소스: 실제 <code>*.node.ts</code> 파일에서 추출
<code>[T]</code> = Trigger 노드, <code>[LC]</code> = LangChain 패키지 노드</p>
</blockquote>
<hr>
<h2 id="목차">목차</h2>
<ol>
<li><a href="#1-%ED%8A%B8%EB%A6%AC%EA%B1%B0-%EB%B0%8F-%EC%8B%9C%EC%9E%91%EC%A0%90">트리거 및 시작점</a></li>
<li><a href="#2-%EB%A1%9C%EC%A7%81-%EB%B0%8F-%ED%9D%90%EB%A6%84-%EC%A0%9C%EC%96%B4">로직 및 흐름 제어</a></li>
<li><a href="#3-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%80%ED%99%98-%EB%B0%8F-%EC%B2%98%EB%A6%AC">데이터 변환 및 처리</a></li>
<li><a href="#4-%EC%BD%94%EB%93%9C-%EB%B0%8F-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%8B%A4%ED%96%89">코드 및 스크립트 실행</a></li>
<li><a href="#5-http-%EB%B0%8F-api-%ED%86%B5%EC%8B%A0">HTTP 및 API 통신</a></li>
<li><a href="#6-%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC-%EC%B2%98%EB%A6%AC">파일 및 바이너리 처리</a></li>
<li><a href="#7-%EC%9D%B4%EB%A9%94%EC%9D%BC">이메일</a></li>
<li><a href="#8-%EB%A9%94%EC%8B%A0%EC%A0%80-%EB%B0%8F-%EC%B1%84%ED%8C%85">메신저 및 채팅</a></li>
<li><a href="#9-%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90-%EB%B0%8F-%EC%8B%A4%EC%8B%9C%EA%B0%84-%ED%86%B5%EC%8B%A0">메시지 큐 및 실시간 통신</a></li>
<li><a href="#10-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EC%A0%80%EC%9E%A5%EC%86%8C">클라우드 저장소</a></li>
<li><a href="#11-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4">데이터베이스</a></li>
<li><a href="#12-crm-%EB%B0%8F-%EC%98%81%EC%97%85">CRM 및 영업</a></li>
<li><a href="#13-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%B0%8F-%EC%9E%91%EC%97%85-%EA%B4%80%EB%A6%AC">프로젝트 및 작업 관리</a></li>
<li><a href="#14-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%B0%8F-%ED%8F%BC">이벤트 및 폼</a></li>
<li><a href="#15-%EC%86%8C%EC%85%9C-%EB%AF%B8%EB%94%94%EC%96%B4">소셜 미디어</a></li>
<li><a href="#16-%EA%B0%9C%EB%B0%9C-%EB%B0%8F-devops">개발 및 DevOps</a></li>
<li><a href="#17-%EA%B2%B0%EC%A0%9C-%EB%B0%8F-%EA%B8%88%EC%9C%B5">결제 및 금융</a></li>
<li><a href="#18-aws-%EC%84%9C%EB%B9%84%EC%8A%A4">AWS 서비스</a></li>
<li><a href="#19-google-%EC%84%9C%EB%B9%84%EC%8A%A4">Google 서비스</a></li>
<li><a href="#20-microsoft--azure-%EC%84%9C%EB%B9%84%EC%8A%A4">Microsoft / Azure 서비스</a></li>
<li><a href="#21-ai--ml-nodes-base">AI / ML (nodes-base)</a></li>
<li><a href="#22-ai-agent-%EB%B0%8F-%EC%B2%B4%EC%9D%B8-langchain">AI Agent 및 체인 (LangChain)</a></li>
<li><a href="#23-llm-%EB%AA%A8%EB%8D%B8-%EC%97%B0%EA%B2%B0-langchain">LLM 모델 연결 (LangChain)</a></li>
<li><a href="#24-embeddings-langchain">Embeddings (LangChain)</a></li>
<li><a href="#25-%EB%B2%A1%ED%84%B0-%EC%A0%80%EC%9E%A5%EC%86%8C-langchain">벡터 저장소 (LangChain)</a></li>
<li><a href="#26-%EB%A9%94%EB%AA%A8%EB%A6%AC-langchain">메모리 (LangChain)</a></li>
<li><a href="#27-ai-%EB%8F%84%EA%B5%AC-langchain">AI 도구 (LangChain)</a></li>
<li><a href="#28-retriever-langchain">Retriever (LangChain)</a></li>
<li><a href="#29-%ED%85%8D%EC%8A%A4%ED%8A%B8-%EB%B6%84%ED%95%A0-%EB%B0%8F-%ED%8C%8C%EC%8B%B1-langchain">텍스트 분할 및 파싱 (LangChain)</a></li>
<li><a href="#30-mcp-langchain">MCP (LangChain)</a></li>
<li><a href="#31-n8n-%EB%82%B4%EB%B6%80-%EB%B0%8F-%EA%B8%B0%ED%83%80">n8n 내부 및 기타</a></li>
<li><a href="#32-%EB%A7%88%EC%BC%80%ED%8C%85-%EB%B0%8F-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EC%9E%90%EB%8F%99%ED%99%94">마케팅 및 이메일 자동화</a></li>
<li><a href="#33-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EB%B0%8F-%EA%B4%80%EC%B8%A1%EC%84%B1">모니터링 및 관측성</a></li>
<li><a href="#34-%EB%B3%B4%EC%95%88-%EB%B0%8F-%EC%9D%B8%EC%A6%9D">보안 및 인증</a></li>
<li><a href="#35-iot-%EB%B0%8F-%ED%99%88-%EC%9E%90%EB%8F%99%ED%99%94">IoT 및 홈 자동화</a></li>
<li><a href="#36-%EA%B8%B0%ED%83%80-%ED%86%B5%ED%95%A9">기타 통합</a></li>
</ol>
<hr>
<h2 id="1-트리거-및-시작점">1. 트리거 및 시작점</h2>
<p>워크플로우 실행을 시작하는 트리거 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>클래스 구현</th>
<th>메서드</th>
<th>출력 타입</th>
<th>특징</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>ManualTrigger</code></td>
<td>수동으로 실행 시작</td>
<td><code>ManualTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>manualTriggerFunction 제공, 최대 1개</td>
<td><code>nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ScheduleTrigger</code></td>
<td>시간 기반 반복 실행 (Cron)</td>
<td><code>ScheduleTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>Cron 표현식, 타임존 지원</td>
<td><code>nodes-base/nodes/Schedule/ScheduleTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Cron</code></td>
<td>Cron 표현식으로 반복 실행 (레거이시)</td>
<td><code>Cron implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>레거이시, ScheduleTrigger 사용 권장</td>
<td><code>nodes-base/nodes/Cron/Cron.node.ts</code></td>
</tr>
<tr>
<td><code>Interval</code></td>
<td>일정 간격 반복 실행 (레거이시)</td>
<td><code>Interval implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>레거이시, ScheduleTrigger 사용 권장</td>
<td><code>nodes-base/nodes/Interval/Interval.node.ts</code></td>
</tr>
<tr>
<td><code>Webhook</code></td>
<td>HTTP 요청 수신 시 실행</td>
<td><code>Webhook implements INodeType</code></td>
<td>webhook</td>
<td>Main</td>
<td>GET/POST/DELETE 등, 인증 지원</td>
<td><code>nodes-base/nodes/Webhook/Webhook.node.ts</code></td>
</tr>
<tr>
<td><code>HttpRequest</code></td>
<td>외부 HTTP 요청 수신 및 응답</td>
<td><code>HttpRequest implements INodeType</code></td>
<td>webhook</td>
<td>Main</td>
<td>범용 HTTP 엔드포인트</td>
<td><code>nodes-base/nodes/HttpRequest/</code></td>
</tr>
<tr>
<td><code>N8nTrigger</code></td>
<td>n8n 내부 이벤트로 트리거</td>
<td><code>N8nTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>워크플로우 활성화/비활성화 등</td>
<td><code>nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ErrorTrigger</code></td>
<td>다른 워크플로우의 에러 발생 시 실행</td>
<td><code>ErrorTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>에러 핸들링 워크플로우</td>
<td><code>nodes-base/nodes/ErrorTrigger/ErrorTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>WorkflowTrigger</code></td>
<td>다른 워크플로우 실행 완료 시 트리거</td>
<td><code>WorkflowTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>워크플로우 체이닝</td>
<td><code>nodes-base/nodes/WorkflowTrigger/WorkflowTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>LocalFileTrigger</code></td>
<td>로컬 파일 변경 감지 시 실행</td>
<td><code>LocalFileTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>chokidar 사용, 파일 시스템 감시</td>
<td><code>nodes-base/nodes/LocalFileTrigger/LocalFileTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>SseTrigger</code></td>
<td>Server-Sent Events 수신 시 실행</td>
<td><code>SseTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>SSE 스트림 수신</td>
<td><code>nodes-base/nodes/SseTrigger/SseTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>SimulateTrigger</code></td>
<td>테스트용 모의 트리거</td>
<td><code>SimulateTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>테스트/디버깅용</td>
<td><code>nodes-base/nodes/Simulate/SimulateTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ChatTrigger</code> [LC]</td>
<td>챗 메시지로 워크플로우 트리거</td>
<td><code>ChatTrigger implements INodeType</code></td>
<td>webhook</td>
<td>Main</td>
<td>n8n Chat 위젯 연동</td>
<td><code>@n8n/nodes-langchain/nodes/trigger/ChatTrigger/ChatTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ManualChatTrigger</code> [LC]</td>
<td>수동 챗 트리거 (테스트용)</td>
<td><code>ManualChatTrigger implements INodeType</code></td>
<td>trigger</td>
<td>Main</td>
<td>챗봇 테스트용</td>
<td><code>@n8n/nodes-langchain/nodes/trigger/ManualChatTrigger/ManualChatTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>McpTrigger</code> [LC]</td>
<td>MCP 프로토콜로 트리거</td>
<td><code>McpTrigger implements INodeType</code></td>
<td>webhook</td>
<td>Main</td>
<td>Model Context Protocol</td>
<td><code>@n8n/nodes-langchain/nodes/trigger/McpTrigger/McpTrigger.node.ts</code></td>
</tr>
</tbody></table>
<blockquote>
<p><strong>트리거 노드 공통 특징</strong>:</p>
<ul>
<li>모든 트리거는 <code>ITriggerFunctions</code> 또는 <code>IWebhookFunctions</code> 구현</li>
<li>입력 없음 (<code>inputs: []</code>)</li>
<li><code>trigger()</code> 또는 <code>webhook()</code> 메서드로 실행 시작</li>
<li><code>manualTriggerFunction</code> 제공 시 수동 테스트 실행 가능</li>
</ul>
</blockquote>
<hr>
<h2 id="2-로직-및-흐름-제어">2. 로직 및 흐름 제어</h2>
<p>워크플로우 내 조건 분기, 루프, 병합 등의 흐름 로직.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>If</code> / <code>IfV1</code> / <code>IfV2</code></td>
<td>조건 평가 후 참/거짓 분기</td>
<td><code>nodes-base/nodes/If/</code></td>
</tr>
<tr>
<td><code>Switch</code> / <code>SwitchV1</code> / <code>SwitchV2</code> / <code>SwitchV3</code></td>
<td>다중 조건 분기 (switch-case)</td>
<td><code>nodes-base/nodes/Switch/</code></td>
</tr>
<tr>
<td><code>Filter</code> / <code>FilterV1</code> / <code>FilterV2</code></td>
<td>아이템 단위 조건 필터링</td>
<td><code>nodes-base/nodes/Filter/</code></td>
</tr>
<tr>
<td><code>Merge</code> / <code>MergeV1</code> / <code>MergeV2</code> / <code>MergeV3</code></td>
<td>여러 입력 스트림 병합</td>
<td><code>nodes-base/nodes/Merge/</code></td>
</tr>
<tr>
<td><code>SplitInBatches</code> / <code>V1</code> / <code>V2</code> / <code>V3</code></td>
<td>아이템을 배치 단위로 분할 처리</td>
<td><code>nodes-base/nodes/SplitInBatches/</code></td>
</tr>
<tr>
<td><code>Wait</code></td>
<td>지정된 시간 또는 외부 응답까지 대기</td>
<td><code>nodes-base/nodes/Wait/Wait.node.ts</code></td>
</tr>
<tr>
<td><code>StopAndError</code></td>
<td>워크플로우를 강제 중단하고 에러 반환</td>
<td><code>nodes-base/nodes/StopAndError/StopAndError.node.ts</code></td>
</tr>
<tr>
<td><code>Flow</code> / <code>FlowTrigger</code> [T]</td>
<td>단순 흐름 전달 및 트리거</td>
<td><code>nodes-base/nodes/Flow/</code></td>
</tr>
<tr>
<td><code>CompareDatasets</code></td>
<td>두 데이터셋 비교 및 차이 도출</td>
<td><code>nodes-base/nodes/CompareDatasets/CompareDatasets.node.ts</code></td>
</tr>
<tr>
<td><code>RespondToWebhook</code></td>
<td>대기 중인 Webhook 실행에 응답 반환</td>
<td><code>nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts</code></td>
</tr>
<tr>
<td><code>ExecuteWorkflow</code></td>
<td>서브워크플로우 호출 및 실행</td>
<td><code>nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts</code></td>
</tr>
<tr>
<td><code>ExecuteWorkflowTrigger</code> [T]</td>
<td>서브워크플로우 완료 시 트리거</td>
<td><code>nodes-base/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="3-데이터-변환-및-처리">3. 데이터 변환 및 처리</h2>
<p>입출력 데이터의 형태, 구조, 내용을 변환하는 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Set</code> / <code>SetV1</code> / <code>SetV2</code></td>
<td>필드 추가/수정/제거</td>
<td><code>nodes-base/nodes/Set/</code></td>
</tr>
<tr>
<td><code>RenameKeys</code></td>
<td>필드 키 이름 변경</td>
<td><code>nodes-base/nodes/RenameKeys/RenameKeys.node.ts</code></td>
</tr>
<tr>
<td><code>ItemLists</code> / <code>V1</code> / <code>V2</code> / <code>V3</code></td>
<td>리스트와 단일 아이템 간 변환 (Split/Merge)</td>
<td><code>nodes-base/nodes/ItemLists/</code></td>
</tr>
<tr>
<td><code>Aggregate</code></td>
<td>여러 아이템을 하나로 집계</td>
<td><code>nodes-base/nodes/Aggregate/Aggregate.node.ts</code></td>
</tr>
<tr>
<td><code>Limit</code></td>
<td>아이템 수를 제한</td>
<td><code>nodes-base/nodes/Limit/Limit.node.ts</code></td>
</tr>
<tr>
<td><code>Sort</code></td>
<td>아이템 정렬</td>
<td><code>nodes-base/nodes/Sort/Sort.node.ts</code></td>
</tr>
<tr>
<td><code>SplitOut</code></td>
<td>하나의 아이템을 여러 아이템으로 분할</td>
<td><code>nodes-base/nodes/SplitOut/SplitOut.node.ts</code></td>
</tr>
<tr>
<td><code>Summarize</code></td>
<td>아이템을 요약/집계하여 통계 생성</td>
<td><code>nodes-base/nodes/Summarize/Summarize.node.ts</code></td>
</tr>
<tr>
<td><code>RemoveDuplicates</code> / <code>V1</code> / <code>V2</code></td>
<td>중복 아이템 제거</td>
<td><code>nodes-base/nodes/RemoveDuplicates/</code></td>
</tr>
<tr>
<td><code>DateTime</code> / <code>DateTimeV1</code> / <code>DateTimeV2</code></td>
<td>날짜/시간 형식 변환 및 계산</td>
<td><code>nodes-base/nodes/DateTime/</code></td>
</tr>
<tr>
<td><code>Crypto</code></td>
<td>암호화/복호화 및 해시 생성</td>
<td><code>nodes-base/nodes/Crypto/Crypto.node.ts</code></td>
</tr>
<tr>
<td><code>Jwt</code></td>
<td>JWT 토큰 생성 및 검증</td>
<td><code>nodes-base/nodes/Jwt/Jwt.node.ts</code></td>
</tr>
<tr>
<td><code>Totp</code></td>
<td>TOTP 코드 생성 및 검증</td>
<td><code>nodes-base/nodes/Totp/Totp.node.ts</code></td>
</tr>
<tr>
<td><code>Xml</code></td>
<td>XML 파싱 및 변환</td>
<td><code>nodes-base/nodes/Xml/Xml.node.ts</code></td>
</tr>
<tr>
<td><code>Markdown</code></td>
<td>Markdown 파싱 및 변환</td>
<td><code>nodes-base/nodes/Markdown/Markdown.node.ts</code></td>
</tr>
<tr>
<td><code>Html</code></td>
<td>HTML 생성 및 변환</td>
<td><code>nodes-base/nodes/Html/Html.node.ts</code></td>
</tr>
<tr>
<td><code>HtmlExtract</code></td>
<td>HTML에서 특정 요소 추출</td>
<td><code>nodes-base/nodes/HtmlExtract/HtmlExtract.node.ts</code></td>
</tr>
<tr>
<td><code>Compression</code></td>
<td>파일 압축/압축 해제</td>
<td><code>nodes-base/nodes/Compression/Compression.node.ts</code></td>
</tr>
<tr>
<td><code>MoveBinaryData</code></td>
<td>바이너리 데이터를 다른 필드로 이동</td>
<td><code>nodes-base/nodes/MoveBinaryData/MoveBinaryData.node.ts</code></td>
</tr>
<tr>
<td><code>ExecutionData</code></td>
<td>실행 메타데이터 조회 및 변환</td>
<td><code>nodes-base/nodes/ExecutionData/ExecutionData.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="4-코드-및-스크립트-실행">4. 코드 및 스크립트 실행</h2>
<p>사용자 정의 코드를 직접 실행하는 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>클래스 구현</th>
<th>메서드</th>
<th>입출력 타입</th>
<th>지원 언어/환경</th>
<th>샌드박스</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Code</code> (base)</td>
<td>JavaScript/Python 코드 실행</td>
<td><code>Code implements INodeType</code></td>
<td>execute</td>
<td>Main → Main</td>
<td>JavaScript, Python Beta, Python Native</td>
<td>JavaScriptSandbox, PythonSandbox, JsTaskRunner, PythonTaskRunner</td>
<td><code>nodes-base/nodes/Code/Code.node.ts</code></td>
</tr>
<tr>
<td><code>Function</code></td>
<td>JavaScript 함수 실행 (레거이시)</td>
<td><code>Function implements INodeType</code></td>
<td>execute</td>
<td>Main → Main</td>
<td>JavaScript (vm2)</td>
<td>vm2 (deprecated)</td>
<td><code>nodes-base/nodes/Function/Function.node.ts</code></td>
</tr>
<tr>
<td><code>FunctionItem</code></td>
<td>아이템별 JavaScript 함수 실행 (레거이시)</td>
<td><code>FunctionItem implements INodeType</code></td>
<td>execute</td>
<td>Main → Main</td>
<td>JavaScript (vm2)</td>
<td>vm2 (deprecated)</td>
<td><code>nodes-base/nodes/FunctionItem/FunctionItem.node.ts</code></td>
</tr>
<tr>
<td><code>ExecuteCommand</code></td>
<td>OS 커맨드 실행</td>
<td><code>ExecuteCommand implements INodeType</code></td>
<td>execute</td>
<td>Main → Main</td>
<td>Shell commands</td>
<td>None (직접 실행)</td>
<td><code>nodes-base/nodes/ExecuteCommand/ExecuteCommand.node.ts</code></td>
</tr>
<tr>
<td><code>Code</code> [LC]</td>
<td>LangChain 컨텍스트에서 코드 실행</td>
<td><code>Code implements INodeType</code></td>
<td>execute, supplyData</td>
<td>Dynamic AI Types</td>
<td>JavaScript</td>
<td>JavaScriptSandbox (from nodes-base)</td>
<td><code>@n8n/nodes-langchain/nodes/code/Code.node.ts</code></td>
</tr>
</tbody></table>
<blockquote>
<p><strong>Code 노드 상세</strong>:</p>
<h3 id="nodes-basecode-노드">nodes-base/Code 노드</h3>
<ul>
<li><strong>실행 모드</strong>:<ul>
<li><code>runOnceForAllItems</code>: 전체 아이템을 한번에 처리</li>
<li><code>runOnceForEachItem</code>: 각 아이템마다 개별 실행</li>
</ul>
</li>
<li><strong>샌드박스 종류</strong>:<ul>
<li><code>JavaScriptSandbox</code>: V8 Isolate 기반 안전한 실행 환경</li>
<li><code>JsTaskRunnerSandbox</code>: Task Runner를 통한 격리 실행</li>
<li><code>PythonSandbox</code>: Python 코드 실행 환경</li>
<li><code>PythonTaskRunnerSandbox</code>: Python Task Runner 실행</li>
</ul>
</li>
<li><strong>사용 가능 객체</strong>: <code>$items</code>, <code>$input</code>, <code>$json</code>, <code>$binary</code>, <code>$itemIndex</code>, <code>$runIndex</code>, <code>$now</code>, 등</li>
<li><strong>의존성 주입</strong>: <code>@n8n/di</code> Container를 통한 설정 관리</li>
</ul>
<h3 id="n8nnodes-langchaincode-노드">@n8n/nodes-langchain/Code 노드</h3>
<ul>
<li><strong>동적 입출력</strong>: 사용자 정의 연결 타입 지원<ul>
<li>입력: AiChain, AiDocument, AiEmbedding, AiLanguageModel, AiMemory, AiOutputParser, AiTextSplitter, AiTool, AiVectorStore, Main</li>
<li>출력: 동일한 타입 지원</li>
</ul>
</li>
<li><strong>실행 방식</strong>:<ul>
<li><code>execute</code>: 일반 워크플로우 노드로 실행</li>
<li><code>supplyData</code>: AI 컴포넌트로 실행 (Tool, Chain 등 반환)</li>
</ul>
</li>
<li><strong>LangChain 통합</strong>: <code>@langchain/core/tools</code> (Tool 클래스) 사용</li>
<li><strong>레거시 호환</strong>: <code>langchain</code> → <code>@langchain/classic</code> 자동 변환</li>
</ul>
</blockquote>
<hr>
<h2 id="5-http-및-api-통신">5. HTTP 및 API 통신</h2>
<p>외부 API와의 HTTP 요청/응답을 담당하는 범용 노드.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>HttpRequest</code> / <code>HttpRequestV1</code> / <code>V2</code> / <code>V3</code></td>
<td>범용 HTTP 요청 (GET/POST/PUT/DELETE 등)</td>
<td><code>nodes-base/nodes/HttpRequest/</code></td>
</tr>
<tr>
<td><code>GraphQL</code></td>
<td>GraphQL 쿼리 및 뮤테이션 실행</td>
<td><code>nodes-base/nodes/GraphQL/GraphQL.node.ts</code></td>
</tr>
<tr>
<td><code>Webhook</code></td>
<td>Webhook 요청 수신 및 응답</td>
<td><code>nodes-base/nodes/Webhook/Webhook.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="6-파일-및-바이너리-처리">6. 파일 및 바이너리 처리</h2>
<p>파일 읽기, 쓰기, 변환을 담당하는 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>ReadBinaryFile</code></td>
<td>단일 파일 읽기</td>
<td><code>nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.ts</code></td>
</tr>
<tr>
<td><code>ReadBinaryFiles</code></td>
<td>여러 파일 읽기</td>
<td><code>nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.ts</code></td>
</tr>
<tr>
<td><code>WriteBinaryFile</code></td>
<td>파일 쓰기</td>
<td><code>nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.ts</code></td>
</tr>
<tr>
<td><code>ConvertToFile</code></td>
<td>데이터를 파일로 변환</td>
<td><code>nodes-base/nodes/ConvertToFile/ConvertToFile.node.ts</code></td>
</tr>
<tr>
<td><code>ExtractFromFile</code></td>
<td>파일에서 데이터 추출</td>
<td><code>nodes-base/nodes/ExtractFromFile/ExtractFromFile.node.ts</code></td>
</tr>
<tr>
<td><code>ReadWriteFile</code></td>
<td>파일 읽기/쓰기 종합 노드</td>
<td><code>nodes-base/nodes/ReadWriteFile/ReadWriteFile.node.ts</code></td>
</tr>
<tr>
<td><code>ReadPDF</code></td>
<td>PDF 파일 파싱 및 텍스트 추출</td>
<td><code>nodes-base/nodes/ReadPdf/ReadPDF.node.ts</code></td>
</tr>
<tr>
<td><code>SpreadsheetFile</code> / <code>V1</code> / <code>V2</code></td>
<td>Excel/CSV 파일 읽기·쓰기</td>
<td><code>nodes-base/nodes/SpreadsheetFile/</code></td>
</tr>
<tr>
<td><code>ICalendar</code></td>
<td>iCalendar (.ics) 파일 파싱</td>
<td><code>nodes-base/nodes/ICalendar/ICalendar.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="7-이메일">7. 이메일</h2>
<p>이메일 발송 및 수신을 담당하는 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>EmailSend</code> / <code>V1</code> / <code>V2</code></td>
<td>SMTP를 통한 이메일 발송</td>
<td><code>nodes-base/nodes/EmailSend/</code></td>
</tr>
<tr>
<td><code>EmailReadImap</code> / <code>V1</code> / <code>V2</code></td>
<td>IMAP을 통한 이메일 수신 및 읽기</td>
<td><code>nodes-base/nodes/EmailReadImap/</code></td>
</tr>
<tr>
<td><code>Mailgun</code></td>
<td>Mailgun API로 이메일 발송</td>
<td><code>nodes-base/nodes/Mailgun/Mailgun.node.ts</code></td>
</tr>
<tr>
<td><code>SendGrid</code></td>
<td>SendGrid API로 이메일 발송</td>
<td><code>nodes-base/nodes/SendGrid/SendGrid.node.ts</code></td>
</tr>
<tr>
<td><code>Mandrill</code></td>
<td>Mandrill(Mailchimp) API로 이메일 발송</td>
<td><code>nodes-base/nodes/Mandrill/Mandrill.node.ts</code></td>
</tr>
<tr>
<td><code>Postmark</code> / <code>PostmarkTrigger</code> [T]</td>
<td>Postmark API 이메일 발송 및 Webhook</td>
<td><code>nodes-base/nodes/Postmark/</code></td>
</tr>
<tr>
<td><code>Sendy</code></td>
<td>Sendy 이메일 마케팅 API</td>
<td><code>nodes-base/nodes/Sendy/Sendy.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="8-메신저-및-채팅">8. 메신저 및 채팅</h2>
<p>메신저 앱과의 통신을 담당하는 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Slack</code> / <code>SlackV1</code> / <code>SlackV2</code> / <code>SlackTrigger</code> [T]</td>
<td>Slack 메시지 발송/수신 및 이벤트</td>
<td><code>nodes-base/nodes/Slack/Slack.node.ts</code> / <code>V1/SlackV1.node.ts</code> / <code>V2/SlackV2.node.ts</code> / <code>SlackTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Telegram</code> / <code>TelegramTrigger</code> [T]</td>
<td>Telegram Bot API 통신</td>
<td><code>nodes-base/nodes/Telegram/Telegram.node.ts</code> / <code>TelegramTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Discord</code> / <code>DiscordV1</code> / <code>DiscordV2</code></td>
<td>Discord Webhook 및 봇 메시지</td>
<td><code>nodes-base/nodes/Discord/Discord.node.ts</code> / <code>v1/DiscordV1.node.ts</code> / <code>v2/DiscordV2.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftTeams</code> / <code>V1</code> / <code>V2</code> / <code>MicrosoftTeamsTrigger</code> [T]</td>
<td>Microsoft Teams 메시지 및 이벤트</td>
<td><code>nodes-base/nodes/Microsoft/Teams/MicrosoftTeams.node.ts</code> / <code>v1/</code> / <code>v2/</code> / <code>MicrosoftTeamsTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Line</code></td>
<td>LINE Messaging API</td>
<td><code>nodes-base/nodes/Line/Line.node.ts</code></td>
</tr>
<tr>
<td><code>Mattermost</code> / <code>MattermostV1</code></td>
<td>Mattermost 메시지 발송</td>
<td><code>nodes-base/nodes/Mattermost/Mattermost.node.ts</code> / <code>v1/MattermostV1.node.ts</code></td>
</tr>
<tr>
<td><code>Rocketchat</code></td>
<td>Rocket.Chat 메시지 발송</td>
<td><code>nodes-base/nodes/Rocketchat/Rocketchat.node.ts</code></td>
</tr>
<tr>
<td><code>Twist</code></td>
<td>Twist 메시지 발송</td>
<td><code>nodes-base/nodes/Twist/Twist.node.ts</code></td>
</tr>
<tr>
<td><code>Zulip</code></td>
<td>Zulip 메시지 발송</td>
<td><code>nodes-base/nodes/Zulip/Zulip.node.ts</code></td>
</tr>
<tr>
<td><code>Gotify</code></td>
<td>Gotify 푸시 알림</td>
<td><code>nodes-base/nodes/Gotify/Gotify.node.ts</code></td>
</tr>
<tr>
<td><code>Matrix</code></td>
<td>Matrix 프로토콜 메시지</td>
<td><code>nodes-base/nodes/Matrix/Matrix.node.ts</code></td>
</tr>
<tr>
<td><code>Pushbullet</code></td>
<td>Pushbullet 푸시 알림</td>
<td><code>nodes-base/nodes/Pushbullet/Pushbullet.node.ts</code></td>
</tr>
<tr>
<td><code>Pushcut</code> / <code>PushcutTrigger</code> [T]</td>
<td>Pushcut 푸시 알림 및 트리거</td>
<td><code>nodes-base/nodes/Pushcut/Pushcut.node.ts</code> / <code>PushcutTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Pushover</code></td>
<td>Pushover 푸시 알림</td>
<td><code>nodes-base/nodes/Pushover/Pushover.node.ts</code></td>
</tr>
<tr>
<td><code>Twilio</code> / <code>TwilioTrigger</code> [T]</td>
<td>Twilio SMS/음성 통신 및 Webhook</td>
<td><code>nodes-base/nodes/Twilio/Twilio.node.ts</code> / <code>TwilioTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Vonage</code></td>
<td>Vonage(Nexmo) SMS 통신</td>
<td><code>nodes-base/nodes/Vonage/Vonage.node.ts</code></td>
</tr>
<tr>
<td><code>MessageBird</code></td>
<td>MessageBird SMS/음성 통신</td>
<td><code>nodes-base/nodes/MessageBird/MessageBird.node.ts</code></td>
</tr>
<tr>
<td><code>Plivo</code></td>
<td>Plivo SMS 통신</td>
<td><code>nodes-base/nodes/Plivo/Plivo.node.ts</code></td>
</tr>
<tr>
<td><code>Mocean</code></td>
<td>Mocean SMS 통신</td>
<td><code>nodes-base/nodes/Mocean/Mocean.node.ts</code></td>
</tr>
<tr>
<td><code>Sms77</code></td>
<td>Sms77 SMS 통신</td>
<td><code>nodes-base/nodes/Sms77/Sms77.node.ts</code></td>
</tr>
<tr>
<td><code>Msg91</code></td>
<td>Msg91 SMS 통신</td>
<td><code>nodes-base/nodes/Msg91/Msg91.node.ts</code></td>
</tr>
<tr>
<td><code>WhatsApp</code> / <code>WhatsAppTrigger</code> [T]</td>
<td>WhatsApp Business API</td>
<td><code>nodes-base/nodes/WhatsApp/WhatsApp.node.ts</code> / <code>WhatsAppTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>CiscoWebex</code> / <code>CiscoWebexTrigger</code> [T]</td>
<td>Cisco Webex 메시지 및 이벤트</td>
<td><code>nodes-base/nodes/Cisco/Webex/CiscoWebex.node.ts</code> / <code>CiscoWebexTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Signl4</code></td>
<td>SIGNL4 알림 발송</td>
<td><code>nodes-base/nodes/Signl4/Signl4.node.ts</code></td>
</tr>
<tr>
<td><code>Chat</code> [LC] / <code>ChatTrigger</code> [LC]</td>
<td>n8n Chat 위짓 통신</td>
<td><code>@n8n/nodes-langchain/nodes/trigger/ChatTrigger/Chat.node.ts</code> / <code>ChatTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="9-메시지-큐-및-실시간-통신">9. 메시지 큐 및 실시간 통신</h2>
<p>메시지 큐, Pub/Sub, MQTT 등 비동기 통신 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Kafka</code> / <code>KafkaTrigger</code> [T]</td>
<td>Apache Kafka 메시지 발송/수신</td>
<td><code>nodes-base/nodes/Kafka/Kafka.node.ts</code> / <code>KafkaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>RabbitMQ</code> / <code>RabbitMQTrigger</code> [T]</td>
<td>RabbitMQ 메시지 발송/수신</td>
<td><code>nodes-base/nodes/RabbitMQ/RabbitMQ.node.ts</code> / <code>RabbitMQTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Mqtt</code> / <code>MqttTrigger</code> [T]</td>
<td>MQTT 프로토콜 메시지 발송/수신</td>
<td><code>nodes-base/nodes/MQTT/Mqtt.node.ts</code> / <code>MqttTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Amqp</code> / <code>AmqpTrigger</code> [T]</td>
<td>AMQP 프로토콜 메시지 발송/수신</td>
<td><code>nodes-base/nodes/Amqp/Amqp.node.ts</code> / <code>AmqpTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>RssFeedRead</code> / <code>RssFeedReadTrigger</code> [T]</td>
<td>RSS 피드 읽기 및 새 항목 감지</td>
<td><code>nodes-base/nodes/RssFeedRead/RssFeedRead.node.ts</code> / <code>RssFeedReadTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="10-클라우드-저장소">10. 클라우드 저장소</h2>
<p>클라우드 파일 저장소 및 드라이브와의 연동.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>GoogleDrive</code> / <code>GoogleDriveV1</code> / <code>GoogleDriveV2</code> / <code>GoogleDriveTrigger</code> [T]</td>
<td>Google Drive 파일 관리 및 이벤트</td>
<td><code>nodes-base/nodes/Google/Drive/GoogleDrive.node.ts</code> / <code>v1/</code> / <code>v2/</code> / <code>GoogleDriveTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Dropbox</code></td>
<td>Dropbox 파일 관리</td>
<td><code>nodes-base/nodes/Dropbox/Dropbox.node.ts</code></td>
</tr>
<tr>
<td><code>Box</code> / <code>BoxTrigger</code> [T]</td>
<td>Box 파일 관리 및 이벤트</td>
<td><code>nodes-base/nodes/Box/Box.node.ts</code> / <code>BoxTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>AwsS3</code> / <code>AwsS3V1</code> / <code>AwsS3V2</code></td>
<td>AWS S3 객체 저장소</td>
<td><code>nodes-base/nodes/Aws/S3/AwsS3.node.ts</code> / <code>V1/AwsS3V1.node.ts</code> / <code>V2/AwsS3V2.node.ts</code></td>
</tr>
<tr>
<td><code>S3</code></td>
<td>S3 호환 저장소 (범용)</td>
<td><code>nodes-base/nodes/S3/S3.node.ts</code></td>
</tr>
<tr>
<td><code>NextCloud</code></td>
<td>NextCloud 파일 관리</td>
<td><code>nodes-base/nodes/NextCloud/NextCloud.node.ts</code></td>
</tr>
<tr>
<td><code>Ftp</code></td>
<td>FTP/SFTP 파일 업로드/다운로드</td>
<td><code>nodes-base/nodes/Ftp/Ftp.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleCloudStorage</code></td>
<td>Google Cloud Storage</td>
<td><code>nodes-base/nodes/Google/CloudStorage/GoogleCloudStorage.node.ts</code></td>
</tr>
<tr>
<td><code>AzureStorage</code></td>
<td>Azure Blob Storage</td>
<td><code>nodes-base/nodes/Microsoft/Storage/AzureStorage.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftOneDrive</code> / <code>MicrosoftOneDriveTrigger</code> [T]</td>
<td>Microsoft OneDrive</td>
<td><code>nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts</code> / <code>MicrosoftOneDriveTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftSharePoint</code></td>
<td>Microsoft SharePoint</td>
<td><code>nodes-base/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="11-데이터베이스">11. 데이터베이스</h2>
<p>관계형 및 NoSQL 데이터베이스와의 연동.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Postgres</code> / <code>PostgresV1</code> / <code>V2</code> / <code>PostgresTrigger</code> [T]</td>
<td>PostgreSQL 쿼리 및 이벤트</td>
<td><code>nodes-base/nodes/Postgres/</code></td>
</tr>
<tr>
<td><code>MySql</code> / <code>MySqlV1</code> / <code>V2</code></td>
<td>MySQL 쿼리</td>
<td><code>nodes-base/nodes/MySql/</code></td>
</tr>
<tr>
<td><code>MongoDb</code></td>
<td>MongoDB 문서 조작</td>
<td><code>nodes-base/nodes/MongoDb/MongoDb.node.ts</code></td>
</tr>
<tr>
<td><code>Redis</code> / <code>RedisTrigger</code> [T]</td>
<td>Redis 키-값 저장소 및 Pub/Sub</td>
<td><code>nodes-base/nodes/Redis/</code></td>
</tr>
<tr>
<td><code>OracleSql</code></td>
<td>Oracle 데이터베이스 쿼리</td>
<td><code>nodes-base/nodes/Oracle/Sql/OracleSql.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftSql</code></td>
<td>Microsoft SQL Server 쿼리</td>
<td><code>nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.ts</code></td>
</tr>
<tr>
<td><code>Snowflake</code></td>
<td>Snowflake 클라우드 DW 쿼리</td>
<td><code>nodes-base/nodes/Snowflake/Snowflake.node.ts</code></td>
</tr>
<tr>
<td><code>CrateDb</code></td>
<td>CrateDB 분산 SQL 쿼리</td>
<td><code>nodes-base/nodes/CrateDb/CrateDb.node.ts</code></td>
</tr>
<tr>
<td><code>QuestDb</code></td>
<td>QuestDB 시계열 DB 쿼리</td>
<td><code>nodes-base/nodes/QuestDb/QuestDb.node.ts</code></td>
</tr>
<tr>
<td><code>TimescaleDb</code></td>
<td>TimescaleDB 시계열 DB 쿼리</td>
<td><code>nodes-base/nodes/TimescaleDb/TimescaleDb.node.ts</code></td>
</tr>
<tr>
<td><code>Supabase</code></td>
<td>Supabase (PostgreSQL 기반) API</td>
<td><code>nodes-base/nodes/Supabase/Supabase.node.ts</code></td>
</tr>
<tr>
<td><code>NocoDB</code></td>
<td>NocoDB 테이블 API</td>
<td><code>nodes-base/nodes/NocoDB/NocoDB.node.ts</code></td>
</tr>
<tr>
<td><code>SeaTable</code> / <code>SeaTableV1</code> / <code>V2</code> / <code>SeaTableTrigger</code> [T]</td>
<td>SeaTable 테이블 조작 및 이벤트</td>
<td><code>nodes-base/nodes/SeaTable/</code></td>
</tr>
<tr>
<td><code>Stackby</code></td>
<td>Stackby 테이블 API</td>
<td><code>nodes-base/nodes/Stackby/Stackby.node.ts</code></td>
</tr>
<tr>
<td><code>Baserow</code></td>
<td>Baserow 테이블 API</td>
<td><code>nodes-base/nodes/Baserow/Baserow.node.ts</code></td>
</tr>
<tr>
<td><code>AzureCosmosDb</code></td>
<td>Azure Cosmos DB</td>
<td><code>nodes-base/nodes/Microsoft/AzureCosmosDb/AzureCosmosDb.node.ts</code></td>
</tr>
<tr>
<td><code>Ldap</code></td>
<td>LDAP 디렉토리 조회</td>
<td><code>nodes-base/nodes/Ldap/Ldap.node.ts</code></td>
</tr>
<tr>
<td><code>Elasticsearch</code></td>
<td>Elasticsearch 검색 및 인덱싱</td>
<td><code>nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.ts</code></td>
</tr>
<tr>
<td><code>DataTable</code></td>
<td>n8n 내장 DataTable</td>
<td><code>nodes-base/nodes/DataTable/DataTable.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="12-crm-및-영업">12. CRM 및 영업</h2>
<p>고객 관계 관리 및 영업 파이프라인 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Salesforce</code> / <code>SalesforceTrigger</code> [T]</td>
<td>Salesforce CRM</td>
<td><code>nodes-base/nodes/Salesforce/Salesforce.node.ts</code> / <code>SalesforceTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Hubspot</code> / <code>HubspotV1</code> / <code>HubspotV2</code> / <code>HubspotTrigger</code> [T]</td>
<td>HubSpot CRM</td>
<td><code>nodes-base/nodes/Hubspot/Hubspot.node.ts</code> / <code>V1/HubspotV1.node.ts</code> / <code>V2/HubspotV2.node.ts</code> / <code>HubspotTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Pipedrive</code> / <code>PipedriveTrigger</code> [T]</td>
<td>Pipedrive CRM</td>
<td><code>nodes-base/nodes/Pipedrive/Pipedrive.node.ts</code> / <code>PipedriveTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Copper</code> / <code>CopperTrigger</code> [T]</td>
<td>Copper CRM</td>
<td><code>nodes-base/nodes/Copper/Copper.node.ts</code> / <code>CopperTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>AgileCrm</code></td>
<td>Agile CRM</td>
<td><code>nodes-base/nodes/AgileCrm/AgileCrm.node.ts</code></td>
</tr>
<tr>
<td><code>ActiveCampaign</code> / <code>ActiveCampaignTrigger</code> [T]</td>
<td>ActiveCampaign CRM</td>
<td><code>nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts</code> / <code>ActiveCampaignTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>FreshworksCrm</code></td>
<td>Freshworks CRM</td>
<td><code>nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.ts</code></td>
</tr>
<tr>
<td><code>MonicaCrm</code></td>
<td>Monica CRM</td>
<td><code>nodes-base/nodes/MonicaCrm/MonicaCrm.node.ts</code></td>
</tr>
<tr>
<td><code>Salesmate</code></td>
<td>Salesmate CRM</td>
<td><code>nodes-base/nodes/Salesmate/Salesmate.node.ts</code></td>
</tr>
<tr>
<td><code>ZohoCrm</code></td>
<td>Zoho CRM</td>
<td><code>nodes-base/nodes/Zoho/ZohoCrm.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftDynamicsCrm</code></td>
<td>Microsoft Dynamics 365 CRM</td>
<td><code>nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.ts</code></td>
</tr>
<tr>
<td><code>Intercom</code></td>
<td>Intercom 고객 메신저</td>
<td><code>nodes-base/nodes/Intercom/Intercom.node.ts</code></td>
</tr>
<tr>
<td><code>Drift</code></td>
<td>Drift 대화형 마케팅</td>
<td><code>nodes-base/nodes/Drift/Drift.node.ts</code></td>
</tr>
<tr>
<td><code>Gong</code></td>
<td>Gong 영업 인텔리젠스</td>
<td><code>nodes-base/nodes/Gong/Gong.node.ts</code></td>
</tr>
<tr>
<td><code>HighLevel</code> / <code>HighLevelV1</code> / <code>HighLevelV2</code></td>
<td>HighLevel CRM</td>
<td><code>nodes-base/nodes/HighLevel/HighLevel.node.ts</code> / <code>v1/HighLevelV1.node.ts</code> / <code>v2/HighLevelV2.node.ts</code></td>
</tr>
<tr>
<td><code>Keap</code> / <code>KeapTrigger</code> [T]</td>
<td>Keap (Infusionsoft) CRM</td>
<td><code>nodes-base/nodes/Keap/Keap.node.ts</code> / <code>KeapTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Clearbit</code></td>
<td>Clearbit 회사/사람 데이터 조회</td>
<td><code>nodes-base/nodes/Clearbit/Clearbit.node.ts</code></td>
</tr>
<tr>
<td><code>Uplead</code></td>
<td>UpLead B2B 리드 조회</td>
<td><code>nodes-base/nodes/Uplead/Uplead.node.ts</code></td>
</tr>
<tr>
<td><code>Hunter</code></td>
<td>Hunter.io 이메일 탐색</td>
<td><code>nodes-base/nodes/Hunter/Hunter.node.ts</code></td>
</tr>
<tr>
<td><code>Brandfetch</code></td>
<td>Brandfetch 회사 정보 조회</td>
<td><code>nodes-base/nodes/Brandfetch/Brandfetch.node.ts</code></td>
</tr>
<tr>
<td><code>Dropcontact</code></td>
<td>Dropcontact 연락처 정보 강화</td>
<td><code>nodes-base/nodes/Dropcontact/Dropcontact.node.ts</code></td>
</tr>
<tr>
<td><code>HumanticAi</code></td>
<td>Humantic AI 퍼서널리티 분석</td>
<td><code>nodes-base/nodes/HumanticAI/HumanticAi.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="13-프로젝트-및-작업-관리">13. 프로젝트 및 작업 관리</h2>
<p>프로젝트, 이슈, 작업 관리 도구와의 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Jira</code> / <code>JiraTrigger</code> [T]</td>
<td>Atlassian Jira 이슈 관리</td>
<td><code>nodes-base/nodes/Jira/Jira.node.ts</code> / <code>JiraTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Asana</code> / <code>AsanaTrigger</code> [T]</td>
<td>Asana 작업 관리</td>
<td><code>nodes-base/nodes/Asana/Asana.node.ts</code> / <code>AsanaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Trello</code> / <code>TrelloTrigger</code> [T]</td>
<td>Trello 보드/카드 관리</td>
<td><code>nodes-base/nodes/Trello/Trello.node.ts</code> / <code>TrelloTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>MondayCom</code></td>
<td>Monday.com 작업 관리</td>
<td><code>nodes-base/nodes/MondayCom/MondayCom.node.ts</code></td>
</tr>
<tr>
<td><code>ClickUp</code> / <code>ClickUpTrigger</code> [T]</td>
<td>ClickUp 프로젝트 관리</td>
<td><code>nodes-base/nodes/ClickUp/ClickUp.node.ts</code> / <code>ClickUpTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Linear</code> / <code>LinearTrigger</code> [T]</td>
<td>Linear 이슈 트래킹</td>
<td><code>nodes-base/nodes/Linear/Linear.node.ts</code> / <code>LinearTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Notion</code> / <code>NotionV1</code> / <code>NotionV2</code> / <code>NotionTrigger</code> [T]</td>
<td>Notion 페이지·DB 관리</td>
<td><code>nodes-base/nodes/Notion/Notion.node.ts</code> / <code>v1/NotionV1.node.ts</code> / <code>v2/NotionV2.node.ts</code> / <code>NotionTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Todoist</code> / <code>TodoistV1</code> / <code>TodoistV2</code></td>
<td>Todoist 작업 관리</td>
<td><code>nodes-base/nodes/Todoist/Todoist.node.ts</code> / <code>v1/TodoistV1.node.ts</code> / <code>v2/TodoistV2.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftToDo</code></td>
<td>Microsoft To Do</td>
<td><code>nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.ts</code></td>
</tr>
<tr>
<td><code>Toggl</code> / <code>TogglTrigger</code> [T]</td>
<td>Toggl 시간 추적</td>
<td><code>nodes-base/nodes/Toggl/TogglTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Clockify</code> / <code>ClockifyTrigger</code> [T]</td>
<td>Clockify 시간 추적</td>
<td><code>nodes-base/nodes/Clockify/Clockify.node.ts</code> / <code>ClockifyTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Harvest</code></td>
<td>Harvest 프로젝트 및 시간 추적</td>
<td><code>nodes-base/nodes/Harvest/Harvest.node.ts</code></td>
</tr>
<tr>
<td><code>Taiga</code> / <code>TaigaTrigger</code> [T]</td>
<td>Taiga 프로젝트 관리</td>
<td><code>nodes-base/nodes/Taiga/Taiga.node.ts</code> / <code>TaigaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Wekan</code></td>
<td>Wekan 보드 관리</td>
<td><code>nodes-base/nodes/Wekan/Wekan.node.ts</code></td>
</tr>
<tr>
<td><code>QuickBase</code></td>
<td>QuickBase 앱 관리</td>
<td><code>nodes-base/nodes/QuickBase/QuickBase.node.ts</code></td>
</tr>
<tr>
<td><code>Coda</code></td>
<td>Coda 문서/테이블 API</td>
<td><code>nodes-base/nodes/Coda/Coda.node.ts</code></td>
</tr>
<tr>
<td><code>Airtable</code> / <code>AirtableV1</code> / <code>AirtableV2</code> / <code>AirtableTrigger</code> [T]</td>
<td>Airtable 테이블 조작 및 이벤트</td>
<td><code>nodes-base/nodes/Airtable/Airtable.node.ts</code> / <code>v1/AirtableV1.node.ts</code> / <code>v2/AirtableV2.node.ts</code> / <code>AirtableTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="14-이벤트-및-폼">14. 이벤트 및 폼</h2>
<p>폼 제출, 이벤트 등록, 웹비너 등의 이벤트 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Form</code> / <code>FormTrigger</code> / <code>FormTriggerV1</code> / <code>FormTriggerV2</code> [T]</td>
<td>n8n 내장 폼 생성 및 제출 수신</td>
<td><code>nodes-base/nodes/Form/Form.node.ts</code> / <code>FormTrigger.node.ts</code> / <code>v1/FormTriggerV1.node.ts</code> / <code>v2/FormTriggerV2.node.ts</code></td>
</tr>
<tr>
<td><code>FormIoTrigger</code> [T]</td>
<td>Form.io 폼 제출 이벤트</td>
<td><code>nodes-base/nodes/FormIo/FormIoTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>FormstackTrigger</code> [T]</td>
<td>Formstack 폼 제출 이벤트</td>
<td><code>nodes-base/nodes/Formstack/FormstackTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>JotFormTrigger</code> [T]</td>
<td>JotForm 폼 제출 이벤트</td>
<td><code>nodes-base/nodes/JotForm/JotFormTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>TypeformTrigger</code> [T]</td>
<td>Typeform 폼 제출 이벤트</td>
<td><code>nodes-base/nodes/Typeform/TypeformTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>WufooTrigger</code> [T]</td>
<td>Wufoo 폼 제출 이벤트</td>
<td><code>nodes-base/nodes/Wufoo/WufooTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>SurveyMonkeyTrigger</code> [T]</td>
<td>SurveyMonkey 응답 이벤트</td>
<td><code>nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>KoBoToolbox</code> / <code>KoBoToolboxTrigger</code> [T]</td>
<td>KoBoToolbox 폼 및 이벤트</td>
<td><code>nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.ts</code> / <code>KoBoToolboxTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>GoToWebinar</code></td>
<td>GoToWebinar 웹비너 관리</td>
<td><code>nodes-base/nodes/GoToWebinar/GoToWebinar.node.ts</code></td>
</tr>
<tr>
<td><code>Zoom</code></td>
<td>Zoom 회의 관리</td>
<td><code>nodes-base/nodes/Zoom/Zoom.node.ts</code></td>
</tr>
<tr>
<td><code>EventbriteTrigger</code> [T]</td>
<td>Eventbrite 이벤트 관리</td>
<td><code>nodes-base/nodes/Eventbrite/EventbriteTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Demio</code></td>
<td>Demio 웹비너 관리</td>
<td><code>nodes-base/nodes/Demio/Demio.node.ts</code></td>
</tr>
<tr>
<td><code>CalTrigger</code> [T]</td>
<td>Cal.com 예약 이벤트</td>
<td><code>nodes-base/nodes/Cal/CalTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>CalendlyTrigger</code> [T]</td>
<td>Calendly 예약 이벤트</td>
<td><code>nodes-base/nodes/Calendly/CalendlyTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>AcuitySchedulingTrigger</code> [T]</td>
<td>Acuity Scheduling 예약 이벤트</td>
<td><code>nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="15-소셜-미디어">15. 소셜 미디어</h2>
<p>SNS 및 소셜 미디어 플랫폼과의 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>FacebookGraphApi</code> / <code>FacebookTrigger</code> [T]</td>
<td>Facebook Graph API 및 이벤트</td>
<td><code>nodes-base/nodes/Facebook/FacebookGraphApi.node.ts</code> / <code>FacebookTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>FacebookLeadAdsTrigger</code> [T]</td>
<td>Facebook Lead Ads 리드 수신</td>
<td><code>nodes-base/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Twitter</code> / <code>TwitterV1</code> / <code>TwitterV2</code></td>
<td>Twitter(X) API</td>
<td><code>nodes-base/nodes/Twitter/Twitter.node.ts</code> / <code>V1/TwitterV1.node.ts</code> / <code>V2/TwitterV2.node.ts</code></td>
</tr>
<tr>
<td><code>LinkedIn</code></td>
<td>LinkedIn API</td>
<td><code>nodes-base/nodes/LinkedIn/LinkedIn.node.ts</code></td>
</tr>
<tr>
<td><code>Reddit</code></td>
<td>Reddit API</td>
<td><code>nodes-base/nodes/Reddit/Reddit.node.ts</code></td>
</tr>
<tr>
<td><code>YouTube</code></td>
<td>YouTube Data API</td>
<td><code>nodes-base/nodes/Google/YouTube/YouTube.node.ts</code></td>
</tr>
<tr>
<td><code>Strava</code> / <code>StravaTrigger</code> [T]</td>
<td>Strava 피트니스 API</td>
<td><code>nodes-base/nodes/Strava/Strava.node.ts</code> / <code>StravaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Spotify</code></td>
<td>Spotify Web API</td>
<td><code>nodes-base/nodes/Spotify/Spotify.node.ts</code></td>
</tr>
<tr>
<td><code>Medium</code></td>
<td>Medium 블로그 API</td>
<td><code>nodes-base/nodes/Medium/Medium.node.ts</code></td>
</tr>
<tr>
<td><code>WordPress</code></td>
<td>WordPress REST API</td>
<td><code>nodes-base/nodes/Wordpress/Wordpress.node.ts</code></td>
</tr>
<tr>
<td><code>PostHog</code></td>
<td>PostHog 분석 이벤트</td>
<td><code>nodes-base/nodes/PostHog/PostHog.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="16-개발-및-devops">16. 개발 및 DevOps</h2>
<p>소프트웨어 개발, CI/CD, Git 관련 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Github</code> / <code>GithubTrigger</code> [T]</td>
<td>GitHub API 및 Webhook 이벤트</td>
<td><code>nodes-base/nodes/Github/Github.node.ts</code> / <code>GithubTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Gitlab</code> / <code>GitlabTrigger</code> [T]</td>
<td>GitLab API 및 Webhook 이벤트</td>
<td><code>nodes-base/nodes/Gitlab/Gitlab.node.ts</code> / <code>GitlabTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>BitbucketTrigger</code> [T]</td>
<td>Bitbucket Webhook 이벤트</td>
<td><code>nodes-base/nodes/Bitbucket/BitbucketTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Git</code></td>
<td>로컬 Git 저장소 명령 실행</td>
<td><code>nodes-base/nodes/Git/Git.node.ts</code></td>
</tr>
<tr>
<td><code>CircleCi</code></td>
<td>CircleCI CI/CD API</td>
<td><code>nodes-base/nodes/CircleCi/CircleCi.node.ts</code></td>
</tr>
<tr>
<td><code>TravisCi</code></td>
<td>Travis CI API</td>
<td><code>nodes-base/nodes/TravisCi/TravisCi.node.ts</code></td>
</tr>
<tr>
<td><code>Jenkins</code></td>
<td>Jenkins CI/CD API</td>
<td><code>nodes-base/nodes/Jenkins/Jenkins.node.ts</code></td>
</tr>
<tr>
<td><code>Npm</code></td>
<td>npm 패키지 정보 조회</td>
<td><code>nodes-base/nodes/Npm/Npm.node.ts</code></td>
</tr>
<tr>
<td><code>Netlify</code> / <code>NetlifyTrigger</code> [T]</td>
<td>Netlify 배포 및 이벤트</td>
<td><code>nodes-base/nodes/Netlify/Netlify.node.ts</code> / <code>NetlifyTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Cloudflare</code></td>
<td>Cloudflare API (DNS, Pages 등)</td>
<td><code>nodes-base/nodes/Cloudflare/Cloudflare.node.ts</code></td>
</tr>
<tr>
<td><code>Rundeck</code></td>
<td>Rundeck 작업 실행</td>
<td><code>nodes-base/nodes/Rundeck/Rundeck.node.ts</code></td>
</tr>
<tr>
<td><code>Grafana</code></td>
<td>Grafana 대시보드 및 알림</td>
<td><code>nodes-base/nodes/Grafana/Grafana.node.ts</code></td>
</tr>
<tr>
<td><code>Splunk</code> / <code>SplunkV1</code> / <code>SplunkV2</code></td>
<td>Splunk 로그 분석</td>
<td><code>nodes-base/nodes/Splunk/Splunk.node.ts</code> / <code>v1/SplunkV1.node.ts</code> / <code>v2/SplunkV2.node.ts</code></td>
</tr>
<tr>
<td><code>SentryIo</code></td>
<td>Sentry 에러 모니터링</td>
<td><code>nodes-base/nodes/SentryIo/SentryIo.node.ts</code></td>
</tr>
<tr>
<td><code>SecurityScorecard</code></td>
<td>SecurityScorecard 보안 평가</td>
<td><code>nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.ts</code></td>
</tr>
<tr>
<td><code>UptimeRobot</code></td>
<td>UptimeRobot 모니터링</td>
<td><code>nodes-base/nodes/UptimeRobot/UptimeRobot.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="17-결제-및-금융">17. 결제 및 금융</h2>
<p>결제 처리, 인보이스, 금융 서비스 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Stripe</code> / <code>StripeTrigger</code> [T]</td>
<td>Stripe 결제 및 Webhook</td>
<td><code>nodes-base/nodes/Stripe/Stripe.node.ts</code> / <code>StripeTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>PayPal</code> / <code>PayPalTrigger</code> [T]</td>
<td>PayPal 결제 및 Webhook</td>
<td><code>nodes-base/nodes/PayPal/PayPal.node.ts</code> / <code>PayPalTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Paddle</code></td>
<td>Paddle 결제 플랫폼</td>
<td><code>nodes-base/nodes/Paddle/Paddle.node.ts</code></td>
</tr>
<tr>
<td><code>Chargebee</code> / <code>ChargebeeTrigger</code> [T]</td>
<td>Chargebee 구독 관리 및 Webhook</td>
<td><code>nodes-base/nodes/Chargebee/Chargebee.node.ts</code> / <code>ChargebeeTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>QuickBooks</code></td>
<td>QuickBooks 회계 API</td>
<td><code>nodes-base/nodes/QuickBooks/QuickBooks.node.ts</code></td>
</tr>
<tr>
<td><code>InvoiceNinja</code> / <code>InvoiceNinjaTrigger</code> [T]</td>
<td>InvoiceNinja 인보이스 관리</td>
<td><code>nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.ts</code> / <code>InvoiceNinjaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Wise</code> / <code>WiseTrigger</code> [T]</td>
<td>Wise(TransferWise) 환전</td>
<td><code>nodes-base/nodes/Wise/Wise.node.ts</code> / <code>WiseTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ProfitWell</code></td>
<td>ProfitWell 수익 분석</td>
<td><code>nodes-base/nodes/ProfitWell/ProfitWell.node.ts</code></td>
</tr>
<tr>
<td><code>CoinGecko</code></td>
<td>CoinGecko 암호화폐 데이터</td>
<td><code>nodes-base/nodes/CoinGecko/CoinGecko.node.ts</code></td>
</tr>
<tr>
<td><code>Marketstack</code></td>
<td>Marketstack 주식 시장 데이터</td>
<td><code>nodes-base/nodes/Marketstack/Marketstack.node.ts</code></td>
</tr>
<tr>
<td><code>Xero</code></td>
<td>Xero 회계 API</td>
<td><code>nodes-base/nodes/Xero/Xero.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="18-aws-서비스">18. AWS 서비스</h2>
<p>Amazon Web Services 서비스 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>AwsS3</code> / <code>AwsS3V1</code> / <code>AwsS3V2</code></td>
<td>S3 객체 저장소</td>
<td><code>nodes-base/nodes/Aws/S3/AwsS3.node.ts</code> / <code>V1/AwsS3V1.node.ts</code> / <code>V2/AwsS3V2.node.ts</code></td>
</tr>
<tr>
<td><code>AwsDynamoDB</code></td>
<td>DynamoDB NoSQL 테이블</td>
<td><code>nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.ts</code></td>
</tr>
<tr>
<td><code>AwsLambda</code></td>
<td>Lambda 함수 호출</td>
<td><code>nodes-base/nodes/Aws/AwsLambda.node.ts</code></td>
</tr>
<tr>
<td><code>AwsSes</code></td>
<td>SES 이메일 발송</td>
<td><code>nodes-base/nodes/Aws/SES/AwsSes.node.ts</code></td>
</tr>
<tr>
<td><code>AwsSns</code> / <code>AwsSnsTrigger</code> [T]</td>
<td>SNS 푸시 알림 및 구독</td>
<td><code>nodes-base/nodes/Aws/AwsSns.node.ts</code> / <code>AwsSnsTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>AwsSqs</code></td>
<td>SQS 메시지 큐</td>
<td><code>nodes-base/nodes/Aws/SQS/AwsSqs.node.ts</code></td>
</tr>
<tr>
<td><code>AwsRekognition</code></td>
<td>Rekognition 이미지 분석</td>
<td><code>nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.ts</code></td>
</tr>
<tr>
<td><code>AwsComprehend</code></td>
<td>Comprehend 텍스트 분석</td>
<td><code>nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.ts</code></td>
</tr>
<tr>
<td><code>AwsTextract</code></td>
<td>Textract 문서 텍스트 추출</td>
<td><code>nodes-base/nodes/Aws/Textract/AwsTextract.node.ts</code></td>
</tr>
<tr>
<td><code>AwsTranscribe</code></td>
<td>Transcribe 음성 인식</td>
<td><code>nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.ts</code></td>
</tr>
<tr>
<td><code>AwsCognito</code></td>
<td>Cognito 사용자 인증</td>
<td><code>nodes-base/nodes/Aws/Cognito/AwsCognito.node.ts</code></td>
</tr>
<tr>
<td><code>AwsIam</code></td>
<td>IAM 권한 관리</td>
<td><code>nodes-base/nodes/Aws/IAM/AwsIam.node.ts</code></td>
</tr>
<tr>
<td><code>AwsElb</code></td>
<td>Elastic Load Balancer</td>
<td><code>nodes-base/nodes/Aws/ELB/AwsElb.node.ts</code></td>
</tr>
<tr>
<td><code>AwsCertificateManager</code></td>
<td>ACM SSL 인증서 관리</td>
<td><code>nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="19-google-서비스">19. Google 서비스</h2>
<p>Google Cloud 및 Workspace 서비스 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>GoogleDrive</code> / <code>GoogleDriveV1</code> / <code>GoogleDriveV2</code> / <code>GoogleDriveTrigger</code> [T]</td>
<td>Google Drive</td>
<td><code>nodes-base/nodes/Google/Drive/GoogleDrive.node.ts</code> / <code>v1/GoogleDriveV1.node.ts</code> / <code>v2/GoogleDriveV2.node.ts</code> / <code>GoogleDriveTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleSheets</code> / <code>GoogleSheetsV1</code> / <code>GoogleSheetsV2</code> / <code>GoogleSheetsTrigger</code> [T]</td>
<td>Google Sheets</td>
<td><code>nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts</code> / <code>v1/GoogleSheetsV1.node.ts</code> / <code>v2/GoogleSheetsV2.node.ts</code> / <code>GoogleSheetsTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleCalendar</code> / <code>GoogleCalendarTrigger</code> [T]</td>
<td>Google Calendar</td>
<td><code>nodes-base/nodes/Google/Calendar/GoogleCalendar.node.ts</code> / <code>GoogleCalendarTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleAnalytics</code> / <code>GoogleAnalyticsV1</code> / <code>GoogleAnalyticsV2</code></td>
<td>Google Analytics</td>
<td><code>nodes-base/nodes/Google/Analytics/GoogleAnalytics.node.ts</code> / <code>v1/GoogleAnalyticsV1.node.ts</code> / <code>v2/GoogleAnalyticsV2.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleBigQuery</code> / <code>GoogleBigQueryV1</code> / <code>GoogleBigQueryV2</code></td>
<td>Google BigQuery</td>
<td><code>nodes-base/nodes/Google/BigQuery/GoogleBigQuery.node.ts</code> / <code>v1/GoogleBigQueryV1.node.ts</code> / <code>v2/GoogleBigQueryV2.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleContacts</code></td>
<td>Google Contacts</td>
<td><code>nodes-base/nodes/Google/Contacts/GoogleContacts.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleDocs</code></td>
<td>Google Docs</td>
<td><code>nodes-base/nodes/Google/Docs/GoogleDocs.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleSlides</code></td>
<td>Google Slides</td>
<td><code>nodes-base/nodes/Google/Slides/GoogleSlides.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleTasks</code></td>
<td>Google Tasks</td>
<td><code>nodes-base/nodes/Google/Tasks/GoogleTasks.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleChat</code></td>
<td>Google Chat</td>
<td><code>nodes-base/nodes/Google/Chat/GoogleChat.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleBooks</code></td>
<td>Google Books API</td>
<td><code>nodes-base/nodes/Google/Books/GoogleBooks.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleTranslate</code></td>
<td>Google Translate</td>
<td><code>nodes-base/nodes/Google/Translate/GoogleTranslate.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleCloudNaturalLanguage</code></td>
<td>Google Cloud NLP</td>
<td><code>nodes-base/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleCloudStorage</code></td>
<td>Google Cloud Storage</td>
<td><code>nodes-base/nodes/Google/CloudStorage/GoogleCloudStorage.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleFirebaseCloudFirestore</code></td>
<td>Firebase Firestore</td>
<td><code>nodes-base/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleFirebaseRealtimeDatabase</code></td>
<td>Firebase Realtime DB</td>
<td><code>nodes-base/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.ts</code></td>
</tr>
<tr>
<td><code>GooglePerspective</code></td>
<td>Perspective API (유해 텍스트 감지)</td>
<td><code>nodes-base/nodes/Google/Perspective/GooglePerspective.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleAds</code></td>
<td>Google Ads API</td>
<td><code>nodes-base/nodes/Google/Ads/GoogleAds.node.ts</code></td>
</tr>
<tr>
<td><code>GoogleBusinessProfile</code> / <code>GoogleBusinessProfileTrigger</code> [T]</td>
<td>Google Business Profile</td>
<td><code>nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.ts</code> / <code>GoogleBusinessProfileTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>GSuiteAdmin</code></td>
<td>Google Workspace Admin SDK</td>
<td><code>nodes-base/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.ts</code></td>
</tr>
<tr>
<td><code>Gmail</code> / <code>GmailV1</code> / <code>GmailV2</code> / <code>GmailTrigger</code> [T]</td>
<td>Gmail 이메일</td>
<td><code>nodes-base/nodes/Google/Gmail/Gmail.node.ts</code> / <code>v1/GmailV1.node.ts</code> / <code>v2/GmailV2.node.ts</code> / <code>GmailTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>YouTube</code></td>
<td>YouTube Data API</td>
<td><code>nodes-base/nodes/Google/YouTube/YouTube.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="20-microsoft--azure-서비스">20. Microsoft / Azure 서비스</h2>
<p>Microsoft 365 및 Azure 서비스 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>MicrosoftTeams</code> / <code>MicrosoftTeamsV1</code> / <code>MicrosoftTeamsV2</code> / <code>MicrosoftTeamsTrigger</code> [T]</td>
<td>Microsoft Teams</td>
<td><code>nodes-base/nodes/Microsoft/Teams/MicrosoftTeams.node.ts</code> / <code>v1/MicrosoftTeamsV1.node.ts</code> / <code>v2/MicrosoftTeamsV2.node.ts</code> / <code>MicrosoftTeamsTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftOutlook</code> / <code>MicrosoftOutlookV1</code> / <code>MicrosoftOutlookV2</code> / <code>MicrosoftOutlookTrigger</code> [T]</td>
<td>Microsoft Outlook 이메일</td>
<td><code>nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlook.node.ts</code> / <code>v1/MicrosoftOutlookV1.node.ts</code> / <code>v2/MicrosoftOutlookV2.node.ts</code> / <code>MicrosoftOutlookTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftExcel</code> / <code>MicrosoftExcelV1</code> / <code>MicrosoftExcelV2</code></td>
<td>Microsoft Excel</td>
<td><code>nodes-base/nodes/Microsoft/Excel/MicrosoftExcel.node.ts</code> / <code>v1/MicrosoftExcelV1.node.ts</code> / <code>v2/MicrosoftExcelV2.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftOneDrive</code> / <code>MicrosoftOneDriveTrigger</code> [T]</td>
<td>Microsoft OneDrive</td>
<td><code>nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts</code> / <code>MicrosoftOneDriveTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftSharePoint</code></td>
<td>Microsoft SharePoint</td>
<td><code>nodes-base/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftToDo</code></td>
<td>Microsoft To Do</td>
<td><code>nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftEntra</code></td>
<td>Microsoft Entra ID (인증)</td>
<td><code>nodes-base/nodes/Microsoft/Entra/MicrosoftEntra.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftGraphSecurity</code></td>
<td>Microsoft Graph Security</td>
<td><code>nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.ts</code></td>
</tr>
<tr>
<td><code>MicrosoftDynamicsCrm</code></td>
<td>Microsoft Dynamics 365</td>
<td><code>nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.ts</code></td>
</tr>
<tr>
<td><code>AzureCosmosDb</code></td>
<td>Azure Cosmos DB</td>
<td><code>nodes-base/nodes/Microsoft/AzureCosmosDb/AzureCosmosDb.node.ts</code></td>
</tr>
<tr>
<td><code>AzureStorage</code></td>
<td>Azure Blob Storage</td>
<td><code>nodes-base/nodes/Microsoft/Storage/AzureStorage.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="21-ai--ml-nodes-base">21. AI / ML (nodes-base)</h2>
<p>nodes-base 패키지의 AI 및 ML 관련 노드.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>OpenAi</code></td>
<td>OpenAI API (Chat, Image, Audio 등)</td>
<td><code>nodes-base/nodes/OpenAi/OpenAi.node.ts</code></td>
</tr>
<tr>
<td><code>AiTransform</code></td>
<td>AI를 활용한 데이터 변환</td>
<td><code>nodes-base/nodes/AiTransform/AiTransform.node.ts</code></td>
</tr>
<tr>
<td><code>EditImage</code></td>
<td>AI 기반 이미지 편집</td>
<td><code>nodes-base/nodes/EditImage/EditImage.node.ts</code></td>
</tr>
<tr>
<td><code>DeepL</code></td>
<td>DeepL 번역 API</td>
<td><code>nodes-base/nodes/DeepL/DeepL.node.ts</code></td>
</tr>
<tr>
<td><code>MistralAi</code></td>
<td>Mistral AI API</td>
<td><code>nodes-base/nodes/MistralAi/MistralAi.node.ts</code></td>
</tr>
<tr>
<td><code>Perplexity</code></td>
<td>Perplexity AI 검색</td>
<td><code>nodes-base/nodes/Perplexity/Perplexity.node.ts</code></td>
</tr>
<tr>
<td><code>JinaAi</code></td>
<td>Jina AI (검색/임베딩)</td>
<td><code>nodes-base/nodes/JinaAi/JinaAi.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="22-ai-agent-및-체인-langchain">22. AI Agent 및 체인 (LangChain)</h2>
<p>LangChain 기반 AI 에이전트 및 체인 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>클래스 구현</th>
<th>메서드</th>
<th>입력 타입</th>
<th>출력 타입</th>
<th>지원 에이전트</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Agent</code></td>
<td>AI 에이전트 구성 및 실행 (메인 노드)</td>
<td><code>Agent extends VersionedNodeType</code></td>
<td>execute</td>
<td>AiLanguageModel, AiMemory, AiTool, AiOutputParser</td>
<td>Main</td>
<td>Conversational, OpenAI Functions, Plan&amp;Execute, ReAct, SQL, Tools</td>
<td><code>agents/Agent/Agent.node.ts</code></td>
</tr>
<tr>
<td><code>AgentV1</code></td>
<td>Agent 버전 1.x</td>
<td><code>AgentV1 implements INodeType</code></td>
<td>execute</td>
<td>동일</td>
<td>Main</td>
<td>전체</td>
<td><code>agents/Agent/V1/AgentV1.node.ts</code></td>
</tr>
<tr>
<td><code>AgentV2</code></td>
<td>Agent 버전 2.x</td>
<td><code>AgentV2 implements INodeType</code></td>
<td>execute</td>
<td>동일</td>
<td>Main</td>
<td>전체</td>
<td><code>agents/Agent/V2/AgentV2.node.ts</code></td>
</tr>
<tr>
<td><code>AgentV3</code></td>
<td>Agent 버전 3.x (최신)</td>
<td><code>AgentV3 implements INodeType</code></td>
<td>execute</td>
<td>동일</td>
<td>Main</td>
<td>전체 + EngineRequest/Response</td>
<td><code>agents/Agent/V3/AgentV3.node.ts</code></td>
</tr>
<tr>
<td><code>AgentTool</code></td>
<td>에이전트를 도구로 사용</td>
<td><code>AgentTool extends VersionedNodeType</code></td>
<td>execute/supplyData</td>
<td>동일</td>
<td>AiTool</td>
<td>전체</td>
<td><code>agents/Agent/AgentTool.node.ts</code></td>
</tr>
<tr>
<td><code>OpenAiAssistant</code></td>
<td>OpenAI Assistants API 기반 에이전트</td>
<td><code>OpenAiAssistant implements INodeType</code></td>
<td>execute</td>
<td>Main</td>
<td>Main</td>
<td>OpenAI Assistant</td>
<td><code>agents/OpenAiAssistant/OpenAiAssistant.node.ts</code></td>
</tr>
<tr>
<td><code>ChainLlm</code></td>
<td>LLM 체인 — 프롬프트 → LLM → 출력</td>
<td><code>ChainLlm implements INodeType</code></td>
<td>supplyData</td>
<td>AiLanguageModel</td>
<td>AiChain</td>
<td>-</td>
<td><code>chains/ChainLLM/ChainLlm.node.ts</code></td>
</tr>
<tr>
<td><code>ChainRetrievalQa</code></td>
<td>RAG 체인 — Retriever + LLM 조합</td>
<td><code>ChainRetrievalQa implements INodeType</code></td>
<td>supplyData</td>
<td>AiLanguageModel, AiRetriever</td>
<td>AiChain</td>
<td>-</td>
<td><code>chains/ChainRetrievalQA/ChainRetrievalQa.node.ts</code></td>
</tr>
<tr>
<td><code>ChainSummarization</code></td>
<td>텍스트 요약 체인</td>
<td><code>ChainSummarization extends VersionedNodeType</code></td>
<td>supplyData</td>
<td>AiLanguageModel, AiDocument</td>
<td>AiChain</td>
<td>-</td>
<td><code>chains/ChainSummarization/ChainSummarization.node.ts</code></td>
</tr>
<tr>
<td><code>InformationExtractor</code></td>
<td>텍스트에서 구조화된 정보 추출</td>
<td><code>InformationExtractor implements INodeType</code></td>
<td>execute</td>
<td>AiLanguageModel</td>
<td>Main</td>
<td>-</td>
<td><code>chains/InformationExtractor/InformationExtractor.node.ts</code></td>
</tr>
<tr>
<td><code>SentimentAnalysis</code></td>
<td>텍스트 감성 분석</td>
<td><code>SentimentAnalysis implements INodeType</code></td>
<td>execute</td>
<td>AiLanguageModel</td>
<td>Main</td>
<td>-</td>
<td><code>chains/SentimentAnalysis/SentimentAnalysis.node.ts</code></td>
</tr>
<tr>
<td><code>TextClassifier</code></td>
<td>텍스트 분류</td>
<td><code>TextClassifier implements INodeType</code></td>
<td>execute</td>
<td>AiLanguageModel</td>
<td>Main</td>
<td>-</td>
<td><code>chains/TextClassifier/TextClassifier.node.ts</code></td>
</tr>
<tr>
<td><code>ToolExecutor</code></td>
<td>에이전트가 도구를 실행하는 단계 노드</td>
<td><code>ToolExecutor implements INodeType</code></td>
<td>execute</td>
<td>Main</td>
<td>Main</td>
<td>-</td>
<td><code>ToolExecutor/ToolExecutor.node.ts</code></td>
</tr>
<tr>
<td><code>ModelSelector</code></td>
<td>조건 기준으로 LLM 모델 동적 선택</td>
<td><code>ModelSelector implements INodeType</code></td>
<td>supplyData</td>
<td>-</td>
<td>AiLanguageModel</td>
<td>-</td>
<td><code>ModelSelector/ModelSelector.node.ts</code></td>
</tr>
<tr>
<td><code>Guardrails</code></td>
<td>AI 출력에 대한 안전성 검증 및 필터링</td>
<td><code>Guardrails extends VersionedNodeType</code></td>
<td>execute</td>
<td>Main</td>
<td>Main</td>
<td>-</td>
<td><code>Guardrails/Guardrails.node.ts</code></td>
</tr>
</tbody></table>
<blockquote>
<p><strong>Agent 노드 상세</strong>:</p>
<ul>
<li><strong>버전</strong>: 1.0-1.9 (V1), 2.0-2.3 (V2), 3.0-3.1 (V3, 기본값)</li>
<li><strong>지원 에이전트 타입</strong>:<ul>
<li><strong>Conversational</strong>: 대화형 에이전트 (conversationalAgentExecute)</li>
<li><strong>OpenAI Functions</strong>: OpenAI Function Calling 사용 (openAiFunctionsAgentExecute)</li>
<li><strong>Plan and Execute</strong>: 계획 수립 후 실행 (planAndExecuteAgentExecute)</li>
<li><strong>ReAct</strong>: Reasoning + Acting 패턴 (reActAgentAgentExecute)</li>
<li><strong>SQL</strong>: SQL 데이터베이스 쿼리 (sqlAgentAgentExecute)</li>
<li><strong>Tools</strong>: 범용 도구 에이전트 (toolsAgentExecute, V1/V2/V3 별도 구현)</li>
</ul>
</li>
<li><strong>동적 입력</strong>: Chat Model(필수), Memory(선택, 최대 1개), Tools(무제한), Output Parser(선택, 최대 1개)</li>
</ul>
</blockquote>
<hr>
<h2 id="23-llm-모델-연결-langchain">23. LLM 모델 연결 (LangChain)</h2>
<p>LLM 모델을 에이전트/체인에 연결하는 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>클래스 구현</th>
<th>메서드</th>
<th>LangChain 라이브러리</th>
<th>출력 타입</th>
<th>자격증명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>LmChatOpenAi</code></td>
<td>OpenAI Chat 모델 (GPT-4 등)</td>
<td><code>LmChatOpenAi implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (ChatOpenAI)</td>
<td>AiLanguageModel</td>
<td>openAiApi</td>
<td><code>llms/LMChatOpenAi/LmChatOpenAi.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatAnthropic</code></td>
<td>Anthropic Claude 모델</td>
<td><code>LmChatAnthropic implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/anthropic</code> (ChatAnthropic)</td>
<td>AiLanguageModel</td>
<td>anthropicApi</td>
<td><code>llms/LMChatAnthropic/LmChatAnthropic.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatGoogleGemini</code></td>
<td>Google Gemini 모델</td>
<td><code>LmChatGoogleGemini implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/google-genai</code> (ChatGoogleGenerativeAI)</td>
<td>AiLanguageModel</td>
<td>googlePalmApi</td>
<td><code>llms/LmChatGoogleGemini/LmChatGoogleGemini.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatGoogleVertex</code></td>
<td>Google Vertex AI 모델</td>
<td><code>LmChatGoogleVertex implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/google-vertexai</code> (ChatVertexAI)</td>
<td>AiLanguageModel</td>
<td>googleVertexOAuth2Api</td>
<td><code>llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatAwsBedrock</code></td>
<td>AWS Bedrock 모델</td>
<td><code>LmChatAwsBedrock implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/aws</code> (ChatBedrock)</td>
<td>AiLanguageModel</td>
<td>aws</td>
<td><code>llms/LmChatAwsBedrock/LmChatAwsBedrock.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatAzureOpenAi</code></td>
<td>Azure OpenAI 모델</td>
<td><code>LmChatAzureOpenAi implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (AzureChatOpenAI)</td>
<td>AiLanguageModel</td>
<td>azureOpenAiApi</td>
<td><code>llms/LmChatAzureOpenAi/LmChatAzureOpenAi.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatMistralCloud</code></td>
<td>Mistral Cloud 모델</td>
<td><code>LmChatMistralCloud implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/mistralai</code> (ChatMistralAI)</td>
<td>AiLanguageModel</td>
<td>mistralCloudApi</td>
<td><code>llms/LmChatMistralCloud/LmChatMistralCloud.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatCohere</code></td>
<td>Cohere 모델</td>
<td><code>LmChatCohere implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/cohere</code> (ChatCohere)</td>
<td>AiLanguageModel</td>
<td>cohereApi</td>
<td><code>llms/LmChatCohere/LmChatCohere.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatDeepSeek</code></td>
<td>DeepSeek 모델</td>
<td><code>LmChatDeepSeek implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (ChatOpenAI)</td>
<td>AiLanguageModel</td>
<td>deepSeekApi</td>
<td><code>llms/LmChatDeepSeek/LmChatDeepSeek.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatGroq</code></td>
<td>Groq 모델</td>
<td><code>LmChatGroq implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/groq</code> (ChatGroq)</td>
<td>AiLanguageModel</td>
<td>groqApi</td>
<td><code>llms/LmChatGroq/LmChatGroq.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatOllama</code></td>
<td>Ollama 로컬 모델</td>
<td><code>LmChatOllama implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/ollama</code> (ChatOllama)</td>
<td>AiLanguageModel</td>
<td>-</td>
<td><code>llms/LMChatOllama/LmChatOllama.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatOpenRouter</code></td>
<td>OpenRouter 통합 모델 라우팅</td>
<td><code>LmChatOpenRouter implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (ChatOpenAI)</td>
<td>AiLanguageModel</td>
<td>openRouterApi</td>
<td><code>llms/LmChatOpenRouter/LmChatOpenRouter.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatVercelAiGateway</code></td>
<td>Vercel AI Gateway</td>
<td><code>LmChatVercelAiGateway implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (ChatOpenAI)</td>
<td>AiLanguageModel</td>
<td>httpHeaderAuth</td>
<td><code>llms/LmChatVercelAiGateway/LmChatVercelAiGateway.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatXAiGrok</code></td>
<td>xAI Grok 모델</td>
<td><code>LmChatXAiGrok implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (ChatOpenAI)</td>
<td>AiLanguageModel</td>
<td>xAiApi</td>
<td><code>llms/LmChatXAiGrok/LmChatXAiGrok.node.ts</code></td>
</tr>
<tr>
<td><code>LmChatLemonade</code></td>
<td>Lemonade 모델</td>
<td><code>LmChatLemonade implements INodeType</code></td>
<td>supplyData</td>
<td>Custom</td>
<td>AiLanguageModel</td>
<td>lemonadeApi</td>
<td><code>llms/LMChatLemonade/LmChatLemonade.node.ts</code></td>
</tr>
<tr>
<td><code>LmOpenAi</code></td>
<td>OpenAI Completion 모델 (레거이시)</td>
<td><code>LmOpenAi implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/openai</code> (OpenAI)</td>
<td>AiLanguageModel</td>
<td>openAiApi</td>
<td><code>llms/LMOpenAi/LmOpenAi.node.ts</code></td>
</tr>
<tr>
<td><code>LmOllama</code></td>
<td>Ollama Completion 모델 (레거이시)</td>
<td><code>LmOllama implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/ollama</code> (Ollama)</td>
<td>AiLanguageModel</td>
<td>-</td>
<td><code>llms/LMOllama/LmOllama.node.ts</code></td>
</tr>
<tr>
<td><code>LmCohere</code></td>
<td>Cohere Completion 모델 (레거이시)</td>
<td><code>LmCohere implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/cohere</code> (Cohere)</td>
<td>AiLanguageModel</td>
<td>cohereApi</td>
<td><code>llms/LMCohere/LmCohere.node.ts</code></td>
</tr>
<tr>
<td><code>LmLemonade</code></td>
<td>Lemonade Completion 모델 (레거이시)</td>
<td><code>LmLemonade implements INodeType</code></td>
<td>supplyData</td>
<td>Custom</td>
<td>AiLanguageModel</td>
<td>lemonadeApi</td>
<td><code>llms/LMLemonade/LmLemonade.node.ts</code></td>
</tr>
<tr>
<td><code>LmOpenHuggingFaceInference</code></td>
<td>HuggingFace Inference API</td>
<td><code>LmOpenHuggingFaceInference implements INodeType</code></td>
<td>supplyData</td>
<td><code>@langchain/community</code> (HuggingFaceInference)</td>
<td>AiLanguageModel</td>
<td>huggingFaceApi</td>
<td><code>llms/LMOpenHuggingFaceInference/LmOpenHuggingFaceInference.node.ts</code></td>
</tr>
</tbody></table>
<blockquote>
<p><strong>공통 특징</strong>:</p>
<ul>
<li>모든 LLM 노드는 <code>ISupplyDataFunctions</code>를 통해 LangChain 모델 인스턴스를 제공</li>
<li><code>listSearch.searchModels</code> 메서드로 사용 가능한 모델 목록 동적 로드</li>
<li>N8nLlmTracing으로 LLM 호출 추적 및 로깅</li>
<li>HTTP 프록시 에이전트 지원 (getProxyAgent)</li>
<li>실패 시 자동 재시도 핸들러 (makeN8nLlmFailedAttemptHandler)</li>
</ul>
</blockquote>
<hr>
<h2 id="24-embeddings-langchain">24. Embeddings (LangChain)</h2>
<p>텍스트를 벡터로 변환하는 Embedding 모델 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>EmbeddingsOpenAi</code></td>
<td>OpenAI Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsOpenAI/EmbeddingsOpenAi.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsAzureOpenAi</code></td>
<td>Azure OpenAI Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsAzureOpenAi/EmbeddingsAzureOpenAi.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsCohere</code></td>
<td>Cohere Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsCohere/EmbeddingsCohere.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsGoogleGemini</code></td>
<td>Google Gemini Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsGoogleGemini/EmbeddingsGoogleGemini.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsGoogleVertex</code></td>
<td>Google Vertex AI Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsGoogleVertex/EmbeddingsGoogleVertex.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsAwsBedrock</code></td>
<td>AWS Bedrock Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsAwsBedrock/EmbeddingsAwsBedrock.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsHuggingFaceInference</code></td>
<td>HuggingFace Inference Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsHuggingFaceInference/EmbeddingsHuggingFaceInference.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsOllama</code></td>
<td>Ollama 로컬 Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsMistralCloud</code></td>
<td>Mistral Cloud Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsMistralCloud/EmbeddingsMistralCloud.node.ts</code></td>
</tr>
<tr>
<td><code>EmbeddingsLemonade</code></td>
<td>Lemonade Embeddings</td>
<td><code>@n8n/nodes-langchain/nodes/embeddings/EmbeddingsLemonade/EmbeddingsLemonade.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="25-벡터-저장소-langchain">25. 벡터 저장소 (LangChain)</h2>
<p>벡터 DB와의 연동 및 조회 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>VectorStorePinecone</code> / <code>Insert</code> / <code>Load</code></td>
<td>Pinecone 벡터 저장소</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStorePinecone/</code></td>
</tr>
<tr>
<td><code>VectorStoreQdrant</code></td>
<td>Qdrant 벡터 저장소</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreQdrant/VectorStoreQdrant.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreSupabase</code> / <code>Insert</code> / <code>Load</code></td>
<td>Supabase pgvector</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreSupabase/</code></td>
</tr>
<tr>
<td><code>VectorStorePGVector</code></td>
<td>PostgreSQL pgvector</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStorePgVector/VectorStorePGVector.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreRedis</code></td>
<td>Redis Vector Search</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreRedis/VectorStoreRedis.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreMilvus</code></td>
<td>Milvus 벡터 저장소</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreMilvus/VectorStoreMilvus.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreWeaviate</code></td>
<td>Weaviate 벡터 저장소</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreZep</code> / <code>Insert</code> / <code>Load</code></td>
<td>Zep 벡터 저장소</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreZep/</code></td>
</tr>
<tr>
<td><code>VectorStoreMongoDBAtlas</code></td>
<td>MongoDB Atlas Vector Search</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreMongoDBAtlas/VectorStoreMongoDBAtlas.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreAzureAISearch</code></td>
<td>Azure AI Search</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreAzureAISearch/VectorStoreAzureAISearch.node.ts</code></td>
</tr>
<tr>
<td><code>VectorStoreInMemory</code> / <code>Insert</code> / <code>Load</code></td>
<td>메모리 내 벡터 저장소 (테스트용)</td>
<td><code>@n8n/nodes-langchain/nodes/vector_store/VectorStoreInMemory/</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="26-메모리-langchain">26. 메모리 (LangChain)</h2>
<p>AI 에이전트의 대화 이력 및 메모리 관리 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>클래스 구현</th>
<th>메서드</th>
<th>출력 타입</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>MemoryBufferWindow</code></td>
<td>윈도우 기반 대화 이력 저장</td>
<td><code>MemoryBufferWindow implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryBufferWindow/MemoryBufferWindow.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryManager</code></td>
<td>메모리 저장소 관리</td>
<td><code>MemoryManager implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryManager/MemoryManager.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryChatRetriever</code></td>
<td>메모리에서 관련 대화 검색</td>
<td><code>MemoryChatRetriever implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryChatRetriever/MemoryChatRetriever.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryRedisChat</code></td>
<td>Redis 기반 대화 메모리</td>
<td><code>MemoryRedisChat implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryRedisChat/MemoryRedisChat.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryPostgresChat</code></td>
<td>PostgreSQL 기반 대화 메모리</td>
<td><code>MemoryPostgresChat implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryPostgresChat/MemoryPostgresChat.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryMongoDbChat</code></td>
<td>MongoDB 기반 대화 메모리</td>
<td><code>MemoryMongoDbChat implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryMongoDbChat/MemoryMongoDbChat.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryMotorhead</code></td>
<td>Motorhead 기반 대화 메모리</td>
<td><code>MemoryMotorhead implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryMotorhead/MemoryMotorhead.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryXata</code></td>
<td>Xata 기반 대화 메모리</td>
<td><code>MemoryXata implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryXata/MemoryXata.node.ts</code></td>
</tr>
<tr>
<td><code>MemoryZep</code></td>
<td>Zep 기반 장기 메모리</td>
<td><code>MemoryZep implements INodeType</code></td>
<td>supplyData</td>
<td>AiMemory</td>
<td><code>memory/MemoryZep/MemoryZep.node.ts</code></td>
</tr>
</tbody></table>
<blockquote>
<p><strong>참고</strong>: 모든 메모리 노드는 <code>@langchain/community/memory</code> 또는 관련 라이브러리를 사용하며, <code>ISupplyDataFunctions</code>를 통해 메모리 인스턴스를 제공합니다.</p>
</blockquote>
<hr>
<h2 id="27-ai-도구-langchain">27. AI 도구 (LangChain)</h2>
<p>에이전트가 호출할 수 있는 Tool 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>ToolCalculator</code></td>
<td>수학 계산 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolCalculator/ToolCalculator.node.ts</code></td>
</tr>
<tr>
<td><code>ToolCode</code></td>
<td>코드 실행 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts</code></td>
</tr>
<tr>
<td><code>ToolHttpRequest</code></td>
<td>HTTP 요청 실행 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolHttpRequest/ToolHttpRequest.node.ts</code></td>
</tr>
<tr>
<td><code>ToolWorkflow</code> / <code>V1</code> / <code>V2</code></td>
<td>다른 워크플로우를 도구로 호출</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolWorkflow/</code></td>
</tr>
<tr>
<td><code>ToolVectorStore</code></td>
<td>벡터 저장소 검색 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolVectorStore/ToolVectorStore.node.ts</code></td>
</tr>
<tr>
<td><code>ToolSerpApi</code></td>
<td>SerpAPI 검색 엔진 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolSerpApi/ToolSerpApi.node.ts</code></td>
</tr>
<tr>
<td><code>ToolSearXng</code></td>
<td>SearXng 검색 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolSearXng/ToolSearXng.node.ts</code></td>
</tr>
<tr>
<td><code>ToolWikipedia</code></td>
<td>Wikipedia 검색 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts</code></td>
</tr>
<tr>
<td><code>ToolWolframAlpha</code></td>
<td>Wolfram Alpha 계산 도구</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolWolframAlpha/ToolWolframAlpha.node.ts</code></td>
</tr>
<tr>
<td><code>ToolThink</code></td>
<td>내부 추론 단계 도구 (Chain-of-Thought)</td>
<td><code>@n8n/nodes-langchain/nodes/tools/ToolThink/ToolThink.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="28-retriever-langchain">28. Retriever (LangChain)</h2>
<p>벡터 저장소에서 관련 정보를 검색하는 Retriever 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>RetrieverVectorStore</code></td>
<td>벡터 저장소 기본 Retriever</td>
<td><code>@n8n/nodes-langchain/nodes/retrievers/RetrieverVectorStore/RetrieverVectorStore.node.ts</code></td>
</tr>
<tr>
<td><code>RetrieverContextualCompression</code></td>
<td>검색 결과를 컨텍스트 기준으로 압축</td>
<td><code>@n8n/nodes-langchain/nodes/retrievers/RetrieverContextualCompression/RetrieverContextualCompression.node.ts</code></td>
</tr>
<tr>
<td><code>RetrieverMultiQuery</code></td>
<td>여러 쿼리로 검색 후 결과 통합</td>
<td><code>@n8n/nodes-langchain/nodes/retrievers/RetrieverMultiQuery/RetrieverMultiQuery.node.ts</code></td>
</tr>
<tr>
<td><code>RetrieverWorkflow</code></td>
<td>다른 워크플로우를 Retriever로 사용</td>
<td><code>@n8n/nodes-langchain/nodes/retrievers/RetrieverWorkflow/RetrieverWorkflow.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="29-텍스트-분할-및-파싱-langchain">29. 텍스트 분할 및 파싱 (LangChain)</h2>
<p>긴 텍스트를 청크로 분할하거나 LLM 출력을 파싱하는 노드. <code>[LC]</code></p>
<p><strong>Text Splitters:</strong></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>TextSplitterCharacterTextSplitter</code></td>
<td>문자 단위로 텍스트 분할</td>
<td><code>@n8n/nodes-langchain/nodes/text_splitters/TextSplitterCharacterTextSplitter/TextSplitterCharacterTextSplitter.node.ts</code></td>
</tr>
<tr>
<td><code>TextSplitterRecursiveCharacterTextSplitter</code></td>
<td>재귀적으로 구조를 유지하며 분할</td>
<td><code>@n8n/nodes-langchain/nodes/text_splitters/TextSplitterRecursiveCharacterTextSplitter/TextSplitterRecursiveCharacterTextSplitter.node.ts</code></td>
</tr>
<tr>
<td><code>TextSplitterTokenSplitter</code></td>
<td>토큰 단위로 텍스트 분할</td>
<td><code>@n8n/nodes-langchain/nodes/text_splitters/TextSplitterTokenSplitter/TextSplitterTokenSplitter.node.ts</code></td>
</tr>
</tbody></table>
<p><strong>Output Parsers:</strong></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>OutputParserStructured</code></td>
<td>LLM 출력을 지정된 스키마로 파싱</td>
<td><code>@n8n/nodes-langchain/nodes/output_parser/OutputParserStructured/OutputParserStructured.node.ts</code></td>
</tr>
<tr>
<td><code>OutputParserItemList</code></td>
<td>LLM 출력을 리스트로 파싱</td>
<td><code>@n8n/nodes-langchain/nodes/output_parser/OutputParserItemList/OutputParserItemList.node.ts</code></td>
</tr>
<tr>
<td><code>OutputParserAutofixing</code></td>
<td>파싱 실패 시 자동 수정 재시도</td>
<td><code>@n8n/nodes-langchain/nodes/output_parser/OutputParserAutofixing/OutputParserAutofixing.node.ts</code></td>
</tr>
</tbody></table>
<p><strong>Rerankers:</strong></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>RerankerCohere</code></td>
<td>Cohere Reranker로 검색 결과 재정렬</td>
<td><code>@n8n/nodes-langchain/nodes/rerankers/RerankerCohere/RerankerCohere.node.ts</code></td>
</tr>
</tbody></table>
<p><strong>Document Loaders:</strong></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>DocumentBinaryInputLoader</code></td>
<td>바이너리 입력을 문서로 로드</td>
<td><code>@n8n/nodes-langchain/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.ts</code></td>
</tr>
<tr>
<td><code>DocumentDefaultDataLoader</code></td>
<td>기본 데이터를 문서로 로드</td>
<td><code>@n8n/nodes-langchain/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.ts</code></td>
</tr>
<tr>
<td><code>DocumentGithubLoader</code></td>
<td>GitHub 저장소에서 문서 로드</td>
<td><code>@n8n/nodes-langchain/nodes/document_loaders/DocumentGithubLoader/DocumentGithubLoader.node.ts</code></td>
</tr>
<tr>
<td><code>DocumentJsonInputLoader</code></td>
<td>JSON 입력을 문서로 로드</td>
<td><code>@n8n/nodes-langchain/nodes/document_loaders/DocumentJSONInputLoader/DocumentJsonInputLoader.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="30-mcp-langchain">30. MCP (LangChain)</h2>
<p>Model Context Protocol 관련 노드. <code>[LC]</code></p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>McpClient</code></td>
<td>MCP 서버에 연결하여 도구 목록 조회 및 호출</td>
<td><code>@n8n/nodes-langchain/nodes/mcp/McpClient/McpClient.node.ts</code></td>
</tr>
<tr>
<td><code>McpClientTool</code></td>
<td>MCP 클라이언트의 개별 도구 노드</td>
<td><code>@n8n/nodes-langchain/nodes/mcp/McpClientTool/McpClientTool.node.ts</code></td>
</tr>
<tr>
<td><code>McpTrigger</code></td>
<td>MCP 프로토콜로 워크플로우 트리거</td>
<td><code>@n8n/nodes-langchain/nodes/trigger/McpTrigger/McpTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="31-n8n-내부-및-기타">31. n8n 내부 및 기타</h2>
<p>n8n 자체 기능과 관련된 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>N8n</code></td>
<td>n8n 내부 API 호출 (워크플로우, 실행 등)</td>
<td><code>nodes-base/nodes/N8n/N8n.node.ts</code></td>
</tr>
<tr>
<td><code>N8nTrigger</code></td>
<td>n8n 내부 이벤트 트리거</td>
<td><code>nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>NoOp</code></td>
<td>아무 작업 없이 통과 (디버깅용)</td>
<td><code>nodes-base/nodes/NoOp/NoOp.node.ts</code></td>
</tr>
<tr>
<td><code>StickyNote</code></td>
<td>캔버스 위의 메모</td>
<td><code>nodes-base/nodes/StickyNote/StickyNote.node.ts</code></td>
</tr>
<tr>
<td><code>DebugHelper</code></td>
<td>디버깅을 위한 데이터 확인</td>
<td><code>nodes-base/nodes/DebugHelper/DebugHelper.node.ts</code></td>
</tr>
<tr>
<td><code>Simulate</code> / <code>SimulateTrigger</code></td>
<td>테스트용 모의 데이터 생성</td>
<td><code>nodes-base/nodes/Simulate/</code></td>
</tr>
<tr>
<td><code>ExecutionData</code></td>
<td>현재 실행의 메타데이터 조회</td>
<td><code>nodes-base/nodes/ExecutionData/ExecutionData.node.ts</code></td>
</tr>
<tr>
<td><code>N8nTrainingCustomerDatastore</code></td>
<td>n8n 학습용 샘플 데이터 스토어</td>
<td><code>nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts</code></td>
</tr>
<tr>
<td><code>N8nTrainingCustomerMessenger</code></td>
<td>n8n 학습용 샘플 메신저</td>
<td><code>nodes-base/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.ts</code></td>
</tr>
<tr>
<td><code>E2eTest</code></td>
<td>E2E 테스트 전용 노드</td>
<td><code>nodes-base/nodes/E2eTest/E2eTest.node.ts</code></td>
</tr>
<tr>
<td><code>PostBin</code></td>
<td>PostBin을 통한 요청 디버깅</td>
<td><code>nodes-base/nodes/PostBin/PostBin.node.ts</code></td>
</tr>
<tr>
<td><code>Ssh</code></td>
<td>SSH 원격 연결 및 명령 실행</td>
<td><code>nodes-base/nodes/Ssh/Ssh.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="32-마케팅-및-이메일-자동화">32. 마케팅 및 이메일 자동화</h2>
<p>이메일 마케팅, 뉴스레터, 리드 관리 등의 마케팅 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Mailchimp</code> / <code>MailchimpTrigger</code> [T]</td>
<td>Mailchimp 이메일 마케팅</td>
<td><code>nodes-base/nodes/Mailchimp/Mailchimp.node.ts</code> / <code>MailchimpTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>MailerLite</code> / <code>MailerLiteV1</code> / <code>MailerLiteV2</code> / <code>MailerLiteTrigger</code> [T]</td>
<td>MailerLite 이메일 마케팅</td>
<td><code>nodes-base/nodes/MailerLite/MailerLite.node.ts</code> / <code>v1/MailerLiteV1.node.ts</code> / <code>v2/MailerLiteV2.node.ts</code></td>
</tr>
<tr>
<td><code>Mailjet</code> / <code>MailjetTrigger</code> [T]</td>
<td>Mailjet 이메일 발송 및 이벤트</td>
<td><code>nodes-base/nodes/Mailjet/Mailjet.node.ts</code> / <code>MailjetTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ConvertKit</code> / <code>ConvertKitTrigger</code> [T]</td>
<td>ConvertKit 뉴스레터</td>
<td><code>nodes-base/nodes/ConvertKit/ConvertKit.node.ts</code> / <code>ConvertKitTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>GetResponse</code> / <code>GetResponseTrigger</code> [T]</td>
<td>GetResponse 이메일 마케팅</td>
<td><code>nodes-base/nodes/GetResponse/GetResponse.node.ts</code> / <code>GetResponseTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Brevo</code> / <code>BrevoTrigger</code> [T]</td>
<td>Brevo (Sendinblue) 이메일 마케팅</td>
<td><code>nodes-base/nodes/Brevo/Brevo.node.ts</code> / <code>BrevoTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Autopilot</code> / <code>AutopilotTrigger</code> [T]</td>
<td>Autopilot 마케팅 자동화</td>
<td><code>nodes-base/nodes/Autopilot/Autopilot.node.ts</code> / <code>AutopilotTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Mautic</code> / <code>MauticTrigger</code> [T]</td>
<td>Mautic 오픈소스 마케팅 자동화</td>
<td><code>nodes-base/nodes/Mautic/Mautic.node.ts</code> / <code>MauticTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>CustomerIo</code> / <code>CustomerIoTrigger</code> [T]</td>
<td>Customer.io 고객 메시징</td>
<td><code>nodes-base/nodes/CustomerIo/CustomerIo.node.ts</code> / <code>CustomerIoTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Emelia</code> / <code>EmeliaTrigger</code> [T]</td>
<td>Emelia 콜드 이메일</td>
<td><code>nodes-base/nodes/Emelia/Emelia.node.ts</code> / <code>EmeliaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Lemlist</code> / <code>LemlistV1</code> / <code>LemlistV2</code> / <code>LemlistTrigger</code> [T]</td>
<td>Lemlist 콜드 이메일</td>
<td><code>nodes-base/nodes/Lemlist/Lemlist.node.ts</code> / <code>v1/LemlistV1.node.ts</code> / <code>v2/LemlistV2.node.ts</code> / <code>LemlistTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Egoi</code></td>
<td>Egoi 이메일 마케팅</td>
<td><code>nodes-base/nodes/Egoi/Egoi.node.ts</code></td>
</tr>
<tr>
<td><code>Iterable</code></td>
<td>Iterable 고객 참여</td>
<td><code>nodes-base/nodes/Iterable/Iterable.node.ts</code></td>
</tr>
<tr>
<td><code>Segment</code></td>
<td>Segment 고객 데이터 플랫폼</td>
<td><code>nodes-base/nodes/Segment/Segment.node.ts</code></td>
</tr>
<tr>
<td><code>Vero</code></td>
<td>Vero 이벤트 기반 이메일</td>
<td><code>nodes-base/nodes/Vero/Vero.node.ts</code></td>
</tr>
<tr>
<td><code>ActionNetwork</code></td>
<td>Action Network 행동 자동화</td>
<td><code>nodes-base/nodes/ActionNetwork/ActionNetwork.node.ts</code></td>
</tr>
<tr>
<td><code>Mailcheck</code></td>
<td>Mailcheck 이메일 유효성 검사</td>
<td><code>nodes-base/nodes/Mailcheck/Mailcheck.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="33-모니터링-및-관측성">33. 모니터링 및 관측성</h2>
<p>시스템 모니터링, 로깅, 알림 관련 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Grafana</code></td>
<td>Grafana 대시보드 및 알림</td>
<td><code>nodes-base/nodes/Grafana/Grafana.node.ts</code></td>
</tr>
<tr>
<td><code>Splunk</code> / <code>SplunkV1</code> / <code>SplunkV2</code></td>
<td>Splunk SIEM 및 로그 분석</td>
<td><code>nodes-base/nodes/Splunk/Splunk.node.ts</code> / <code>v1/SplunkV1.node.ts</code> / <code>v2/SplunkV2.node.ts</code></td>
</tr>
<tr>
<td><code>UptimeRobot</code></td>
<td>UptimeRobot 웹사이트 모니터링</td>
<td><code>nodes-base/nodes/UptimeRobot/UptimeRobot.node.ts</code></td>
</tr>
<tr>
<td><code>SentryIo</code></td>
<td>Sentry 에러 트래킹</td>
<td><code>nodes-base/nodes/SentryIo/SentryIo.node.ts</code></td>
</tr>
<tr>
<td><code>PostHog</code></td>
<td>PostHog 제품 분석</td>
<td><code>nodes-base/nodes/PostHog/PostHog.node.ts</code></td>
</tr>
<tr>
<td><code>SecurityScorecard</code></td>
<td>SecurityScorecard 보안 평가</td>
<td><code>nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.ts</code></td>
</tr>
<tr>
<td><code>PagerDuty</code></td>
<td>PagerDuty 인시덴트 관리</td>
<td><code>nodes-base/nodes/PagerDuty/PagerDuty.node.ts</code></td>
</tr>
<tr>
<td><code>Metabase</code></td>
<td>Metabase 비즈니스 인텔리젠스</td>
<td><code>nodes-base/nodes/Metabase/Metabase.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="34-보안-및-인증">34. 보안 및 인증</h2>
<p>보안, 인증, 비밀 관리 관련 노드들.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Okta</code></td>
<td>Okta 아이덴티티 관리</td>
<td><code>nodes-base/nodes/Okta/Okta.node.ts</code></td>
</tr>
<tr>
<td><code>Bitwarden</code></td>
<td>Bitwarden 비밀 관리</td>
<td><code>nodes-base/nodes/Bitwarden/Bitwarden.node.ts</code></td>
</tr>
<tr>
<td><code>Misp</code></td>
<td>MISP 사이버 위협 정보</td>
<td><code>nodes-base/nodes/Misp/Misp.node.ts</code></td>
</tr>
<tr>
<td><code>TheHive</code> / <code>TheHiveTrigger</code> [T]</td>
<td>TheHive SIEM</td>
<td><code>nodes-base/nodes/TheHive/TheHive.node.ts</code> / <code>TheHiveTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>TheHiveProject</code> / <code>TheHiveProjectTrigger</code> [T]</td>
<td>TheHive Project</td>
<td><code>nodes-base/nodes/TheHiveProject/TheHiveProject.node.ts</code> / <code>TheHiveProjectTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>ElasticSecurity</code></td>
<td>Elastic Security</td>
<td><code>nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.ts</code></td>
</tr>
<tr>
<td><code>UrlScanIo</code></td>
<td>UrlScan.io URL 안전성 검사</td>
<td><code>nodes-base/nodes/UrlScanIo/UrlScanIo.node.ts</code></td>
</tr>
<tr>
<td><code>VenafiTlsProtectCloud</code> / <code>VenafiTlsProtectCloudTrigger</code> [T]</td>
<td>Venafi TLS Cloud</td>
<td><code>nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.ts</code> / <code>VenafiTlsProtectCloudTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>VenafiTlsProtectDatacenter</code> / <code>VenafiTlsProtectDatacenterTrigger</code> [T]</td>
<td>Venafi TLS Datacenter</td>
<td><code>nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.ts</code> / <code>VenafiTlsProtectDatacenterTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="35-iot-및-홈-자동화">35. IoT 및 홈 자동화</h2>
<p>IoT 장치 및 스마트홈 연동.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>HomeAssistant</code></td>
<td>Home Assistant 홈 자동화</td>
<td><code>nodes-base/nodes/HomeAssistant/HomeAssistant.node.ts</code></td>
</tr>
<tr>
<td><code>PhilipsHue</code></td>
<td>Philips Hue 스마트 조명</td>
<td><code>nodes-base/nodes/PhilipsHue/PhilipsHue.node.ts</code></td>
</tr>
<tr>
<td><code>Mqtt</code> / <code>MqttTrigger</code> [T]</td>
<td>MQTT (IoT 표준 프로토콜)</td>
<td><code>nodes-base/nodes/MQTT/Mqtt.node.ts</code> / <code>MqttTrigger.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="36-기타-통합">36. 기타 통합</h2>
<p>위 카테고리에 해당하지 않는 기타 서비스 통합.</p>
<table>
<thead>
<tr>
<th>노드 클래스</th>
<th>설명</th>
<th>파일 경로</th>
</tr>
</thead>
<tbody><tr>
<td><code>Shopify</code> / <code>ShopifyTrigger</code> [T]</td>
<td>Shopify 이코머스</td>
<td><code>nodes-base/nodes/Shopify/Shopify.node.ts</code> / <code>ShopifyTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>WooCommerce</code> / <code>WooCommerceTrigger</code> [T]</td>
<td>WooCommerce 이코머스</td>
<td><code>nodes-base/nodes/WooCommerce/WooCommerce.node.ts</code> / <code>WooCommerceTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Magento2</code></td>
<td>Adobe Commerce (Magento)</td>
<td><code>nodes-base/nodes/Magento/Magento2.node.ts</code></td>
</tr>
<tr>
<td><code>Strapi</code></td>
<td>Strapi CMS</td>
<td><code>nodes-base/nodes/Strapi/Strapi.node.ts</code></td>
</tr>
<tr>
<td><code>Contentful</code></td>
<td>Contentful CMS</td>
<td><code>nodes-base/nodes/Contentful/Contentful.node.ts</code></td>
</tr>
<tr>
<td><code>Ghost</code></td>
<td>Ghost CMS</td>
<td><code>nodes-base/nodes/Ghost/Ghost.node.ts</code></td>
</tr>
<tr>
<td><code>Storyblok</code></td>
<td>Storyblok CMS</td>
<td><code>nodes-base/nodes/Storyblok/Storyblok.node.ts</code></td>
</tr>
<tr>
<td><code>Wordpress</code></td>
<td>WordPress CMS</td>
<td><code>nodes-base/nodes/Wordpress/Wordpress.node.ts</code></td>
</tr>
<tr>
<td><code>Webflow</code> / <code>WebflowV1</code> / <code>WebflowV2</code> / <code>WebflowTrigger</code> [T]</td>
<td>Webflow 웹사이트</td>
<td><code>nodes-base/nodes/Webflow/Webflow.node.ts</code> / <code>V1/WebflowV1.node.ts</code> / <code>V2/WebflowV2.node.ts</code> / <code>WebflowTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>FigmaTrigger</code> [T]</td>
<td>Figma 디자인 이벤트</td>
<td><code>nodes-base/nodes/Figma/FigmaTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Adalo</code></td>
<td>Adalo 앱 빌더</td>
<td><code>nodes-base/nodes/Adalo/Adalo.node.ts</code></td>
</tr>
<tr>
<td><code>Bubble</code></td>
<td>Bubble 앱 빌더</td>
<td><code>nodes-base/nodes/Bubble/Bubble.node.ts</code></td>
</tr>
<tr>
<td><code>Airtop</code></td>
<td>Airtop 브라우저 자동화</td>
<td><code>nodes-base/nodes/Airtop/Airtop.node.ts</code></td>
</tr>
<tr>
<td><code>Phantombuster</code></td>
<td>PhantomBuster 스크래핑</td>
<td><code>nodes-base/nodes/Phantombuster/Phantombuster.node.ts</code></td>
</tr>
<tr>
<td><code>Dhl</code></td>
<td>DHL 배송 추적</td>
<td><code>nodes-base/nodes/Dhl/Dhl.node.ts</code></td>
</tr>
<tr>
<td><code>Onfleet</code> / <code>OnfleetTrigger</code> [T]</td>
<td>Onfleet 라스트마일 배송</td>
<td><code>nodes-base/nodes/Onfleet/Onfleet.node.ts</code> / <code>OnfleetTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Oura</code></td>
<td>Oura 웨어러블 건강 데이터</td>
<td><code>nodes-base/nodes/Oura/Oura.node.ts</code></td>
</tr>
<tr>
<td><code>Nasa</code></td>
<td>NASA API (우주 이미지 등)</td>
<td><code>nodes-base/nodes/Nasa/Nasa.node.ts</code></td>
</tr>
<tr>
<td><code>HackerNews</code></td>
<td>Hacker News API</td>
<td><code>nodes-base/nodes/HackerNews/HackerNews.node.ts</code></td>
</tr>
<tr>
<td><code>OpenWeatherMap</code></td>
<td>OpenWeatherMap 날씨 API</td>
<td><code>nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.ts</code></td>
</tr>
<tr>
<td><code>OpenThesaurus</code></td>
<td>OpenThesaurus 동의사전</td>
<td><code>nodes-base/nodes/OpenThesaurus/OpenThesaurus.node.ts</code></td>
</tr>
<tr>
<td><code>LingvaNex</code></td>
<td>LingvaNex 번역</td>
<td><code>nodes-base/nodes/LingvaNex/LingvaNex.node.ts</code></td>
</tr>
<tr>
<td><code>Raindrop</code></td>
<td>Raindrop.io 북마크 관리</td>
<td><code>nodes-base/nodes/Raindrop/Raindrop.node.ts</code></td>
</tr>
<tr>
<td><code>FileMaker</code></td>
<td>FileMaker Pro 데이터베이스</td>
<td><code>nodes-base/nodes/FileMaker/FileMaker.node.ts</code></td>
</tr>
<tr>
<td><code>ERPNext</code></td>
<td>ERPNext ERP 시스템</td>
<td><code>nodes-base/nodes/ERPNext/ERPNext.node.ts</code></td>
</tr>
<tr>
<td><code>Odoo</code></td>
<td>Odoo ERP 시스템</td>
<td><code>nodes-base/nodes/Odoo/Odoo.node.ts</code></td>
</tr>
<tr>
<td><code>ServiceNow</code></td>
<td>ServiceNow IT 서비스 관리</td>
<td><code>nodes-base/nodes/ServiceNow/ServiceNow.node.ts</code></td>
</tr>
<tr>
<td><code>Freshdesk</code></td>
<td>Freshdesk 고객지원</td>
<td><code>nodes-base/nodes/Freshdesk/Freshdesk.node.ts</code></td>
</tr>
<tr>
<td><code>Freshservice</code></td>
<td>Freshservice IT 서비스 관리</td>
<td><code>nodes-base/nodes/Freshservice/Freshservice.node.ts</code></td>
</tr>
<tr>
<td><code>HelpScout</code> / <code>HelpScoutTrigger</code> [T]</td>
<td>HelpScout 고객지원</td>
<td><code>nodes-base/nodes/HelpScout/HelpScout.node.ts</code> / <code>HelpScoutTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Zendesk</code> / <code>ZendeskTrigger</code> [T]</td>
<td>Zendesk 고객지원</td>
<td><code>nodes-base/nodes/Zendesk/Zendesk.node.ts</code> / <code>ZendeskTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>HaloPSA</code></td>
<td>Halo PSA IT 관리</td>
<td><code>nodes-base/nodes/HaloPSA/HaloPSA.node.ts</code></td>
</tr>
<tr>
<td><code>Zammad</code></td>
<td>Zammad 고객지원</td>
<td><code>nodes-base/nodes/Zammad/Zammad.node.ts</code></td>
</tr>
<tr>
<td><code>BambooHr</code></td>
<td>BambooHR 인사관리</td>
<td><code>nodes-base/nodes/BambooHr/BambooHr.node.ts</code></td>
</tr>
<tr>
<td><code>WorkableTrigger</code> [T]</td>
<td>Workable 채용 이벤트</td>
<td><code>nodes-base/nodes/Workable/WorkableTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Orbit</code></td>
<td>Orbit 커뮤니티 관리</td>
<td><code>nodes-base/nodes/Orbit/Orbit.node.ts</code></td>
</tr>
<tr>
<td><code>Affinity</code> / <code>AffinityTrigger</code> [T]</td>
<td>Affinity CRM</td>
<td><code>nodes-base/nodes/Affinity/Affinity.node.ts</code> / <code>AffinityTrigger.node.ts</code></td>
</tr>
<tr>
<td><code>Cockpit</code></td>
<td>Cockpit CMS</td>
<td><code>nodes-base/nodes/Cockpit/Cockpit.node.ts</code></td>
</tr>
<tr>
<td><code>Grist</code></td>
<td>Grist 스프레드시트</td>
<td><code>nodes-base/nodes/Grist/Grist.node.ts</code></td>
</tr>
<tr>
<td><code>QuickChart</code></td>
<td>QuickChart 차트 이미지 생성</td>
<td><code>nodes-base/nodes/QuickChart/QuickChart.node.ts</code></td>
</tr>
<tr>
<td><code>Bannerbear</code></td>
<td>Bannerbear 이미지/비디오 자동 생성</td>
<td><code>nodes-base/nodes/Bannerbear/Bannerbear.node.ts</code></td>
</tr>
<tr>
<td><code>ApiTemplateIo</code></td>
<td>ApiTemplate.io 템플릿 기반 PDF/이미지 생성</td>
<td><code>nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.ts</code></td>
</tr>
<tr>
<td><code>Peekalink</code></td>
<td>Peekalink URL 미리보기</td>
<td><code>nodes-base/nodes/Peekalink/Peekalink.node.ts</code></td>
</tr>
<tr>
<td><code>Cortex</code></td>
<td>Cortex 자동화 플랫폼</td>
<td><code>nodes-base/nodes/Cortex/Cortex.node.ts</code></td>
</tr>
<tr>
<td><code>Beeminder</code></td>
<td>Beeminder 습관 추적</td>
<td><code>nodes-base/nodes/Beeminder/Beeminder.node.ts</code></td>
</tr>
<tr>
<td><code>TimeSaved</code></td>
<td>TimeSaved 커뮤니티 앱</td>
<td><code>nodes-base/nodes/TimeSaved/TimeSaved.node.ts</code></td>
</tr>
<tr>
<td><code>UProc</code></td>
<td>UProc 데이터 처리</td>
<td><code>nodes-base/nodes/UProc/UProc.node.ts</code></td>
</tr>
<tr>
<td><code>UnleashedSoftware</code></td>
<td>Unleashed 재고 관리</td>
<td><code>nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.ts</code></td>
</tr>
<tr>
<td><code>Tapfiliate</code></td>
<td>Tapfiliate 제휴 마케팅</td>
<td><code>nodes-base/nodes/Tapfiliate/Tapfiliate.node.ts</code></td>
</tr>
<tr>
<td><code>SyncroMsp</code> / <code>SyncroMspV1</code></td>
<td>Syncro MSP 관리</td>
<td><code>nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts</code> / <code>v1/SyncroMspV1.node.ts</code></td>
</tr>
<tr>
<td><code>NetscalerAdc</code></td>
<td>Citrix NetScaler ADC</td>
<td><code>nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.ts</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="통계-요약">통계 요약</h2>
<table>
<thead>
<tr>
<th>구분</th>
<th>노드 수</th>
</tr>
</thead>
<tbody><tr>
<td>nodes-base (<code>*.node.ts</code> 파일)</td>
<td>~525</td>
</tr>
<tr>
<td>nodes-langchain (<code>*.node.ts</code> 파일)</td>
<td>~115</td>
</tr>
<tr>
<td><strong>전체 노드 파일 수</strong></td>
<td><strong>~640</strong></td>
</tr>
<tr>
<td>Trigger 노드 (T)</td>
<td>~100+</td>
</tr>
<tr>
<td>버전별 변형 포함 노드</td>
<td>~80+</td>
</tr>
</tbody></table>
<hr>
<hr>
<h2 id="노드-로딩-및-실행-아키텍처">노드 로딩 및 실행 아키텍처</h2>
<h3 id="1-노드-등록-및-로딩">1. 노드 등록 및 로딩</h3>
<p><strong>노드 발견 프로세스</strong> (<code>packages/cli/src/load-nodes-and-credentials.ts</code>):</p>
<pre><code class="language-typescript">// 1. 노드 패키지에서 발견
async init() {
  await this.loadNodesFromNodeModules(nodeModulesDir, &#39;n8n-nodes-base&#39;);
  await this.loadNodesFromNodeModules(nodeModulesDir, &#39;@n8n/n8n-nodes-langchain&#39;);
  await this.loadNodesFromCustomDirectories();
  await this.postProcessLoaders();
}

// 2. 등록 데이터 구조
known: {
  nodes: { &quot;n8n-nodes-base.webhook&quot;: { className: &quot;Webhook&quot;, sourcePath: &quot;...&quot; } }
}
loaded: {
  nodes: { &quot;n8n-nodes-base.webhook&quot;: LoadedClass&lt;INodeType&gt; }
}
types: {
  nodes: [{ name: &quot;n8n-nodes-base.webhook&quot;, displayName: &quot;Webhook&quot;, ... }]
}</code></pre>
<p><strong>노드 접근</strong> (<code>packages/workflow/src/NodeTypes.ts</code>):</p>
<pre><code class="language-typescript">// Workflow 인스턴스를 통한 노드 타입 조회
const nodeType = workflow.nodeTypes.getByNameAndVersion(node.type, node.typeVersion);
// 반환: INodeType 인스턴스 (execute, trigger, webhook, poll 메서드 포함)</code></pre>
<hr>
<h3 id="2-워크플로우-활성화-및-노드-실행">2. 워크플로우 활성화 및 노드 실행</h3>
<h4 id="webhook-노드"><strong>Webhook 노드</strong></h4>
<p><strong>활성화 시</strong> (<code>packages/cli/src/active-workflow-manager.ts:118-188</code>):</p>
<pre><code class="language-typescript">async addWebhooks(workflow, additionalData, mode, activationMode) {
  const webhooks = workflow.getWebhooks(); // 모든 webhook 노드 수집

  for (const webhookData of webhooks) {
    const path = workflow.expression.getSimpleParameterValue(
      node, webhookData.path, mode, {}, { ...additionalData }
    );

    // database에 webhook 등록
    await this.webhookService.storeWebhook({
      workflowId: workflow.id,
      webhookPath: path,
      node: webhookData.node,  // ← 노드 이름 저장
      method: webhookData.httpMethod,
    });
  }
}</code></pre>
<p><strong>실행 시</strong> (<code>packages/cli/src/webhooks/live-webhooks.ts:80-151</code>):</p>
<pre><code class="language-typescript">async executeWebhook(request: WebhookRequest, response: Response) {
  // 1. database에서 webhook 조회
  const webhook = await this.findWebhook(path, httpMethod);

  // 2. workflow 로드
  const workflowData = await this.workflowRepository.findOne({
    where: { id: webhook.workflowId }
  });

  // 3. Workflow 인스턴스 생성
  const workflow = new Workflow({ id, name, nodes, connections, nodeTypes });

  // 4. webhook 노드 찾기
  const workflowStartNode = workflow.getNode(webhook.node);  // ← 저장된 노드 이름 사용

  // 5. webhook 실행
  return await WebhookHelpers.executeWebhook(
    workflow,
    webhookData,
    workflowStartNode,  // ← 시작 노드로 전달
    ...
  );
}</code></pre>
<p><strong>실제 실행</strong> (<code>packages/cli/src/webhooks/webhook-helpers.ts:366-382</code>):</p>
<pre><code class="language-typescript">async executeWebhook(...) {
  // 1. webhook 노드의 webhook() 메서드 실행
  const webhookResultData = await Container.get(WebhookService).runWebhook(
    workflow,
    webhookData,
    workflowStartNode,
    ...
  );

  // 2. WorkflowRunner를 통해 전체 워크플로우 실행
  const executionId = await Container.get(WorkflowRunner).run({
    executionMode: &#39;webhook&#39;,
    executionData: preparedRunExecutionData,  // webhook 노드 출력을 시작 데이터로
    workflowData,
  });
}</code></pre>
<hr>
<h4 id="trigger-노드"><strong>Trigger 노드</strong></h4>
<p><strong>활성화 시</strong> (<code>packages/cli/src/active-workflow-manager.ts:190-281</code>):</p>
<pre><code class="language-typescript">async addTriggersAndPollers(dbWorkflow, workflow, options) {
  const triggerNodes = workflow.getTriggerNodes();

  for (const triggerNode of triggerNodes) {
    // TriggerContext 생성 (emit 콜백 포함)
    const triggerFunctions = this.getExecuteTriggerFunctions(
      dbWorkflow, additionalData, mode, activation
    );

    // trigger() 메서드 호출
    const triggerResponse = await this.triggersAndPollers.runTrigger(
      workflow,
      triggerNode,
      triggerFunctions,
      ...
    );

    // 메모리에 저장 (계속 실행 중)
    this.activeWorkflows.add(workflow.id, { triggerResponses: [triggerResponse] });
  }
}</code></pre>
<p><strong>emit 콜백</strong> (<code>packages/cli/src/active-workflow-manager.ts:339-401</code>):</p>
<pre><code class="language-typescript">getExecuteTriggerFunctions(workflowData, additionalData, mode, activation) {
  return (workflow: Workflow, node: INode) =&gt; {
    const emit = (data: INodeExecutionData[][]) =&gt; {
      // 트리거가 데이터를 emit하면 워크플로우 실행
      const executePromise = this.workflowExecutionService.runWorkflow(
        workflowData,
        node,        // ← trigger 노드
        data,        // ← emit된 데이터
        additionalData,
        mode,
      );
    };

    return new TriggerContext(workflow, node, additionalData, mode, emit);
  };
}</code></pre>
<p><strong>예시 - ManualTrigger 노드</strong>:</p>
<pre><code class="language-typescript">// nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts
async trigger(this: ITriggerFunctions): Promise&lt;ITriggerResponse&gt; {
  const manualTriggerFunction = async () =&gt; {
    this.emit([this.helpers.returnJsonArray([{}])]);  // ← emit 호출
  };

  return { manualTriggerFunction };
}</code></pre>
<hr>
<h4 id="execute-노드-일반-노드"><strong>Execute 노드 (일반 노드)</strong></h4>
<p><strong>실행 시</strong> (<code>packages/core/src/execution-engine/workflow-execute.ts:1404-2100</code>):</p>
<pre><code class="language-typescript">processRunExecutionData(workflow: Workflow): PCancelable&lt;IRun&gt; {
  return new PCancelable(async (resolve) =&gt; {
    // 실행 루프
    while (this.runExecutionData.executionData!.nodeExecutionStack.length !== 0) {
      const executionData: IExecuteData =
        this.runExecutionData.executionData!.nodeExecutionStack.shift();

      const executionNode = executionData.node;

      // 노드 실행
      const runNodeData = await this.runNode(
        workflow,
        executionData,
        this.runExecutionData,
        runIndex,
        ...
      );

      // 결과 저장
      this.runExecutionData.resultData.runData[executionNode.name] = nodeSuccessData;

      // 다음 노드들을 스택에 추가
      workflow.getChildNodes(executionNode.name).forEach((childNodeName) =&gt; {
        this.addNodeToBeExecuted(workflow, { node: childNodeName, ... });
      });
    }

    resolve(this.getFullRunData(startedAt));
  });
}</code></pre>
<p><strong>노드 실행 상세</strong> (<code>packages/core/src/execution-engine/workflow-execute.ts:1662-1725</code>):</p>
<pre><code class="language-typescript">private async executeNode(workflow, node, nodeType, ...) {
  // 1. ExecuteContext 생성
  const context = new ExecuteContext(
    workflow,
    node,
    additionalData,
    mode,
    runExecutionData,
    ...
  );

  // 2. execute() 메서드 호출
  let data: INodeExecutionData[][];
  if (nodeType.execute) {
    data = await nodeType.execute.call(context);  // ← 노드의 execute() 실행
  }

  return { data, hints: context.hints };
}</code></pre>
<hr>
<h3 id="3-주요-실행-파일-및-역할">3. 주요 실행 파일 및 역할</h3>
<table>
<thead>
<tr>
<th>파일 경로</th>
<th>역할</th>
<th>주요 메서드</th>
</tr>
</thead>
<tbody><tr>
<td><code>packages/cli/src/load-nodes-and-credentials.ts</code></td>
<td>노드 발견 및 등록</td>
<td><code>init()</code>, <code>loadNodesFromNodeModules()</code>, <code>postProcessLoaders()</code></td>
</tr>
<tr>
<td><code>packages/cli/src/active-workflow-manager.ts</code></td>
<td>워크플로우 활성화 관리</td>
<td><code>add()</code>, <code>addWebhooks()</code>, <code>addTriggersAndPollers()</code></td>
</tr>
<tr>
<td><code>packages/cli/src/webhooks/live-webhooks.ts</code></td>
<td>Webhook HTTP 요청 처리</td>
<td><code>executeWebhook()</code>, <code>findWebhook()</code></td>
</tr>
<tr>
<td><code>packages/cli/src/webhooks/webhook-helpers.ts</code></td>
<td>Webhook 실행 로직</td>
<td><code>executeWebhook()</code>, <code>evaluateResponseOptions()</code></td>
</tr>
<tr>
<td><code>packages/cli/src/workflow-runner.ts</code></td>
<td>워크플로우 실행 오케스트레이션</td>
<td><code>run()</code>, <code>runMainProcess()</code>, <code>enqueueExecution()</code></td>
</tr>
<tr>
<td><code>packages/cli/src/workflow-execution.service.ts</code></td>
<td>워크플로우 실행 서비스</td>
<td><code>runWorkflow()</code>, <code>runMainProcess()</code></td>
</tr>
<tr>
<td><code>packages/core/src/execution-engine/workflow-execute.ts</code></td>
<td>핵심 실행 엔진</td>
<td><code>processRunExecutionData()</code>, <code>runNode()</code>, <code>executeNode()</code></td>
</tr>
<tr>
<td><code>packages/core/src/execution-engine/active-workflows.ts</code></td>
<td>활성 워크플로우 메모리 관리</td>
<td><code>add()</code>, <code>remove()</code>, trigger/poll 관리</td>
</tr>
<tr>
<td><code>packages/core/src/node-execution-context/trigger-context.ts</code></td>
<td>Trigger 노드 컨텍스트</td>
<td><code>emit()</code>, <code>emitError()</code></td>
</tr>
<tr>
<td><code>packages/core/src/node-execution-context/execute-context.ts</code></td>
<td>Execute 노드 컨텍스트</td>
<td>모든 <code>IExecuteFunctions</code> 메서드</td>
</tr>
<tr>
<td><code>packages/core/src/node-execution-context/webhook-context.ts</code></td>
<td>Webhook 노드 컨텍스트</td>
<td>모든 <code>IWebhookFunctions</code> 메서드</td>
</tr>
<tr>
<td><code>packages/workflow/src/NodeTypes.ts</code></td>
<td>노드 타입 조회 서비스</td>
<td><code>getByName()</code>, <code>getByNameAndVersion()</code></td>
</tr>
<tr>
<td><code>packages/workflow/src/Workflow.ts</code></td>
<td>워크플로우 모델</td>
<td><code>getNode()</code>, <code>getTriggerNodes()</code>, <code>getWebhooks()</code></td>
</tr>
</tbody></table>
<hr>
<h3 id="4-실행-흐름-요약">4. 실행 흐름 요약</h3>
<pre><code>[노드 파일 작성]
  ↓
packages/nodes-base/nodes/Webhook/Webhook.node.ts
  ↓ (빌드)
dist/nodes/Webhook/Webhook.node.js
  ↓ (package.json에 등록)
{
  &quot;n8n&quot;: {
    &quot;nodes&quot;: [&quot;dist/nodes/Webhook/Webhook.node.js&quot;]
  }
}
  ↓ (서버 시작 시)
LoadNodesAndCredentials.init()
  ↓ (패키지 스캔)
loadNodesFromNodeModules(&#39;n8n-nodes-base&#39;)
  ↓ (메타데이터 등록)
known.nodes[&#39;n8n-nodes-base.webhook&#39;] = { className: &#39;Webhook&#39;, sourcePath: &#39;...&#39; }
types.nodes.push({ name: &#39;n8n-nodes-base.webhook&#39;, displayName: &#39;Webhook&#39;, ... })
  ↓
[워크플로우 활성화]
  ↓
ActiveWorkflowManager.add(workflowId)
  ↓ (Webhook 노드인 경우)
addWebhooks() → WebhookService.storeWebhook() → database 저장
  ↓ (Trigger 노드인 경우)
addTriggersAndPollers() → runTrigger() → 메모리에 유지
  ↓
[실행 트리거]
  ↓ (Webhook)
HTTP 요청 → LiveWebhooks.executeWebhook() → WebhookHelpers.executeWebhook()
  ↓ (Trigger)
emit() 콜백 → WorkflowExecutionService.runWorkflow()
  ↓
[공통 실행 경로]
WorkflowRunner.run()
  ↓
runMainProcess() 또는 enqueueExecution()
  ↓
WorkflowExecute.processRunExecutionData()
  ↓ (실행 루프)
executeNode() → nodeType.execute.call(context)
  ↓
결과 수집 → 다음 노드를 스택에 추가
  ↓
getFullRunData() → 실행 완료</code></pre><hr>
<h3 id="5-노드-타입별-실행-차이점">5. 노드 타입별 실행 차이점</h3>
<table>
<thead>
<tr>
<th>노드 타입</th>
<th>활성화 시</th>
<th>실행 트리거</th>
<th>메모리 상주</th>
<th>실행 메서드</th>
<th>컨텍스트</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Webhook</strong></td>
<td>database 등록 (<code>webhook_entity</code>)</td>
<td>HTTP 요청 수신</td>
<td>❌</td>
<td><code>webhook()</code></td>
<td><code>IWebhookFunctions</code></td>
</tr>
<tr>
<td><strong>Trigger</strong></td>
<td>메모리 등록 + <code>trigger()</code> 호출</td>
<td><code>emit()</code> 콜백 호출</td>
<td>✅</td>
<td><code>trigger()</code></td>
<td><code>ITriggerFunctions</code></td>
</tr>
<tr>
<td><strong>Poll</strong></td>
<td>메모리 등록 + cron 스케줄링</td>
<td>Cron 타이머 실행</td>
<td>✅</td>
<td><code>poll()</code></td>
<td><code>IPollFunctions</code></td>
</tr>
<tr>
<td><strong>Execute</strong></td>
<td>-</td>
<td>워크플로우 실행 중 도달</td>
<td>❌</td>
<td><code>execute()</code></td>
<td><code>IExecuteFunctions</code></td>
</tr>
</tbody></table>
<hr>
<h2 id="6-모든-노드의-실제-사용-위치-분석">6. 모든 노드의 실제 사용 위치 분석</h2>
<h3 id="핵심-원리-n8n-노드는-직접-import되지-않고-동적으로-로드됨">핵심 원리: n8n 노드는 직접 import되지 않고 동적으로 로드됨</h3>
<p><strong>중요한 이해</strong>: 대부분의 노드는 코드에서 직접 <code>import { GraphQL } from &#39;...&#39;</code>처럼 import되지 않습니다. 대신 다음과 같은 동적 로딩 메커니즘을 사용합니다:</p>
<ol>
<li><strong>노드 정의</strong>: <code>packages/nodes-base/nodes/GraphQL/GraphQL.node.ts</code>에서 클래스 정의</li>
<li><strong>노드 등록</strong>: <code>packages/nodes-base/package.json</code>의 <code>n8n.nodes</code> 배열에 등록</li>
<li><strong>동적 로딩</strong>: <code>LoadNodesAndCredentials</code> 서비스가 서버 시작 시 자동 스캔</li>
<li><strong>이름으로 참조</strong>: 런타임에서 노드 이름(문자열)으로 접근</li>
</ol>
<h3 id="전체-노드-공통-사용-패턴">전체 노드 공통 사용 패턴</h3>
<h4 id="1-노드-로딩-및-등록-모든-640개-노드-공통">1. 노드 로딩 및 등록 (모든 640개 노드 공통)</h4>
<p><strong>파일</strong>: <code>packages/cli/src/load-nodes-and-credentials.ts</code></p>
<pre><code class="language-typescript">// 서버 시작 시 모든 노드 자동 로딩
async init() {
  await this.loadNodesFromNodeModules();
  this.postProcessLoaders();
}

// package.json에서 노드 발견
private async loadNodesFromNodeModules() {
  // 1. n8n-nodes-base/package.json 읽기
  // 2. n8n.nodes 배열에서 각 노드 경로 추출
  // 3. 노드 클래스 동적 로드
  // 예: &quot;dist/nodes/GraphQL/GraphQL.node.js&quot; → GraphQL 클래스

  this.known.nodes[&#39;n8n-nodes-base.graphql&#39;] = {
    className: &#39;GraphQL&#39;,
    sourcePath: &#39;packages/nodes-base/nodes/GraphQL/GraphQL.node.ts&#39;
  };
}

// 노드 타입 레지스트리에 저장
private postProcessLoaders() {
  this.types.nodes.push({
    name: &#39;n8n-nodes-base.graphql&#39;,
    displayName: &#39;GraphQL&#39;,
    description: &#39;Makes a GraphQL request...&#39;,
    // ... 모든 노드 메타데이터
  });
}</code></pre>
<p><strong>결과</strong>: 모든 노드(GraphQL, Set, Webhook, Postgres 등 640개 모두)가 <code>NodeTypes</code> 서비스에 등록됨.</p>
<h4 id="2-노드-조회-런타임에서-이름으로-접근">2. 노드 조회 (런타임에서 이름으로 접근)</h4>
<p><strong>파일</strong>: <code>packages/workflow/src/NodeTypes.ts</code></p>
<pre><code class="language-typescript">export class NodeTypes {
  // 이름으로 노드 타입 조회 (모든 노드 공통)
  getByNameAndVersion(nodeType: string, version?: number): INodeType {
    // 예: &#39;n8n-nodes-base.graphql&#39; → GraphQL 노드 클래스 반환
    // 예: &#39;n8n-nodes-base.postgres&#39; → Postgres 노드 클래스 반환
    return this.loadedNodes[nodeType].type;
  }
}</code></pre>
<p><strong>사용 위치</strong>:</p>
<ul>
<li><code>packages/cli/src/webhooks/live-webhooks.ts:60</code> - 웹훅 노드 검증</li>
<li><code>packages/cli/src/active-workflow-manager.ts:전체</code> - 모든 노드 활성화 시</li>
<li><code>packages/core/src/execution-engine/workflow-execute.ts:전체</code> - 모든 노드 실행 시</li>
<li><code>packages/workflow/src/Workflow.ts:전체</code> - 워크플로우 구조 파싱 시</li>
</ul>
<h4 id="3-워크플로우에서-노드-참조">3. 워크플로우에서 노드 참조</h4>
<p><strong>파일</strong>: <code>packages/workflow/src/Workflow.ts</code></p>
<pre><code class="language-typescript">export class Workflow {
  // 워크플로우의 모든 노드는 name(문자열)으로 저장됨
  nodes: INode[] = [
    { name: &#39;GraphQL&#39;, type: &#39;n8n-nodes-base.graphql&#39;, parameters: {...} },
    { name: &#39;Postgres1&#39;, type: &#39;n8n-nodes-base.postgres&#39;, parameters: {...} },
    { name: &#39;Webhook&#39;, type: &#39;n8n-nodes-base.webhook&#39;, parameters: {...} }
  ];

  // 이름으로 노드 찾기 (모든 노드 실행의 핵심 메서드)
  getNode(nodeName: string): INode | null {
    return this.nodes.find(node =&gt; node.name === nodeName);
  }

  // 트리거 노드만 필터링
  getTriggerNodes(): INode[] {
    return this.nodes.filter(node =&gt; {
      const nodeType = this.nodeTypes.getByNameAndVersion(node.type);
      return nodeType.trigger !== undefined;
    });
  }

  // 웹훅 노드만 필터링
  getWebhooks(): IWebhookData[] {
    const webhooks = [];
    for (const node of this.nodes) {
      const nodeType = this.nodeTypes.getByNameAndVersion(node.type);
      if (nodeType.webhook) {
        webhooks.push(/* webhook 데이터 */);
      }
    }
    return webhooks;
  }
}</code></pre>
<h3 id="노드-타입별-구체적-사용-위치">노드 타입별 구체적 사용 위치</h3>
<h4 id="a-webhook-노드-webhook-httprequest-chattrigger-등">A. Webhook 노드 (Webhook, HttpRequest, ChatTrigger 등)</h4>
<p><strong>활성화 시</strong>: <code>packages/cli/src/active-workflow-manager.ts:129-179</code></p>
<pre><code class="language-typescript">async addWebhooks(workflow, mode) {
  const webhooks = workflow.getWebhooks();  // ← 모든 webhook 노드 찾기

  for (const webhookData of webhooks) {
    // database에 저장 (webhook_entity 테이블)
    await this.webhookService.storeWebhook({
      workflowId: workflow.id,
      webhookPath: webhookData.path,
      node: webhookData.node,  // ← 노드 이름 (예: &quot;Webhook&quot;, &quot;HttpRequest1&quot;)
      method: webhookData.httpMethod,
    });
  }
}</code></pre>
<p><strong>실행 시</strong>: <code>packages/cli/src/webhooks/live-webhooks.ts:71-172</code></p>
<pre><code class="language-typescript">async executeWebhook(request, response) {
  // 1. database에서 webhook 찾기
  const webhook = await this.findWebhook(path, httpMethod);
  // webhook.node = &quot;Webhook&quot; (저장된 노드 이름)

  // 2. 워크플로우 로드
  const workflow = new Workflow({ nodes, connections, nodeTypes });

  // 3. 노드 이름으로 시작 노드 찾기
  const workflowStartNode = workflow.getNode(webhook.node);  // ← 여기서 사용!

  // 4. 노드의 webhook() 메서드 실행
  return await WebhookHelpers.executeWebhook(
    workflow,
    webhookData,
    workflowStartNode,  // ← Webhook 노드 전달
    ...
  );
}</code></pre>
<p><strong>적용 노드</strong> (package.json에서 webhook 메서드를 가진 노드):</p>
<ul>
<li><code>Webhook</code> (line 578) - <code>packages/nodes-base/nodes/Webhook/Webhook.node.ts</code></li>
<li><code>HttpRequest</code> 시리즈 (line 602-605) - <code>packages/nodes-base/nodes/HttpRequest/</code></li>
<li><code>ChatTrigger</code> (langchain line 89) - <code>packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/</code></li>
<li><code>McpTrigger</code> (langchain line 52) - <code>packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/</code></li>
<li><code>Form</code> 시리즈 - <code>packages/nodes-base/nodes/Form/</code></li>
</ul>
<h4 id="b-trigger-노드-manualtrigger-scheduletrigger-kafkatrigger-등">B. Trigger 노드 (ManualTrigger, ScheduleTrigger, KafkaTrigger 등)</h4>
<p><strong>활성화 시</strong>: <code>packages/cli/src/active-workflow-manager.ts:190-281</code></p>
<pre><code class="language-typescript">async addTriggersAndPollers(workflow, mode) {
  const triggerNodes = workflow.getTriggerNodes();  // ← 모든 trigger 노드 찾기

  for (const triggerNode of triggerNodes) {
    // TriggerContext 생성 (emit 콜백 포함)
    const triggerFunctions = this.getExecuteTriggerFunctions(...);

    // trigger() 메서드 호출
    const triggerResponse = await this.triggersAndPollers.runTrigger(
      workflow,
      triggerNode,  // ← 트리거 노드 (예: ManualTrigger, KafkaTrigger)
      triggerFunctions,
    );

    // 메모리에 계속 유지
    this.activeWorkflows.add(workflow.id, { triggerResponses: [triggerResponse] });
  }
}</code></pre>
<p><strong>emit 콜백</strong>: <code>packages/cli/src/active-workflow-manager.ts:339-401</code></p>
<pre><code class="language-typescript">getExecuteTriggerFunctions(workflowData) {
  return (workflow: Workflow, node: INode) =&gt; {
    const emit = (data: INodeExecutionData[][]) =&gt; {
      // 트리거가 emit하면 워크플로우 실행
      this.workflowExecutionService.runWorkflow(
        workflowData,
        node,  // ← trigger 노드 (예: &quot;ScheduleTrigger&quot;, &quot;KafkaTrigger&quot;)
        data,
        ...
      );
    };
    return new TriggerContext(workflow, node, additionalData, mode, emit);
  };
}</code></pre>
<p><strong>적용 노드</strong> (package.json에서 trigger 메서드를 가진 노드, [T] 표시):</p>
<ul>
<li><code>ManualTrigger</code> (line 647) - <code>packages/nodes-base/nodes/ManualTrigger/</code></li>
<li><code>ScheduleTrigger</code> (line 744) - <code>packages/nodes-base/nodes/Schedule/</code></li>
<li><code>KafkaTrigger</code> (line 624) - <code>packages/nodes-base/nodes/Kafka/</code></li>
<li><code>RabbitMQTrigger</code> (line 723) - <code>packages/nodes-base/nodes/RabbitMQ/</code></li>
<li><code>PostgresTrigger</code> (line 716) - <code>packages/nodes-base/nodes/Postgres/</code></li>
<li>기타 모든 <code>*Trigger</code> 노드 (총 약 80개)</li>
</ul>
<h4 id="c-execute-노드-graphql-set-code-postgres-등-대부분의-노드">C. Execute 노드 (GraphQL, Set, Code, Postgres 등 대부분의 노드)</h4>
<p><strong>실행 시</strong>: <code>packages/core/src/execution-engine/workflow-execute.ts:1404-2100</code></p>
<pre><code class="language-typescript">async processRunExecutionData(workflow: Workflow) {
  // 실행 루프 - 모든 execute 노드가 여기서 실행됨
  while (this.runExecutionData.executionData!.nodeExecutionStack.length !== 0) {
    const executionData = this.runExecutionData.executionData!.nodeExecutionStack.shift();
    const executionNode = executionData.node;  // ← 노드 이름 (예: &quot;GraphQL1&quot;, &quot;Set&quot;, &quot;Code2&quot;)

    // 노드 실행
    const runNodeData = await this.runNode(
      workflow,
      executionData,
      ...
    );

    // 다음 노드들을 스택에 추가
    workflow.getChildNodes(executionNode.name).forEach((childNodeName) =&gt; {
      this.addNodeToBeExecuted(workflow, { node: childNodeName });
    });
  }
}</code></pre>
<p><strong>노드 실행 상세</strong>: <code>packages/core/src/execution-engine/workflow-execute.ts:1662-1725</code></p>
<pre><code class="language-typescript">private async executeNode(workflow, node: INode, ...) {
  // 1. 노드 타입 조회 (이름으로)
  const nodeType = workflow.nodeTypes.getByNameAndVersion(node.type);
  // 예: node.type = &#39;n8n-nodes-base.graphql&#39; → GraphQL 클래스 반환

  // 2. ExecuteContext 생성
  const context = new ExecuteContext(workflow, node, ...);

  // 3. execute() 메서드 호출
  let data: INodeExecutionData[][];
  if (nodeType.execute) {
    data = await nodeType.execute.call(context);  // ← 노드의 execute() 실행
  }

  return { data };
}</code></pre>
<p><strong>적용 노드</strong> (execute 메서드를 가진 모든 노드, 약 500개):</p>
<ul>
<li><code>GraphQL</code> (line 578) - <code>packages/nodes-base/nodes/GraphQL/GraphQL.node.ts</code></li>
<li><code>Set</code> (line 752-755) - <code>packages/nodes-base/nodes/Set/</code></li>
<li><code>Code</code> (line 473) - <code>packages/nodes-base/nodes/Code/Code.node.ts</code></li>
<li><code>Postgres</code> (line 714-716) - <code>packages/nodes-base/nodes/Postgres/</code></li>
<li><code>Slack</code> (line 758-761) - <code>packages/nodes-base/nodes/Slack/</code></li>
<li><code>GoogleSheets</code> (line 567-569) - <code>packages/nodes-base/nodes/Google/Sheet/</code></li>
<li><code>If</code> (line 594-596) - <code>packages/nodes-base/nodes/If/</code></li>
<li><code>Switch</code> (line 779-781) - <code>packages/nodes-base/nodes/Switch/</code></li>
<li>기타 대부분의 노드</li>
</ul>
<h4 id="d-ailangchain-노드-agent-tool-memory-vectorstore-등">D. AI/LangChain 노드 (Agent, Tool, Memory, VectorStore 등)</h4>
<p><strong>특수한 실행 방식</strong>: <code>packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts</code></p>
<p>AI 노드는 두 가지 방식으로 실행됩니다:</p>
<ol>
<li><p><strong>일반 노드로 실행</strong> (<code>execute</code> 메서드)</p>
<pre><code class="language-typescript">async execute(this: IExecuteFunctions) {
// workflow 실행 중 다른 노드처럼 실행됨
// 위의 &quot;C. Execute 노드&quot; 패턴과 동일
}</code></pre>
</li>
<li><p><strong>AI 컴포넌트로 실행</strong> (<code>supplyData</code> 메서드)</p>
<pre><code class="language-typescript">async supplyData(this: ISupplyDataFunctions, itemIndex: number) {
// Agent, Tool, Chain 등 LangChain 객체 반환
// 다른 AI 노드가 연결해서 사용
return { response: agentInstance };
}</code></pre>
</li>
</ol>
<p><strong>연결 해석</strong>: <code>packages/workflow/src/Workflow.ts</code></p>
<pre><code class="language-typescript">getConnectionInputData(connectionType: string, ...) {
  // AI 노드들의 동적 연결 해석
  // 예: Agent → Tool → VectorStore 연결
  const connectedNode = this.getNode(connection.node);
  const nodeType = this.nodeTypes.getByNameAndVersion(connectedNode.type);
  if (nodeType.supplyData) {
    return await nodeType.supplyData.call(context, itemIndex);
  }
}</code></pre>
<p><strong>적용 노드</strong> (langchain package.json):</p>
<ul>
<li><code>Agent</code> (line 6) - <code>packages/@n8n/nodes-langchain/nodes/agents/Agent/</code></li>
<li><code>ToolHttpRequest</code> (line 77) - <code>packages/@n8n/nodes-langchain/nodes/tools/ToolHttpRequest/</code></li>
<li><code>VectorStorePinecone</code> (line 99) - <code>packages/@n8n/nodes-langchain/nodes/vector_store/VectorStorePinecone/</code></li>
<li><code>MemoryBufferWindow</code> (line 55) - <code>packages/@n8n/nodes-langchain/nodes/memory/MemoryBufferWindow/</code></li>
<li>기타 모든 LangChain 노드 (약 100개)</li>
</ul>
<h3 id="노드-이름으로-검색되는-주요-위치-정리">노드 이름으로 검색되는 주요 위치 정리</h3>
<table>
<thead>
<tr>
<th>파일 경로</th>
<th>메서드</th>
<th>사용 목적</th>
<th>적용 노드</th>
</tr>
</thead>
<tbody><tr>
<td><code>packages/workflow/src/Workflow.ts:전체</code></td>
<td><code>getNode(name)</code></td>
<td>이름으로 노드 찾기</td>
<td><strong>모든 640개 노드</strong></td>
</tr>
<tr>
<td><code>packages/workflow/src/Workflow.ts:getTriggerNodes()</code></td>
<td><code>getTriggerNodes()</code></td>
<td>트리거 노드 필터링</td>
<td>Trigger 노드 (~80개)</td>
</tr>
<tr>
<td><code>packages/workflow/src/Workflow.ts:getWebhooks()</code></td>
<td><code>getWebhooks()</code></td>
<td>웹훅 노드 필터링</td>
<td>Webhook 노드 (~10개)</td>
</tr>
<tr>
<td><code>packages/cli/src/webhooks/live-webhooks.ts:135</code></td>
<td><code>getNode(webhook.node)</code></td>
<td>웹훅 시작 노드 조회</td>
<td>Webhook, HttpRequest, ChatTrigger 등</td>
</tr>
<tr>
<td><code>packages/cli/src/active-workflow-manager.ts:194</code></td>
<td><code>getTriggerNodes()</code></td>
<td>트리거 활성화</td>
<td>ManualTrigger, ScheduleTrigger, KafkaTrigger 등</td>
</tr>
<tr>
<td><code>packages/cli/src/active-workflow-manager.ts:131</code></td>
<td><code>getWebhooks()</code></td>
<td>웹훅 등록</td>
<td>Webhook, Form, HttpRequest 등</td>
</tr>
<tr>
<td><code>packages/core/src/execution-engine/workflow-execute.ts:1662</code></td>
<td><code>nodeTypes.getByNameAndVersion()</code></td>
<td>노드 실행</td>
<td><strong>모든 Execute 노드 (~500개)</strong></td>
</tr>
<tr>
<td><code>packages/workflow/src/NodeTypes.ts:전체</code></td>
<td><code>getByNameAndVersion(type)</code></td>
<td>타입으로 노드 클래스 조회</td>
<td><strong>모든 640개 노드</strong></td>
</tr>
</tbody></table>
<h3 id="packagejson-등록-라인-번호와-실제-파일-매핑">package.json 등록 라인 번호와 실제 파일 매핑</h3>
<h4 id="nodes-base-주요-노드">nodes-base 주요 노드</h4>
<table>
<thead>
<tr>
<th>노드 이름</th>
<th>package.json 라인</th>
<th>파일 경로</th>
<th>사용 패턴</th>
</tr>
</thead>
<tbody><tr>
<td><code>GraphQL</code></td>
<td>578</td>
<td><code>packages/nodes-base/nodes/GraphQL/GraphQL.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>Webhook</code></td>
<td>850</td>
<td><code>packages/nodes-base/nodes/Webhook/Webhook.node.ts</code></td>
<td>Webhook (A)</td>
</tr>
<tr>
<td><code>ManualTrigger</code></td>
<td>647</td>
<td><code>packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts</code></td>
<td>Trigger (B)</td>
</tr>
<tr>
<td><code>Code</code></td>
<td>473</td>
<td><code>packages/nodes-base/nodes/Code/Code.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>Set</code> (V2)</td>
<td>755</td>
<td><code>packages/nodes-base/nodes/Set/v2/SetV2.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>If</code> (V2)</td>
<td>596</td>
<td><code>packages/nodes-base/nodes/If/V2/IfV2.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>Switch</code> (V3)</td>
<td>781</td>
<td><code>packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>Postgres</code> (V2)</td>
<td>716</td>
<td><code>packages/nodes-base/nodes/Postgres/v2/PostgresV2.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>Slack</code> (V2)</td>
<td>761</td>
<td><code>packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>GoogleSheets</code> (V2)</td>
<td>569</td>
<td><code>packages/nodes-base/nodes/Google/Sheet/v2/GoogleSheetsV2.node.ts</code></td>
<td>Execute (C)</td>
</tr>
<tr>
<td><code>ScheduleTrigger</code></td>
<td>744</td>
<td><code>packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts</code></td>
<td>Trigger (B)</td>
</tr>
<tr>
<td><code>HttpRequest</code> (V3)</td>
<td>605</td>
<td><code>packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts</code></td>
<td>Execute (C)</td>
</tr>
</tbody></table>
<h4 id="langchain-주요-노드">langchain 주요 노드</h4>
<table>
<thead>
<tr>
<th>노드 이름</th>
<th>package.json 라인</th>
<th>파일 경로</th>
<th>사용 패턴</th>
</tr>
</thead>
<tbody><tr>
<td><code>Agent</code></td>
<td>6</td>
<td><code>packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts</code></td>
<td>AI (D)</td>
</tr>
<tr>
<td><code>LmChatOpenAi</code></td>
<td>43</td>
<td><code>packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.ts</code></td>
<td>AI (D)</td>
</tr>
<tr>
<td><code>ToolHttpRequest</code></td>
<td>77</td>
<td><code>packages/@n8n/nodes-langchain/nodes/tools/ToolHttpRequest/ToolHttpRequest.node.ts</code></td>
<td>AI (D)</td>
</tr>
<tr>
<td><code>VectorStorePinecone</code></td>
<td>99</td>
<td><code>packages/@n8n/nodes-langchain/nodes/vector_store/VectorStorePinecone/VectorStorePinecone.node.ts</code></td>
<td>AI (D)</td>
</tr>
<tr>
<td><code>ChatTrigger</code></td>
<td>89</td>
<td><code>packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/ChatTrigger.node.ts</code></td>
<td>Webhook (A)</td>
</tr>
<tr>
<td><code>MemoryBufferWindow</code></td>
<td>55</td>
<td><code>packages/@n8n/nodes-langchain/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.ts</code></td>
<td>AI (D)</td>
</tr>
</tbody></table>
<h3 id="결론-모든-노드는-동일한-방식으로-사용됨">결론: 모든 노드는 동일한 방식으로 사용됨</h3>
<p><strong>핵심 요약</strong>:</p>
<ol>
<li><strong>노드 정의</strong>: 각 <code>.node.ts</code> 파일에서 클래스 정의 (640개 모두)</li>
<li><strong>노드 등록</strong>: <code>package.json</code>의 <code>n8n.nodes</code> 배열에 등록 (640개 모두)</li>
<li><strong>동적 로딩</strong>: <code>LoadNodesAndCredentials</code>가 서버 시작 시 자동 스캔 (640개 모두)</li>
<li><strong>런타임 참조</strong>:<ul>
<li>노드 이름(문자열)으로 접근: <code>workflow.getNode(&quot;GraphQL1&quot;)</code></li>
<li>노드 타입(문자열)으로 클래스 조회: <code>nodeTypes.getByNameAndVersion(&quot;n8n-nodes-base.graphql&quot;)</code></li>
</ul>
</li>
<li><strong>실행</strong>:<ul>
<li>Webhook 노드 → <code>live-webhooks.ts</code>에서 HTTP 요청 수신 시 실행</li>
<li>Trigger 노드 → <code>active-workflow-manager.ts</code>에서 활성화 후 emit 콜백으로 실행</li>
<li>Execute 노드 → <code>workflow-execute.ts</code>의 실행 루프에서 순차 실행</li>
<li>AI 노드 → 일반 execute + supplyData 두 가지 방식</li>
</ul>
</li>
</ol>
<p><strong>GraphQL 예시</strong>:</p>
<ul>
<li>❌ 직접 import 없음: <code>import { GraphQL } from &#39;...&#39;</code> (이런 코드는 존재하지 않음)</li>
<li>✅ 동적 로딩: <code>LoadNodesAndCredentials</code> → <code>NodeTypes</code> 레지스트리</li>
<li>✅ 이름으로 참조: <code>workflow.getNode(&quot;GraphQL1&quot;)</code> → GraphQL 노드 인스턴스</li>
<li>✅ 타입으로 조회: <code>nodeTypes.getByNameAndVersion(&quot;n8n-nodes-base.graphql&quot;)</code> → GraphQL 클래스</li>
<li>✅ 실행: <code>workflow-execute.ts</code>의 <code>executeNode()</code>에서 <code>graphqlNode.execute()</code> 호출</li>
</ul>
<p>이 패턴은 <strong>모든 640개 노드에 동일하게 적용</strong>됩니다.</p>
<hr>
<p><em>문서 버전: 3.0 | 생성일: 2026-02-04 | 업데이트: 2026-02-09 | 소스: 실제 코드베이스 분석</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[lang fuse docs 요약]]></title>
            <link>https://velog.io/@exploration25-ai/lang-fuse-docs-%EC%9A%94%EC%95%BD</link>
            <guid>https://velog.io/@exploration25-ai/lang-fuse-docs-%EC%9A%94%EC%95%BD</guid>
            <pubDate>Sat, 24 Jan 2026 23:32:40 GMT</pubDate>
            <description><![CDATA[<h1 id="langfuse-완벽-가이드">Langfuse 완벽 가이드</h1>
<h2 id="목차">목차</h2>
<ul>
<li><a href="#%EA%B0%9C%EC%9A%94">개요</a></li>
<li><a href="#%ED%95%B5%EC%8B%AC-%EA%B8%B0%EB%8A%A5">핵심 기능</a><ul>
<li><a href="#1-observability-%EA%B4%80%EC%B0%B0%EC%84%B1">1. Observability (관찰성)</a></li>
<li><a href="#2-prompt-management-%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8-%EA%B4%80%EB%A6%AC">2. Prompt Management (프롬프트 관리)</a></li>
<li><a href="#3-evaluation-%ED%8F%89%EA%B0%80">3. Evaluation (평가)</a></li>
</ul>
</li>
<li><a href="#%ED%94%8C%EB%9E%AB%ED%8F%BC-%EA%B8%B0%EB%8A%A5">플랫폼 기능</a></li>
<li><a href="#%ED%86%B5%ED%95%A9-%EB%B0%8F-%EC%97%B0%EB%8F%99">통합 및 연동</a></li>
<li><a href="#%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0">시작하기</a></li>
<li><a href="#%EC%82%AC%EC%9A%A9-%EC%82%AC%EB%A1%80">사용 사례</a></li>
<li><a href="#%EB%B3%B4%EC%95%88-%EB%B0%8F-%EC%BB%B4%ED%94%8C%EB%9D%BC%EC%9D%B4%EC%96%B8%EC%8A%A4">보안 및 컴플라이언스</a></li>
</ul>
<hr>
<h2 id="개요">개요</h2>
<p><strong>Langfuse</strong>는 LLM(Large Language Model) 애플리케이션을 위한 오픈소스 엔지니어링 플랫폼입니다. 팀이 협업하여 LLM 애플리케이션을 디버깅, 분석, 반복 개선할 수 있도록 돕는 통합 솔루션을 제공합니다.</p>
<h3 id="주요-특징">주요 특징</h3>
<ul>
<li>✅ <strong>완전한 오픈소스</strong>: GitHub에서 공개되어 있으며, 커스텀 통합을 위한 Public API 제공</li>
<li>✅ <strong>프로덕션 최적화</strong>: 최소한의 성능 오버헤드로 설계</li>
<li>✅ <strong>우수한 SDK</strong>: Python 및 JavaScript 네이티브 SDK 제공</li>
<li>✅ <strong>프레임워크 지원</strong>: OpenAI SDK, LangChain, LlamaIndex 등 주요 프레임워크와 통합</li>
<li>✅ <strong>멀티모달 지원</strong>: 텍스트, 이미지 등 다양한 모달리티 추적</li>
<li>✅ <strong>자체 호스팅 가능</strong>: 클라우드 또는 온프레미스 배포 가능</li>
</ul>
<hr>
<h2 id="핵심-기능">핵심 기능</h2>
<h3 id="1-observability-관찰성">1. Observability (관찰성)</h3>
<p>LLM 애플리케이션의 모든 동작을 투명하게 추적하고 모니터링할 수 있는 기능입니다.</p>
<h4 id="주요-기능">주요 기능</h4>
<h5 id="📊-trace-추적">📊 Trace (추적)</h5>
<ul>
<li><strong>완전한 가시성</strong>: 모든 LLM 호출, API 호출, 검색(retrieval), 임베딩 등을 추적</li>
<li><strong>계층적 구조</strong>: 복잡한 호출 체인을 트리 구조로 시각화</li>
<li><strong>타임라인 뷰</strong>: 각 단계의 실행 시간과 지연 시간을 시각적으로 분석</li>
<li><strong>비용 추적</strong>: 토큰 사용량 및 API 비용을 실시간으로 모니터링</li>
</ul>
<h5 id="🔄-sessions-세션">🔄 Sessions (세션)</h5>
<ul>
<li><strong>대화 추적</strong>: 멀티턴 대화나 에이전트 워크플로우를 세션으로 그룹화</li>
<li><strong>사용자 여정 분석</strong>: 전체 사용자 인터랙션 흐름 파악</li>
<li><strong>컨텍스트 유지</strong>: 대화 히스토리와 컨텍스트를 한눈에 확인</li>
</ul>
<h5 id="👤-user-tracking-사용자-추적">👤 User Tracking (사용자 추적)</h5>
<ul>
<li><strong>사용자별 분석</strong>: <code>userId</code>를 통해 개별 사용자의 비용과 사용량 모니터링</li>
<li><strong>딥링크 생성</strong>: 사용자별 뷰로 직접 연결되는 링크 생성 가능</li>
<li><strong>사용 패턴 분석</strong>: 사용자 행동 및 선호도 파악</li>
</ul>
<h5 id="🤖-agent-graphs-에이전트-그래프">🤖 Agent Graphs (에이전트 그래프)</h5>
<ul>
<li><strong>워크플로우 시각화</strong>: 복잡한 에이전트 워크플로우를 그래프로 표현</li>
<li><strong>의사결정 추적</strong>: 에이전트의 의사결정 경로 및 로직 분석</li>
<li><strong>디버깅 용이성</strong>: 에이전트 실행 흐름에서 문제점 빠르게 파악</li>
</ul>
<h5 id="📈-dashboard-대시보드">📈 Dashboard (대시보드)</h5>
<ul>
<li><strong>실시간 메트릭</strong>: 품질, 비용, 지연시간 등 핵심 지표를 대시보드에서 모니터링</li>
<li><strong>커스텀 뷰</strong>: 필요한 지표만 선택하여 맞춤형 대시보드 구성</li>
<li><strong>알림 설정</strong>: 임계값 초과 시 알림 수신</li>
</ul>
<h4 id="통합-방법">통합 방법</h4>
<p><strong>Python SDK 예제:</strong></p>
<pre><code class="language-python">from langfuse import Langfuse

# 초기화
langfuse = Langfuse(
    public_key=&quot;pk-lf-...&quot;,
    secret_key=&quot;sk-lf-...&quot;
)

# Trace 생성
trace = langfuse.trace(
    name=&quot;my-llm-app&quot;,
    user_id=&quot;user-123&quot;,
    metadata={&quot;environment&quot;: &quot;production&quot;}
)

# Generation 추적
generation = trace.generation(
    name=&quot;chat-completion&quot;,
    model=&quot;gpt-4&quot;,
    input={&quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello&quot;}]},
    output={&quot;content&quot;: &quot;Hi there!&quot;},
    usage={&quot;prompt_tokens&quot;: 10, &quot;completion_tokens&quot;: 5}
)</code></pre>
<p><strong>JavaScript/TypeScript SDK 예제:</strong></p>
<pre><code class="language-typescript">import { Langfuse } from &quot;langfuse&quot;;

const langfuse = new Langfuse({
  publicKey: &quot;pk-lf-...&quot;,
  secretKey: &quot;sk-lf-...&quot;
});

const trace = langfuse.trace({
  name: &quot;my-llm-app&quot;,
  userId: &quot;user-123&quot;,
  metadata: { environment: &quot;production&quot; }
});

const generation = trace.generation({
  name: &quot;chat-completion&quot;,
  model: &quot;gpt-4&quot;,
  input: { messages: [{ role: &quot;user&quot;, content: &quot;Hello&quot; }] },
  output: { content: &quot;Hi there!&quot; },
  usage: { promptTokens: 10, completionTokens: 5 }
});</code></pre>
<h4 id="지원-통합">지원 통합</h4>
<ul>
<li>Native SDKs (Python, JavaScript/TypeScript)</li>
<li>50+ 라이브러리/프레임워크 통합</li>
<li>OpenTelemetry 지원</li>
<li>LLM Gateway (LiteLLM 등)</li>
</ul>
<hr>
<h3 id="2-prompt-management-프롬프트-관리">2. Prompt Management (프롬프트 관리)</h3>
<p>프롬프트를 체계적으로 관리하고 버전 관리하며, 팀과 협업할 수 있는 기능입니다.</p>
<h4 id="주요-기능-1">주요 기능</h4>
<h5 id="📝-create--version-control-생성-및-버전-관리">📝 Create &amp; Version Control (생성 및 버전 관리)</h5>
<ul>
<li><strong>UI/API/SDK 지원</strong>: 다양한 방법으로 프롬프트 생성 및 수정</li>
<li><strong>버전 히스토리</strong>: 모든 변경 사항을 추적하고 이전 버전으로 롤백 가능</li>
<li><strong>협업 편집</strong>: 팀원들과 함께 프롬프트를 편집하고 리뷰</li>
<li><strong>변경 추적</strong>: 누가, 언제, 무엇을 변경했는지 완벽하게 기록</li>
</ul>
<h5 id="🚀-deploy-배포">🚀 Deploy (배포)</h5>
<ul>
<li><strong>환경별 라벨</strong>: <code>production</code>, <code>staging</code>, <code>development</code> 등 환경별로 프롬프트 배포</li>
<li><strong>코드 변경 없이 배포</strong>: 라벨만 변경하여 즉시 프롬프트 업데이트</li>
<li><strong>A/B 테스팅</strong>: 여러 프롬프트 버전을 동시에 테스트</li>
<li><strong>점진적 롤아웃</strong>: 일부 사용자에게만 먼저 배포하여 안전하게 테스트</li>
</ul>
<h5 id="🎮-playground-플레이그라운드">🎮 Playground (플레이그라운드)</h5>
<ul>
<li><strong>인터랙티브 테스트</strong>: 프롬프트를 즉시 테스트하고 결과 확인</li>
<li><strong>모델 비교</strong>: 여러 LLM 모델에서 동일한 프롬프트 테스트</li>
<li><strong>파라미터 조정</strong>: Temperature, max_tokens 등 파라미터를 조정하며 실험</li>
<li><strong>빠른 반복</strong>: 코드 작성 없이 빠르게 프롬프트 개선</li>
</ul>
<h5 id="📊-metrics-메트릭">📊 Metrics (메트릭)</h5>
<ul>
<li><strong>성능 비교</strong>: 프롬프트 버전별 지연시간, 비용, 품질 비교</li>
<li><strong>통계 분석</strong>: 평균, 중앙값, 백분위수 등 상세 통계</li>
<li><strong>시각화</strong>: 그래프와 차트로 성능 변화 추이 파악</li>
</ul>
<h5 id="🔗-link-with-traces-트레이스-연동">🔗 Link with Traces (트레이스 연동)</h5>
<ul>
<li><strong>컨텍스트 이해</strong>: 프롬프트가 실제 애플리케이션에서 어떻게 사용되는지 확인</li>
<li><strong>실제 성능 측정</strong>: 프로덕션 환경에서의 프롬프트 성능 분석</li>
<li><strong>문제 진단</strong>: 특정 프롬프트로 인한 문제를 빠르게 식별</li>
</ul>
<h5 id="🧪-experiments-실험">🧪 Experiments (실험)</h5>
<ul>
<li><strong>데이터셋 테스트</strong>: 데이터셋에 대해 프롬프트와 모델 조합을 체계적으로 테스트</li>
<li><strong>자동화된 평가</strong>: 설정한 기준에 따라 자동으로 성능 평가</li>
<li><strong>결과 비교</strong>: 여러 실험 결과를 한 번에 비교</li>
</ul>
<h4 id="고급-기능">고급 기능</h4>
<h5 id="🔧-variables-변수">🔧 Variables (변수)</h5>
<ul>
<li><strong>동적 프롬프트</strong>: 변수를 사용하여 상황에 맞게 프롬프트 커스터마이징</li>
<li><strong>재사용성</strong>: 공통 부분을 변수로 관리하여 중복 제거</li>
</ul>
<pre><code class="language-python"># 프롬프트 템플릿
&quot;&quot;&quot;
당신은 {{role}}입니다.
사용자 질문: {{user_question}}
답변 형식: {{format}}
&quot;&quot;&quot;

# 사용 시
prompt = langfuse.get_prompt(&quot;assistant-template&quot;)
compiled = prompt.compile(
    role=&quot;친절한 AI 어시스턴트&quot;,
    user_question=&quot;Python이란?&quot;,
    format=&quot;간단명료하게&quot;
)</code></pre>
<h5 id="🧩-composability-구성-가능성">🧩 Composability (구성 가능성)</h5>
<ul>
<li><strong>프롬프트 조합</strong>: 여러 프롬프트를 조합하여 복잡한 프롬프트 생성</li>
<li><strong>모듈화</strong>: 공통 프롬프트 부분을 모듈로 분리하여 관리</li>
</ul>
<h5 id="📋-message-placeholders-메시지-플레이스홀더">📋 Message Placeholders (메시지 플레이스홀더)</h5>
<ul>
<li><strong>대화 템플릿</strong>: 채팅 형식의 프롬프트에서 메시지 구조 정의</li>
<li><strong>역할 관리</strong>: system, user, assistant 역할별 메시지 관리</li>
</ul>
<h5 id="⚙️-config-설정">⚙️ Config (설정)</h5>
<ul>
<li><strong>모델 설정</strong>: temperature, max_tokens 등 모델 파라미터를 프롬프트와 함께 저장</li>
<li><strong>일관성</strong>: 프롬프트와 설정을 함께 관리하여 재현성 보장</li>
</ul>
<h5 id="🔔-webhooks--integrations">🔔 Webhooks &amp; Integrations</h5>
<ul>
<li><strong>자동화</strong>: 프롬프트 변경 시 Slack 알림, CI/CD 트리거 등</li>
<li><strong>GitHub 연동</strong>: 프롬프트를 Git 리포지토리와 동기화</li>
<li><strong>n8n 노드</strong>: 노코드 워크플로우 자동화</li>
</ul>
<h5 id="💾-caching-캐싱">💾 Caching (캐싱)</h5>
<ul>
<li><strong>성능 최적화</strong>: 자주 사용되는 프롬프트 결과를 캐싱</li>
<li><strong>비용 절감</strong>: 중복 API 호출 방지</li>
</ul>
<h5 id="📁-folders-폴더">📁 Folders (폴더)</h5>
<ul>
<li><strong>조직화</strong>: 프롬프트를 폴더로 구조화하여 관리</li>
<li><strong>팀별 분리</strong>: 팀이나 프로젝트별로 프롬프트 분류</li>
</ul>
<h4 id="사용-예제">사용 예제</h4>
<p><strong>프롬프트 생성 및 가져오기:</strong></p>
<pre><code class="language-python">from langfuse import Langfuse

langfuse = Langfuse()

# 프롬프트 가져오기
prompt = langfuse.get_prompt(
    name=&quot;customer-support-agent&quot;,
    label=&quot;production&quot;  # 또는 version=3
)

# 프롬프트 컴파일 (변수 치환)
compiled_prompt = prompt.compile(
    customer_name=&quot;홍길동&quot;,
    issue_type=&quot;결제 문제&quot;
)

# LLM에 전달
response = openai.chat.completions.create(
    model=&quot;gpt-4&quot;,
    messages=compiled_prompt
)</code></pre>
<hr>
<h3 id="3-evaluation-평가">3. Evaluation (평가)</h3>
<p>LLM 애플리케이션의 품질을 측정하고 개선하기 위한 체계적인 평가 시스템입니다.</p>
<h4 id="주요-평가-방법">주요 평가 방법</h4>
<h5 id="🤖-llm-as-a-judge">🤖 LLM-as-a-Judge</h5>
<ul>
<li><strong>자동화된 평가</strong>: 다른 LLM을 사용하여 출력물의 품질을 자동으로 평가</li>
<li><strong>다양한 기준</strong>: 정확성, 관련성, 일관성, 유해성 등 다양한 기준으로 평가</li>
<li><strong>확장성</strong>: 대량의 데이터를 빠르게 평가 가능</li>
<li><strong>커스터마이징</strong>: 도메인 특화 평가 기준 설정 가능</li>
</ul>
<p><strong>예제:</strong></p>
<pre><code class="language-python"># LLM-as-a-Judge 평가 설정
langfuse.score(
    trace_id=&quot;trace-123&quot;,
    name=&quot;answer-quality&quot;,
    value=0.85,
    comment=&quot;답변이 정확하고 관련성이 높음&quot;
)</code></pre>
<h5 id="👥-annotation-queues-어노테이션-큐">👥 Annotation Queues (어노테이션 큐)</h5>
<ul>
<li><strong>휴먼 평가</strong>: 사람이 직접 출력물을 검토하고 평가</li>
<li><strong>베이스라인 구축</strong>: 자동화된 평가의 기준이 되는 골드 스탠다드 생성</li>
<li><strong>팀 협업</strong>: 여러 평가자가 동시에 작업 가능</li>
<li><strong>일관성 관리</strong>: 평가 가이드라인을 통해 평가자 간 일관성 유지</li>
</ul>
<h5 id="📊-scores-via-uiapisdk">📊 Scores via UI/API/SDK</h5>
<ul>
<li><strong>유연한 입력</strong>: UI, API, SDK를 통해 점수 입력</li>
<li><strong>다양한 타입</strong>: 숫자형, 불린형, 범주형 점수 지원</li>
<li><strong>메타데이터</strong>: 점수와 함께 추가 정보 저장</li>
</ul>
<p><strong>API 예제:</strong></p>
<pre><code class="language-bash">POST /api/public/scores
{
  &quot;traceId&quot;: &quot;trace-123&quot;,
  &quot;name&quot;: &quot;user-satisfaction&quot;,
  &quot;value&quot;: 1,
  &quot;dataType&quot;: &quot;BOOLEAN&quot;,
  &quot;comment&quot;: &quot;사용자가 답변에 만족함&quot;
}</code></pre>
<p><strong>SDK 예제:</strong></p>
<pre><code class="language-python">langfuse.score(
    trace_id=&quot;trace-123&quot;,
    name=&quot;hallucination-check&quot;,
    value=0,
    data_type=&quot;NUMERIC&quot;,
    comment=&quot;환각 없음&quot;
)</code></pre>
<h5 id="👍-user-feedback-사용자-피드백">👍 User Feedback (사용자 피드백)</h5>
<ul>
<li><strong>실시간 수집</strong>: 사용자로부터 직접 피드백 수집</li>
<li><strong>브라우저 SDK</strong>: 프론트엔드에서 바로 피드백 전송</li>
<li><strong>암묵적 피드백</strong>: 클릭, 체류 시간 등 행동 데이터 수집</li>
<li><strong>명시적 피드백</strong>: 좋아요/싫어요, 별점, 텍스트 피드백 등</li>
</ul>
<p><strong>브라우저 SDK 예제:</strong></p>
<pre><code class="language-javascript">import { Langfuse } from &quot;langfuse&quot;;

const langfuse = new Langfuse({
  publicKey: &quot;pk-lf-...&quot;
});

// 사용자 피드백 전송
langfuse.score({
  traceId: &quot;trace-123&quot;,
  name: &quot;user-feedback&quot;,
  value: 1, // 좋아요
  comment: &quot;정확한 답변이었어요!&quot;
});</code></pre>
<h5 id="📈-score-analytics-점수-분석">📈 Score Analytics (점수 분석)</h5>
<ul>
<li><strong>트렌드 분석</strong>: 시간에 따른 품질 변화 추이 파악</li>
<li><strong>분포 확인</strong>: 점수 분포를 통해 성능 패턴 이해</li>
<li><strong>비교 분석</strong>: 버전 간, 모델 간 성능 비교</li>
<li><strong>대시보드</strong>: 시각적으로 평가 결과 확인</li>
</ul>
<h4 id="experiments-실험">Experiments (실험)</h4>
<h5 id="📚-datasets-데이터셋">📚 Datasets (데이터셋)</h5>
<ul>
<li><strong>테스트 케이스 관리</strong>: 일관된 테스트를 위한 데이터셋 구축</li>
<li><strong>버전 관리</strong>: 데이터셋 변경 사항 추적</li>
<li><strong>다양한 시나리오</strong>: Edge case, 일반적인 케이스 등 포괄적으로 커버</li>
<li><strong>재사용</strong>: 동일한 데이터셋으로 반복 테스트</li>
</ul>
<p><strong>데이터셋 생성:</strong></p>
<pre><code class="language-python"># 데이터셋 생성
dataset = langfuse.create_dataset(
    name=&quot;customer-support-qa&quot;,
    description=&quot;고객 지원 QA 테스트 케이스&quot;
)

# 아이템 추가
dataset.create_item(
    input={&quot;question&quot;: &quot;환불은 어떻게 하나요?&quot;},
    expected_output={&quot;answer&quot;: &quot;구매일로부터 14일 이내 환불 가능합니다.&quot;}
)</code></pre>
<h5 id="🧪-experiments-via-sdkui">🧪 Experiments via SDK/UI</h5>
<ul>
<li><strong>체계적 테스트</strong>: 프롬프트와 모델 조합을 데이터셋에 대해 테스트</li>
<li><strong>자동화</strong>: 스크립트를 통해 실험 자동 실행</li>
<li><strong>UI 지원</strong>: 코드 없이 UI에서 실험 실행 가능</li>
<li><strong>결과 비교</strong>: 여러 실험을 나란히 비교</li>
</ul>
<p><strong>실험 실행:</strong></p>
<pre><code class="language-python">from langfuse import Langfuse

langfuse = Langfuse()

# 데이터셋 로드
dataset = langfuse.get_dataset(&quot;customer-support-qa&quot;)

# 실험 실행
for item in dataset.items:
    # 프롬프트 가져오기
    prompt = langfuse.get_prompt(&quot;support-agent&quot;, version=2)

    # LLM 호출
    response = llm.generate(
        prompt=prompt.compile(**item.input),
        trace_id=item.id
    )

    # 결과 평가
    langfuse.score(
        trace_id=item.id,
        name=&quot;accuracy&quot;,
        value=evaluate(response, item.expected_output)
    )</code></pre>
<h4 id="평가-워크플로우">평가 워크플로우</h4>
<pre><code class="language-mermaid">graph TD
    A[프로덕션 트레이스] --&gt; B{평가 필요}
    B --&gt; C[LLM-as-a-Judge]
    B --&gt; D[Annotation Queue]
    B --&gt; E[User Feedback]
    C --&gt; F[Score 생성]
    D --&gt; F
    E --&gt; F
    F --&gt; G[Analytics Dashboard]
    G --&gt; H{문제 발견}
    H --&gt;|Yes| I[Dataset 추가]
    I --&gt; J[Experiment 실행]
    J --&gt; K[개선된 버전]
    K --&gt; L[프로덕션 배포]
    H --&gt;|No| M[모니터링 계속]</code></pre>
<hr>
<h2 id="플랫폼-기능">플랫폼 기능</h2>
<h3 id="metrics-메트릭">Metrics (메트릭)</h3>
<h4 id="📊-custom-dashboards-커스텀-대시보드">📊 Custom Dashboards (커스텀 대시보드)</h4>
<ul>
<li><strong>맞춤형 뷰</strong>: 필요한 메트릭만 선택하여 대시보드 구성</li>
<li><strong>실시간 업데이트</strong>: 데이터가 실시간으로 반영</li>
<li><strong>공유</strong>: 팀원들과 대시보드 공유</li>
<li><strong>필터링</strong>: 날짜, 사용자, 모델 등 다양한 기준으로 필터링</li>
</ul>
<h4 id="📡-metrics-api">📡 Metrics API</h4>
<ul>
<li><strong>프로그래밍 방식 접근</strong>: API를 통해 메트릭 데이터 조회</li>
<li><strong>통합</strong>: 자체 모니터링 시스템에 통합</li>
<li><strong>자동화</strong>: 알림, 리포팅 자동화</li>
</ul>
<pre><code class="language-python"># Metrics API 사용 예제
import requests

response = requests.get(
    &quot;https://cloud.langfuse.com/api/public/metrics&quot;,
    headers={&quot;Authorization&quot;: &quot;Bearer sk-lf-...&quot;},
    params={
        &quot;from&quot;: &quot;2024-01-01&quot;,
        &quot;to&quot;: &quot;2024-01-31&quot;,
        &quot;groupBy&quot;: &quot;model&quot;
    }
)

metrics = response.json()</code></pre>
<h4 id="🔌-analytics-통합">🔌 Analytics 통합</h4>
<ul>
<li><strong>PostHog</strong>: 제품 분석 플랫폼과 연동</li>
<li><strong>Mixpanel</strong>: 사용자 행동 분석 도구와 연동</li>
<li><strong>커스텀 통합</strong>: Webhook을 통해 다른 도구와 연동</li>
</ul>
<h3 id="api--data-platform">API &amp; Data Platform</h3>
<h4 id="💾-export-데이터-내보내기">💾 Export (데이터 내보내기)</h4>
<p><strong>UI에서 내보내기:</strong></p>
<ul>
<li>CSV, JSON 형식으로 데이터 다운로드</li>
<li>날짜 범위, 필터 조건 지정</li>
<li>대량 데이터 처리</li>
</ul>
<p><strong>Blob Storage로 내보내기:</strong></p>
<ul>
<li>S3, Azure Blob Storage, GCS 등 지원</li>
<li>자동화된 정기 백업</li>
<li>장기 보관 및 규정 준수</li>
</ul>
<pre><code class="language-python"># 데이터 내보내기 설정
langfuse.configure_export(
    destination=&quot;s3://my-bucket/langfuse-exports&quot;,
    schedule=&quot;daily&quot;,
    format=&quot;parquet&quot;
)</code></pre>
<h4 id="🔍-observations-api">🔍 Observations API</h4>
<ul>
<li><strong>세밀한 데이터 접근</strong>: 개별 관찰(observation) 데이터에 접근</li>
<li><strong>필터링</strong>: 복잡한 쿼리로 원하는 데이터만 추출</li>
<li><strong>페이지네이션</strong>: 대량 데이터를 효율적으로 처리</li>
</ul>
<h4 id="📖-public-api">📖 Public API</h4>
<ul>
<li><strong>완전한 기능</strong>: UI에서 할 수 있는 거의 모든 작업을 API로 수행</li>
<li><strong>RESTful</strong>: 표준 REST API 디자인</li>
<li><strong>문서화</strong>: 상세한 API 레퍼런스 제공</li>
</ul>
<p><strong>API Reference</strong>: <a href="https://api.reference.langfuse.com">https://api.reference.langfuse.com</a></p>
<h4 id="🔎-query-via-sdks">🔎 Query via SDKs</h4>
<ul>
<li><strong>Python/JS SDK</strong>: SDK를 통해 데이터 쿼리</li>
<li><strong>타입 안전성</strong>: TypeScript 타입 지원</li>
<li><strong>편의성</strong>: 복잡한 쿼리를 간단하게 작성</li>
</ul>
<pre><code class="language-python"># SDK로 데이터 쿼리
traces = langfuse.fetch_traces(
    name=&quot;chat-completion&quot;,
    from_timestamp=&quot;2024-01-01&quot;,
    to_timestamp=&quot;2024-01-31&quot;,
    user_id=&quot;user-123&quot;
)

for trace in traces:
    print(f&quot;Trace: {trace.id}, Cost: {trace.cost}&quot;)</code></pre>
<h4 id="🤝-mcp-server-model-context-protocol">🤝 MCP Server (Model Context Protocol)</h4>
<ul>
<li><strong>표준 프로토콜</strong>: MCP를 통한 데이터 접근</li>
<li><strong>상호 운용성</strong>: 다양한 도구와 쉽게 통합</li>
</ul>
<h3 id="administration-관리">Administration (관리)</h3>
<h4 id="🔐-authentication--sso">🔐 Authentication &amp; SSO</h4>
<ul>
<li><strong>다양한 인증 방식</strong>:<ul>
<li>Email/Password</li>
<li>Google OAuth</li>
<li>GitHub OAuth</li>
<li>SAML 2.0 (엔터프라이즈)</li>
<li>OIDC (엔터프라이즈)</li>
</ul>
</li>
<li><strong>Multi-Factor Authentication (MFA)</strong>: 추가 보안 계층</li>
<li><strong>Session 관리</strong>: 세션 타임아웃, 동시 로그인 제한</li>
</ul>
<h4 id="👥-access-control-rbac">👥 Access Control (RBAC)</h4>
<ul>
<li><strong>역할 기반 접근 제어</strong>:<ul>
<li>Owner: 모든 권한</li>
<li>Admin: 관리 권한</li>
<li>Member: 일반 사용자</li>
<li>Viewer: 읽기 전용</li>
</ul>
</li>
<li><strong>세밀한 권한</strong>: 프로젝트, 데이터셋, 프롬프트 등 리소스별 권한 설정</li>
<li><strong>팀 관리</strong>: 팀 생성 및 멤버 관리</li>
</ul>
<h4 id="🔄-scim--org-api">🔄 SCIM &amp; Org API</h4>
<ul>
<li><strong>자동 프로비저닝</strong>: SCIM을 통한 사용자 자동 추가/제거</li>
<li><strong>디렉토리 동기화</strong>: Azure AD, Okta 등과 동기화</li>
<li><strong>조직 API</strong>: 프로그래밍 방식으로 조직 관리</li>
</ul>
<h4 id="📝-audit-logs">📝 Audit Logs</h4>
<ul>
<li><strong>모든 활동 기록</strong>: 누가, 언제, 무엇을 했는지 완벽하게 추적</li>
<li><strong>규정 준수</strong>: SOC 2, ISO 27001 등 규정 요구사항 충족</li>
<li><strong>보안 모니터링</strong>: 의심스러운 활동 감지</li>
</ul>
<h4 id="🗑️-data-deletion--retention">🗑️ Data Deletion &amp; Retention</h4>
<ul>
<li><strong>데이터 삭제 정책</strong>: 자동 또는 수동 데이터 삭제</li>
<li><strong>보존 기간 설정</strong>: 데이터 유형별 보존 기간 설정</li>
<li><strong>GDPR 준수</strong>: 사용자 데이터 삭제 권리 보장</li>
</ul>
<pre><code class="language-python"># 데이터 보존 정책 설정
langfuse.set_retention_policy(
    traces=90,  # 90일 후 삭제
    scores=365,  # 1년 후 삭제
    datasets=&quot;永久&quot;  # 영구 보존
)</code></pre>
<h4 id="🔌-llm-connections">🔌 LLM Connections</h4>
<ul>
<li><strong>모델 프로바이더 연동</strong>: OpenAI, Anthropic, Azure OpenAI 등</li>
<li><strong>API 키 관리</strong>: 안전한 키 저장 및 관리</li>
<li><strong>자동 토큰 계산</strong>: 연동된 모델의 토큰 사용량 자동 계산</li>
</ul>
<h4 id="💰-spend-alerts">💰 Spend Alerts</h4>
<ul>
<li><strong>비용 알림</strong>: 설정한 임계값 초과 시 알림</li>
<li><strong>예산 관리</strong>: 프로젝트별, 사용자별 예산 설정</li>
<li><strong>실시간 모니터링</strong>: 현재 지출 현황 확인</li>
</ul>
<h4 id="📊-billable-units">📊 Billable Units</h4>
<ul>
<li><strong>투명한 과금</strong>: 어떻게 비용이 계산되는지 명확히 표시</li>
<li><strong>사용량 추적</strong>: 트레이스, 스코어, 저장 용량 등 사용량 확인</li>
<li><strong>비용 최적화</strong>: 사용 패턴 분석을 통한 비용 절감</li>
</ul>
<hr>
<h2 id="통합-및-연동">통합 및 연동</h2>
<h3 id="프레임워크-통합">프레임워크 통합</h3>
<h4 id="🦜-langchain">🦜 LangChain</h4>
<pre><code class="language-python">from langfuse.langchain import LangfuseCallbackHandler

handler = LangfuseCallbackHandler(
    public_key=&quot;pk-lf-...&quot;,
    secret_key=&quot;sk-lf-...&quot;
)

# LangChain 체인에 추가
chain.run(input=&quot;Hello&quot;, callbacks=[handler])</code></pre>
<h4 id="🦙-llamaindex">🦙 LlamaIndex</h4>
<pre><code class="language-python">from llama_index.core import set_global_handler

set_global_handler(&quot;langfuse&quot;)

# 이후 모든 LlamaIndex 호출이 자동으로 추적됨</code></pre>
<h4 id="🌐-openai-sdk">🌐 OpenAI SDK</h4>
<pre><code class="language-python">from langfuse.openai import openai

# OpenAI SDK를 래핑
client = openai.OpenAI()

# 기존 코드 그대로 사용하면 자동 추적
response = client.chat.completions.create(
    model=&quot;gpt-4&quot;,
    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello&quot;}]
)</code></pre>
<h4 id="⚡-vercel-ai-sdk">⚡ Vercel AI SDK</h4>
<pre><code class="language-typescript">import { createOpenAI } from &#39;@ai-sdk/openai&#39;;
import { observeVercelAI } from &#39;langfuse&#39;;

const openai = observeVercelAI(createOpenAI({
  apiKey: process.env.OPENAI_API_KEY
}));</code></pre>
<h4 id="🔧-instructor">🔧 Instructor</h4>
<pre><code class="language-python">from instructor import patch
from langfuse.openai import openai

client = patch(openai.OpenAI())

# Pydantic 모델과 함께 사용</code></pre>
<h4 id="🚀-litellm-gateway">🚀 LiteLLM (Gateway)</h4>
<pre><code class="language-python">import litellm
from litellm.integrations.langfuse import LangfuseLogger

litellm.success_callback = [&quot;langfuse&quot;]
litellm.failure_callback = [&quot;langfuse&quot;]

# 이후 모든 LiteLLM 호출이 자동 추적
response = litellm.completion(
    model=&quot;gpt-4&quot;,
    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello&quot;}]
)</code></pre>
<h3 id="노코드-플랫폼-통합">노코드 플랫폼 통합</h3>
<h4 id="🎯-dify">🎯 Dify</h4>
<ul>
<li>Langfuse를 Dify 워크플로우에 연동</li>
<li>시각적으로 LLM 애플리케이션 구축하면서 자동 추적</li>
</ul>
<h4 id="🌊-flowise">🌊 Flowise</h4>
<ul>
<li>Flowise 노드에 Langfuse 추가</li>
<li>드래그 앤 드롭으로 LLM 앱 구축 + 모니터링</li>
</ul>
<h4 id="🌐-langflow">🌐 Langflow</h4>
<ul>
<li>Langflow 컴포넌트와 통합</li>
<li>플로우 실행 자동 추적</li>
</ul>
<h3 id="기타-통합">기타 통합</h3>
<h4 id="📊-posthog">📊 PostHog</h4>
<ul>
<li>제품 분석과 LLM 메트릭 결합</li>
<li>사용자 행동과 AI 성능 상관관계 분석</li>
</ul>
<h4 id="📈-mixpanel">📈 Mixpanel</h4>
<ul>
<li>이벤트 추적과 LLM 데이터 통합</li>
<li>코호트 분석 및 퍼널 분석</li>
</ul>
<hr>
<h2 id="시작하기">시작하기</h2>
<h3 id="개발-라이프사이클별-가이드">개발 라이프사이클별 가이드</h3>
<pre><code>PoC → 개발 → 테스트 → 프로덕션
 ↓      ↓      ↓        ↓
관찰   프롬프트  평가    모니터링
      관리     실험</code></pre><h3 id="1단계-트레이싱-설정-모든-단계">1단계: 트레이싱 설정 (모든 단계)</h3>
<p><strong>빠른 시작:</strong></p>
<pre><code class="language-bash">pip install langfuse</code></pre>
<pre><code class="language-python">from langfuse import Langfuse

langfuse = Langfuse(
    public_key=&quot;your-public-key&quot;,
    secret_key=&quot;your-secret-key&quot;
)

# 첫 번째 트레이스
trace = langfuse.trace(name=&quot;my-app&quot;)</code></pre>
<p><strong>권장사항:</strong></p>
<ul>
<li>✅ 개발 초기부터 트레이싱 설정</li>
<li>✅ 환경별로 프로젝트 분리 (dev, staging, prod)</li>
<li>✅ 의미 있는 이름과 메타데이터 추가</li>
</ul>
<h3 id="2단계-프롬프트-관리-도입-개발-단계">2단계: 프롬프트 관리 도입 (개발 단계)</h3>
<p><strong>시기</strong>: 프롬프트가 어느 정도 안정화되기 시작할 때</p>
<p><strong>단계:</strong></p>
<ol>
<li>기존 프롬프트를 Langfuse에 등록</li>
<li>코드에서 프롬프트 가져오기로 변경</li>
<li>팀과 함께 프롬프트 개선</li>
<li>버전 관리 시작</li>
</ol>
<pre><code class="language-python"># Before
prompt = &quot;당신은 고객 지원 AI입니다...&quot;

# After
prompt = langfuse.get_prompt(&quot;customer-support&quot;, label=&quot;production&quot;)</code></pre>
<h3 id="3단계-평가-설정-테스트프로덕션-단계">3단계: 평가 설정 (테스트/프로덕션 단계)</h3>
<p><strong>개발 환경:</strong></p>
<ol>
<li>테스트 데이터셋 구축</li>
<li>실험 실행</li>
<li>품질 메트릭 정의</li>
</ol>
<p><strong>프로덕션 환경:</strong></p>
<ol>
<li>사용자 피드백 수집</li>
<li>LLM-as-a-Judge 설정</li>
<li>정기적인 어노테이션</li>
</ol>
<h3 id="단계별-체크리스트">단계별 체크리스트</h3>
<h4 id="poc-단계">PoC 단계</h4>
<ul>
<li><input disabled="" type="checkbox"> Langfuse 계정 생성</li>
<li><input disabled="" type="checkbox"> 기본 트레이싱 설정</li>
<li><input disabled="" type="checkbox"> 첫 번째 트레이스 생성</li>
<li><input disabled="" type="checkbox"> 대시보드에서 데이터 확인</li>
</ul>
<h4 id="개발-단계">개발 단계</h4>
<ul>
<li><input disabled="" type="checkbox"> 프롬프트를 Langfuse로 이관</li>
<li><input disabled="" type="checkbox"> 버전 관리 시작</li>
<li><input disabled="" type="checkbox"> Playground에서 테스트</li>
<li><input disabled="" type="checkbox"> 팀원 초대 및 권한 설정</li>
</ul>
<h4 id="테스트-단계">테스트 단계</h4>
<ul>
<li><input disabled="" type="checkbox"> 테스트 데이터셋 구축</li>
<li><input disabled="" type="checkbox"> 평가 기준 정의</li>
<li><input disabled="" type="checkbox"> 실험 실행</li>
<li><input disabled="" type="checkbox"> 결과 분석</li>
</ul>
<h4 id="프로덕션-단계">프로덕션 단계</h4>
<ul>
<li><input disabled="" type="checkbox"> 사용자 피드백 시스템 구축</li>
<li><input disabled="" type="checkbox"> 모니터링 대시보드 설정</li>
<li><input disabled="" type="checkbox"> 알림 설정 (비용, 오류 등)</li>
<li><input disabled="" type="checkbox"> 정기 리뷰 프로세스 수립</li>
</ul>
<hr>
<h2 id="사용-사례">사용 사례</h2>
<h3 id="1-고객-지원-챗봇">1. 고객 지원 챗봇</h3>
<p><strong>과제:</strong></p>
<ul>
<li>다양한 질문 유형 처리</li>
<li>일관된 답변 품질 유지</li>
<li>비용 관리</li>
</ul>
<p><strong>Langfuse 활용:</strong></p>
<pre><code class="language-python"># 1. 대화 추적
trace = langfuse.trace(
    name=&quot;customer-support&quot;,
    user_id=customer_id,
    session_id=conversation_id,
    metadata={&quot;channel&quot;: &quot;web&quot;, &quot;language&quot;: &quot;ko&quot;}
)

# 2. 프롬프트 관리
prompt = langfuse.get_prompt(&quot;support-agent&quot;, label=&quot;production&quot;)

# 3. 의도 분류
classification = trace.span(
    name=&quot;intent-classification&quot;,
    input=user_message
)

# 4. 답변 생성
response = trace.generation(
    name=&quot;response-generation&quot;,
    model=&quot;gpt-4&quot;,
    input=prompt.compile(
        user_message=user_message,
        user_history=history
    )
)

# 5. 사용자 피드백 수집
langfuse.score(
    trace_id=trace.id,
    name=&quot;user-satisfaction&quot;,
    value=user_rating
)</code></pre>
<p><strong>결과:</strong></p>
<ul>
<li>📊 대화당 평균 비용 30% 감소</li>
<li>⭐ 사용자 만족도 15% 향상</li>
<li>🚀 신규 프롬프트 배포 시간 70% 단축</li>
</ul>
<h3 id="2-문서-검색-및-요약-rag">2. 문서 검색 및 요약 (RAG)</h3>
<p><strong>과제:</strong></p>
<ul>
<li>관련 문서 정확하게 검색</li>
<li>환각(hallucination) 방지</li>
<li>답변 품질 측정</li>
</ul>
<p><strong>Langfuse 활용:</strong></p>
<pre><code class="language-python">trace = langfuse.trace(name=&quot;rag-pipeline&quot;)

# 1. 문서 검색
retrieval = trace.span(
    name=&quot;document-retrieval&quot;,
    input={&quot;query&quot;: user_question},
    metadata={&quot;top_k&quot;: 5}
)
docs = vector_db.search(user_question, k=5)
retrieval.end(output={&quot;retrieved_docs&quot;: len(docs)})

# 2. 리랭킹
reranking = trace.span(name=&quot;reranking&quot;)
ranked_docs = reranker.rank(docs, user_question)
reranking.end(output={&quot;top_docs&quot;: ranked_docs[:3]})

# 3. 답변 생성
generation = trace.generation(
    name=&quot;answer-generation&quot;,
    model=&quot;gpt-4&quot;,
    input={
        &quot;question&quot;: user_question,
        &quot;context&quot;: ranked_docs
    }
)

# 4. 환각 체크 (LLM-as-a-Judge)
langfuse.score(
    trace_id=trace.id,
    name=&quot;hallucination-check&quot;,
    value=hallucination_score
)</code></pre>
<p><strong>결과:</strong></p>
<ul>
<li>✅ 환각 감소 40%</li>
<li>🎯  답변 정확도 25% 향상</li>
<li>📈 검색 성능 실시간 모니터링</li>
</ul>
<h3 id="3-코드-생성-어시스턴트">3. 코드 생성 어시스턴트</h3>
<p><strong>과제:</strong></p>
<ul>
<li>다양한 프로그래밍 언어 지원</li>
<li>코드 품질 보장</li>
<li>사용자별 컨텍스트 유지</li>
</ul>
<p><strong>Langfuse 활용:</strong></p>
<pre><code class="language-python"># 세션으로 연속된 코딩 세션 추적
trace = langfuse.trace(
    name=&quot;code-assistant&quot;,
    session_id=coding_session_id,
    user_id=developer_id
)

# 컨텍스트 수집
context_span = trace.span(name=&quot;context-gathering&quot;)
code_context = get_project_context(project_id)
context_span.end(output=code_context)

# 프롬프트 선택 (언어별)
prompt = langfuse.get_prompt(
    f&quot;code-gen-{programming_language}&quot;,
    label=&quot;production&quot;
)

# 코드 생성
generation = trace.generation(
    name=&quot;code-generation&quot;,
    model=&quot;gpt-4&quot;,
    input=prompt.compile(
        task=user_request,
        context=code_context,
        language=programming_language
    )
)

# 코드 품질 평가
langfuse.score(
    trace_id=trace.id,
    name=&quot;code-quality&quot;,
    value=static_analysis_score
)</code></pre>
<p><strong>결과:</strong></p>
<ul>
<li>💻 코드 생성 성공률 85%</li>
<li>🐛 버그 발생률 50% 감소</li>
<li>⚡ 개발자 생산성 2배 향상</li>
</ul>
<h3 id="4-콘텐츠-생성-플랫폼">4. 콘텐츠 생성 플랫폼</h3>
<p><strong>과제:</strong></p>
<ul>
<li>브랜드 톤앤매너 일관성</li>
<li>다양한 콘텐츠 형식 지원</li>
<li>A/B 테스트</li>
</ul>
<p><strong>Langfuse 활용:</strong></p>
<pre><code class="language-python"># A/B 테스트를 위한 프롬프트 버전
import random

version = &quot;A&quot; if random.random() &lt; 0.5 else &quot;B&quot;
prompt = langfuse.get_prompt(
    &quot;content-generator&quot;,
    label=f&quot;experiment-{version}&quot;
)

trace = langfuse.trace(
    name=&quot;content-generation&quot;,
    metadata={&quot;experiment_group&quot;: version}
)

# 콘텐츠 생성
generation = trace.generation(
    name=&quot;generate-content&quot;,
    model=&quot;gpt-4&quot;,
    input=prompt.compile(
        topic=content_topic,
        tone=brand_tone,
        format=content_format
    )
)

# 사용자 참여도 추적
langfuse.score(
    trace_id=trace.id,
    name=&quot;engagement-rate&quot;,
    value=calculate_engagement(content_id)
)</code></pre>
<p><strong>결과:</strong></p>
<ul>
<li>📝 콘텐츠 생산량 3배 증가</li>
<li>🎨 브랜드 일관성 95% 달성</li>
<li>📊 A/B 테스트로 참여도 20% 향상</li>
</ul>
<hr>
<h2 id="보안-및-컴플라이언스">보안 및 컴플라이언스</h2>
<h3 id="🔒-보안-인증">🔒 보안 인증</h3>
<ul>
<li><strong>SOC 2 Type II</strong>: 데이터 보안 및 가용성 인증</li>
<li><strong>ISO 27001</strong>: 정보 보안 관리 시스템 인증</li>
<li><strong>GDPR 준수</strong>: 유럽 개인정보 보호 규정 완전 준수</li>
<li><strong>HIPAA 준수</strong>: 의료 데이터 보호 규정 준수 (엔터프라이즈)</li>
</ul>
<h3 id="🛡️-데이터-보호">🛡️ 데이터 보호</h3>
<ul>
<li><strong>암호화</strong>:<ul>
<li>전송 중: TLS 1.3</li>
<li>저장 중: AES-256</li>
</ul>
</li>
<li><strong>데이터 격리</strong>: 프로젝트별 완전한 데이터 분리</li>
<li><strong>접근 제어</strong>: 세밀한 RBAC 및 IP 화이트리스트</li>
<li><strong>감사 로그</strong>: 모든 접근 및 변경 사항 기록</li>
</ul>
<h3 id="🏢-자체-호스팅">🏢 자체 호스팅</h3>
<ul>
<li><strong>완전한 제어</strong>: 자체 인프라에서 운영</li>
<li><strong>데이터 주권</strong>: 데이터가 외부로 나가지 않음</li>
<li><strong>커스터마이징</strong>: 필요에 맞게 수정 가능</li>
<li><strong>지원 옵션</strong>: 엔터프라이즈 지원 제공</li>
</ul>
<p><strong>자체 호스팅 옵션:</strong></p>
<ul>
<li>Docker Compose</li>
<li>Kubernetes (Helm Chart 제공)</li>
<li>AWS, GCP, Azure 등 클라우드 플랫폼</li>
</ul>
<h3 id="📋-데이터-거버넌스">📋 데이터 거버넌스</h3>
<ul>
<li><strong>데이터 레지던시</strong>: 데이터 저장 위치 선택 가능</li>
<li><strong>백업</strong>: 자동 백업 및 재해 복구</li>
<li><strong>삭제 권리</strong>: GDPR 삭제 권리 지원</li>
<li><strong>데이터 이동성</strong>: 언제든 데이터 내보내기 가능</li>
</ul>
<hr>
<h2 id="커뮤니티-및-지원">커뮤니티 및 지원</h2>
<h3 id="📚-문서-및-리소스">📚 문서 및 리소스</h3>
<ul>
<li><strong>공식 문서</strong>: <a href="https://langfuse.com/docs">https://langfuse.com/docs</a></li>
<li><strong>API 레퍼런스</strong>: <a href="https://api.reference.langfuse.com">https://api.reference.langfuse.com</a></li>
<li><strong>Python SDK</strong>: <a href="https://python.reference.langfuse.com">https://python.reference.langfuse.com</a></li>
<li><strong>JS/TS SDK</strong>: <a href="https://js.reference.langfuse.com">https://js.reference.langfuse.com</a></li>
</ul>
<h3 id="💬-커뮤니티">💬 커뮤니티</h3>
<ul>
<li><strong>Discord</strong>: 실시간 채팅 및 질문</li>
<li><strong>GitHub Discussions</strong>: 기술적인 논의</li>
<li><strong>GitHub Issues</strong>: 버그 리포트 및 기능 요청</li>
</ul>
<h3 id="🎯-시작하기">🎯 시작하기</h3>
<ol>
<li><strong>무료 계정 생성</strong>: <a href="https://cloud.langfuse.com">https://cloud.langfuse.com</a></li>
<li><strong>데모 프로젝트 체험</strong>: <a href="https://langfuse.com/docs/demo">https://langfuse.com/docs/demo</a></li>
<li><strong>10분 비디오 데모</strong>: <a href="https://langfuse.com/watch-demo">https://langfuse.com/watch-demo</a></li>
</ol>
<h3 id="📞-엔터프라이즈-문의">📞 엔터프라이즈 문의</h3>
<ul>
<li><strong>영업 문의</strong>: <a href="https://langfuse.com/talk-to-us">https://langfuse.com/talk-to-us</a></li>
<li><strong>지원</strong>: <a href="mailto:support@langfuse.com">support@langfuse.com</a></li>
<li><strong>채용</strong>: <a href="https://langfuse.com/careers">https://langfuse.com/careers</a></li>
</ul>
<hr>
<h2 id="가격-정책">가격 정책</h2>
<h3 id="💸-무료-티어">💸 무료 티어</h3>
<ul>
<li>월 50,000개 트레이스</li>
<li>모든 핵심 기능</li>
<li>커뮤니티 지원</li>
</ul>
<h3 id="📊-pro-티어">📊 Pro 티어</h3>
<ul>
<li>추가 트레이스당 종량제</li>
<li>우선 지원</li>
<li>고급 분석 기능</li>
</ul>
<h3 id="🏢-엔터프라이즈">🏢 엔터프라이즈</h3>
<ul>
<li>무제한 사용</li>
<li>전담 지원</li>
<li>SSO, SCIM, 감사 로그</li>
<li>커스텀 계약</li>
</ul>
<p><strong>최신 가격</strong>: <a href="https://langfuse.com/pricing">https://langfuse.com/pricing</a></p>
<hr>
<h2 id="로드맵">로드맵</h2>
<p>Langfuse는 활발하게 개발 중이며, 커뮤니티 피드백을 기반으로 계속 발전하고 있습니다.</p>
<p><strong>최신 로드맵</strong>: <a href="https://langfuse.com/docs/roadmap">https://langfuse.com/docs/roadmap</a></p>
<p><strong>최근 추가된 기능</strong> (Changelog):</p>
<ul>
<li>MCP (Model Context Protocol) 지원</li>
<li>향상된 에이전트 그래프 시각화</li>
<li>프롬프트 GitHub 통합</li>
<li>커스텀 대시보드 빌더</li>
<li>성능 최적화</li>
</ul>
<p><strong>계획된 기능</strong>:</p>
<ul>
<li>더 많은 LLM 프로바이더 통합</li>
<li>고급 평가 기능</li>
<li>실시간 모니터링 강화</li>
<li>AI 기반 인사이트</li>
</ul>
<hr>
<h2 id="결론">결론</h2>
<p>Langfuse는 LLM 애플리케이션을 개발하고 운영하는 데 필요한 모든 도구를 제공하는 종합 플랫폼입니다.</p>
<p><strong>핵심 가치:</strong></p>
<ul>
<li>🔍 <strong>투명성</strong>: 애플리케이션 내부를 완벽하게 이해</li>
<li>🚀 <strong>속도</strong>: 빠른 반복과 개선</li>
<li>📊 <strong>품질</strong>: 체계적인 평가와 모니터링</li>
<li>🤝 <strong>협업</strong>: 팀과 함께 더 나은 AI 만들기</li>
<li>🔒 <strong>신뢰</strong>: 엔터프라이즈급 보안과 컴플라이언스</li>
</ul>
<p><strong>시작이 간단합니다:</strong></p>
<pre><code class="language-bash">pip install langfuse</code></pre>
<pre><code class="language-python">from langfuse import Langfuse
langfuse = Langfuse()
# 이제 시작입니다!</code></pre>
<p>더 나은 LLM 애플리케이션을 만들기 위한 여정을 Langfuse와 함께하세요! 🚀</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Vercel React - Agent Skill Install]]></title>
            <link>https://velog.io/@exploration25-ai/Vercel-React-Agent-Skill-Install</link>
            <guid>https://velog.io/@exploration25-ai/Vercel-React-Agent-Skill-Install</guid>
            <pubDate>Thu, 22 Jan 2026 01:08:55 GMT</pubDate>
            <description><![CDATA[<p>Vercel React - Agent Skill</p>
<ol>
<li><p>터미널에서 실행</p>
<pre><code>npx add-skill vercel-labs/agent-skills</code></pre><p><img src="https://velog.velcdn.com/images/exploration25-ai/post/b1ecf1e4-03e4-47b7-815f-694c5353d8b1/image.png" alt=""></p>
</li>
<li><p>선택된 스킬 인스톨</p>
<ul>
<li>React&amp;Nest js  모범사례</li>
<li>웹 디자인 가이드 라인<pre><code>◆  Select skills to install
│  ◻ vercel-react-best-practices (React and Next.js performance optimization guidelines fro...)
│  ◻ web-design-guidelines
└</code></pre><img src="https://velog.velcdn.com/images/exploration25-ai/post/512436a2-ace9-49bd-8595-ddb48164f17c/image.png" alt=""></li>
</ul>
</li>
</ol>
<p>3.설치할 에이전트(IDE) 선택</p>
<pre><code>  Detected 8 agents
│
◆  Select agents to install skills to
│  ◼ Antigravity (.agent/skills)
│  ◼ Claude Code
│  ◼ Codex
│  ◼ Cursor
│  ◼ Gemini CLI
│  ◼ GitHub Copilot
│  ◼ OpenCode
│  ◼ Windsurf</code></pre><p><img src="https://velog.velcdn.com/images/exploration25-ai/post/09b3546d-ec26-4a96-b0f4-c3dfa54e7ff8/image.png" alt=""></p>
<ol start="4">
<li><p>설치 범위</p>
<ul>
<li>프로젝내</li>
<li>전체<pre><code>◆  Installation scope
│  ● Project (Install in current directory (committed with your project))
│  ○ Global</code></pre><img src="https://velog.velcdn.com/images/exploration25-ai/post/3b96899a-830d-49cb-b64c-ef5f554d129d/image.png" alt=""></li>
</ul>
</li>
<li><p>설치 방법</p>
</li>
</ol>
<ul>
<li>Symlink</li>
<li>Copy to all agents
<img src="https://velog.velcdn.com/images/exploration25-ai/post/e5412cf6-c4d1-4ee8-996f-22bbb9a2d931/image.png" alt=""></li>
</ul>
<ol start="6">
<li><p>인스톨 요약 및 실행</p>
<pre><code>◇  Installation Summary ────────────────────────────────────────────────────╮
│                                                                           │
│  ~/Recent_AI/.agents/skills/vercel-react-best-practices                   │
│    symlink → Antigravity, Claude Code, Codex, Cursor, Gemini CLI +3 more  │
│                                                                           │
│  ~/Recent_AI/.agents/skills/web-design-guidelines                         │
│    symlink → Antigravity, Claude Code, Codex, Cursor, Gemini CLI +3 more  │
│                                                                           │
├───────────────────────────────────────────────────────────────────────────╯
│
◆  Proceed with installation?
│  ● Yes / ○ No</code></pre><p><img src="https://velog.velcdn.com/images/exploration25-ai/post/e9ae27f2-fe6b-44dd-b23d-5ff138df66e3/image.png" alt=""></p>
</li>
<li><p>인스톨 완료 정보</p>
</li>
</ol>
<ul>
<li>터미널 내 설치 정보 안내</li>
<li>좌측 Agent skill 사용할 수 있는 폴더들 생성
<img src="https://velog.velcdn.com/images/exploration25-ai/post/7cb4839d-4607-4e54-8aca-6bdd1cbf50c9/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[n8n 로컬 서버 기동 가이드]]></title>
            <link>https://velog.io/@exploration25-ai/n8n-%EB%A1%9C%EC%BB%AC-%EC%84%9C%EB%B2%84-%EA%B8%B0%EB%8F%99-%EA%B0%80%EC%9D%B4%EB%93%9C</link>
            <guid>https://velog.io/@exploration25-ai/n8n-%EB%A1%9C%EC%BB%AC-%EC%84%9C%EB%B2%84-%EA%B8%B0%EB%8F%99-%EA%B0%80%EC%9D%B4%EB%93%9C</guid>
            <pubDate>Sat, 10 Jan 2026 05:36:45 GMT</pubDate>
            <description><![CDATA[<h1 id="agent-builder-n8n-기반---로컬-설치-및-실행-가이드">Agent Builder (n8n 기반) - 로컬 설치 및 실행 가이드</h1>
<h2 id="목차">목차</h2>
<ol>
<li><a href="#%EB%B9%A0%EB%A5%B8-%EC%8B%9C%EC%9E%91">빠른 시작</a></li>
<li><a href="#%EC%82%AC%EC%A0%84-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD">사전 요구사항</a></li>
<li><a href="#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%81%B4%EB%A1%A0-%EB%B0%8F-%EC%84%A4%EC%B9%98">프로젝트 클론 및 설치</a></li>
<li><a href="#%EC%84%9C%EB%B2%84-%EC%8B%A4%ED%96%89">서버 실행</a></li>
<li><a href="#%EC%84%A4%EC%B9%98%EB%90%9C-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%83%81%EC%84%B8">설치된 패키지 상세</a></li>
<li><a href="#%ED%8A%B8%EB%9F%AC%EB%B8%94%EC%8A%88%ED%8C%85">트러블슈팅</a></li>
</ol>
<hr>
<h2 id="빠른-시작">빠른 시작</h2>
<p>새로운 PC에서 5분 안에 Agent Builder를 실행하세요.</p>
<pre><code class="language-bash"># 1. Git Repository 클론
git clone https://github.com/ai-exploration-25/n8n_new_project.git
cd n8n_new_project/n8n

# 2. 의존성 설치
npx pnpm@10.22.0 install

# 3. 프로젝트 빌드
npx pnpm@10.22.0 build

# 4. 서버 실행
# 터미널 1: 프론트엔드 개발 서버
npx pnpm@10.22.0 dev

# 터미널 2: 백엔드 API 서버
npx pnpm@10.22.0 start

# 5. 브라우저에서 접속
# http://localhost:5678</code></pre>
<hr>
<h2 id="사전-요구사항">사전 요구사항</h2>
<h3 id="필수-소프트웨어">필수 소프트웨어</h3>
<table>
<thead>
<tr>
<th>소프트웨어</th>
<th>최소 버전</th>
<th>확인 명령어</th>
<th>설치 가이드</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Node.js</strong></td>
<td>&gt;= 22.16</td>
<td><code>node --version</code></td>
<td><a href="https://nodejs.org/">nodejs.org</a></td>
</tr>
<tr>
<td><strong>Git</strong></td>
<td>최신 버전</td>
<td><code>git --version</code></td>
<td><a href="https://git-scm.com/">git-scm.com</a></td>
</tr>
</tbody></table>
<p><strong>참고</strong>: pnpm은 자동으로 npx를 통해 사용되므로 별도 설치 불필요</p>
<h3 id="시스템-요구사항">시스템 요구사항</h3>
<ul>
<li><strong>메모리</strong>: 최소 4GB RAM (권장 8GB 이상)</li>
<li><strong>디스크 공간</strong>: 최소 2GB 여유 공간</li>
<li><strong>OS</strong>: macOS, Linux, Windows (WSL2 권장)</li>
</ul>
<hr>
<h2 id="프로젝트-클론-및-설치">프로젝트 클론 및 설치</h2>
<h3 id="1단계-repository-클론">1단계: Repository 클론</h3>
<pre><code class="language-bash"># HTTPS 방식 (권장)
git clone https://github.com/ai-exploration-25/n8n_new_project.git

# 또는 SSH 방식
git clone git@github.com:ai-exploration-25/n8n_new_project.git

# 프로젝트 디렉토리로 이동
cd n8n_new_project/n8n</code></pre>
<h3 id="2단계-의존성-설치">2단계: 의존성 설치</h3>
<pre><code class="language-bash"># pnpm을 사용하여 모든 패키지 설치 (약 3-5분 소요)
npx pnpm@10.22.0 install</code></pre>
<p><strong>설치되는 패키지 수</strong>:</p>
<ul>
<li>직접 의존성: 87개</li>
<li>전체 패키지 (의존성 포함): 약 1,500개</li>
</ul>
<h3 id="3단계-프로젝트-빌드">3단계: 프로젝트 빌드</h3>
<pre><code class="language-bash"># Turbo를 사용한 모노레포 빌드 (약 2-3분 소요)
npx pnpm@10.22.0 build</code></pre>
<p><strong>빌드되는 패키지</strong>: 39개 (n8n 모노레포 전체)</p>
<hr>
<h2 id="서버-실행">서버 실행</h2>
<h3 id="개발-모드-권장">개발 모드 (권장)</h3>
<p><strong>옵션 1: 전체 개발 환경 (프론트엔드 + 백엔드)</strong></p>
<p>두 개의 터미널이 필요합니다:</p>
<pre><code class="language-bash"># 터미널 1: 프론트엔드 개발 서버 (Vue + Vite)
npx pnpm@10.22.0 dev

# 터미널 2: 백엔드 API 서버 (Express + n8n)
npx pnpm@10.22.0 start</code></pre>
<p><strong>옵션 2: 백엔드만 실행</strong></p>
<pre><code class="language-bash">npx pnpm@10.22.0 dev:be
npx pnpm@10.22.0 start</code></pre>
<p><strong>옵션 3: 프론트엔드만 실행</strong></p>
<pre><code class="language-bash">npx pnpm@10.22.0 dev:fe</code></pre>
<h3 id="프로덕션-모드">프로덕션 모드</h3>
<pre><code class="language-bash"># 빌드된 파일로 실행
npx pnpm@10.22.0 start</code></pre>
<h3 id="접속-url">접속 URL</h3>
<p>서버가 정상적으로 실행되면 다음 주소로 접속할 수 있습니다:</p>
<table>
<thead>
<tr>
<th>서비스</th>
<th>URL</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Agent Builder 메인</strong></td>
<td><a href="http://localhost:5678">http://localhost:5678</a></td>
<td>프로덕션/통합 화면</td>
</tr>
<tr>
<td><strong>프론트엔드 개발 서버</strong></td>
<td><a href="http://localhost:8080">http://localhost:8080</a></td>
<td>Vite HMR 개발 화면</td>
</tr>
<tr>
<td><strong>백엔드 API</strong></td>
<td><a href="http://localhost:5678">http://localhost:5678</a></td>
<td>REST API 엔드포인트</td>
</tr>
<tr>
<td><strong>Task Broker</strong></td>
<td><a href="http://127.0.0.1:5679">http://127.0.0.1:5679</a></td>
<td>내부 작업 큐</td>
</tr>
</tbody></table>
<hr>
<h2 id="프로젝트-개요">프로젝트 개요</h2>
<h3 id="브랜딩">브랜딩</h3>
<p>이 프로젝트는 n8n 워크플로우 자동화 플랫폼을 기반으로 <strong>Agent Builder</strong>로 리브랜딩되었습니다.</p>
<p><strong>주요 변경사항</strong>:</p>
<ul>
<li>n8n 로고 → 다른 로고</li>
<li>이메일 템플릿 브랜딩 변경</li>
<li>UI 텍스트 및 레이블 커스터마이징</li>
</ul>
<h3 id="git-커밋-히스토리">Git 커밋 히스토리</h3>
<pre><code>1953adb5 feat: Replace n8n logo with Other logo in email templates
76e24ef0 feat: Replace n8n logo with Agent Builder branding
5fc3cb5a chore: Add gitignore and lefthook configuration
ffb751cc feat: Add Korean localization for n8n frontend
b5179ec0 Initial commit: n8n agent builder project</code></pre><hr>
<h2 id="설치된-패키지-상세-분류">설치된 패키지 상세 분류</h2>
<h3 id="1-핵심-워크플로우-패키지">1. 핵심 워크플로우 패키지</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>n8n-workflow</td>
<td>^1.120.4</td>
<td>n8n 워크플로우 핵심 타입 및 인터페이스</td>
</tr>
</tbody></table>
<h3 id="2-스키마-검증-및-타입-안정성">2. 스키마 검증 및 타입 안정성</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>zod</td>
<td>^3.25.76</td>
<td>런타임 타입 검증 및 스키마 정의</td>
</tr>
<tr>
<td>zod-class</td>
<td>^0.0.18</td>
<td>Zod와 클래스 기반 DTO 통합</td>
</tr>
<tr>
<td>class-validator</td>
<td>^0.14.3</td>
<td>클래스 기반 유효성 검증</td>
</tr>
<tr>
<td>class-transformer</td>
<td>^0.5.1</td>
<td>객체 변환 라이브러리</td>
</tr>
<tr>
<td>json-schema</td>
<td>^0.4.0</td>
<td>JSON 스키마 정의</td>
</tr>
<tr>
<td>jest-expect-message</td>
<td>^1.1.3</td>
<td>Jest 테스트 메시지 확장 (devDependency)</td>
</tr>
</tbody></table>
<h3 id="3-vuejs-프론트엔드-생태계">3. Vue.js 프론트엔드 생태계</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>vue</td>
<td>^3.5.26</td>
<td>Vue.js 3 프레임워크</td>
</tr>
<tr>
<td>pinia</td>
<td>^3.0.4</td>
<td>Vue 3 상태 관리 라이브러리</td>
</tr>
<tr>
<td>vue-router</td>
<td>^4.6.4</td>
<td>Vue 라우팅</td>
</tr>
<tr>
<td>@vueuse/core</td>
<td>^14.1.0</td>
<td>Vue 컴포지션 유틸리티</td>
</tr>
<tr>
<td>@vue-flow/core</td>
<td>^1.48.1</td>
<td>Vue 기반 플로우 차트 컴포넌트</td>
</tr>
<tr>
<td>@vue/test-utils</td>
<td>^2.4.6</td>
<td>Vue 컴포넌트 테스팅</td>
</tr>
<tr>
<td>@vitejs/plugin-vue</td>
<td>^6.0.3</td>
<td>Vite Vue 플러그인</td>
</tr>
</tbody></table>
<h3 id="4-langchain-aiml-생태계">4. LangChain AI/ML 생태계</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>@langchain/core</td>
<td>^1.1.12</td>
<td>LangChain 핵심 기능</td>
</tr>
<tr>
<td>@langchain/classic</td>
<td>^1.0.8</td>
<td>LangChain 클래식 체인</td>
</tr>
<tr>
<td>@langchain/community</td>
<td>^1.1.3</td>
<td>LangChain 커뮤니티 통합</td>
</tr>
<tr>
<td>@langchain/langgraph</td>
<td>^1.0.14</td>
<td>LangChain 그래프 기반 워크플로우</td>
</tr>
<tr>
<td>@langchain/openai</td>
<td>^1.2.1</td>
<td>OpenAI 통합</td>
</tr>
<tr>
<td>@langchain/anthropic</td>
<td>^1.3.7</td>
<td>Anthropic Claude 통합</td>
</tr>
<tr>
<td>@langchain/aws</td>
<td>^1.1.1</td>
<td>AWS 서비스 통합</td>
</tr>
<tr>
<td>@langchain/cohere</td>
<td>^1.0.1</td>
<td>Cohere 통합</td>
</tr>
<tr>
<td>@langchain/textsplitters</td>
<td>^1.0.1</td>
<td>텍스트 분할 유틸리티</td>
</tr>
</tbody></table>
<h3 id="5-aiml-서비스-클라이언트">5. AI/ML 서비스 클라이언트</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>@n8n_io/ai-assistant-sdk</td>
<td>^1.20.0</td>
<td>n8n AI 어시스턴트 SDK</td>
</tr>
<tr>
<td>@huggingface/inference</td>
<td>^4.13.5</td>
<td>HuggingFace 추론 API</td>
</tr>
<tr>
<td>@modelcontextprotocol/sdk</td>
<td>^1.25.2</td>
<td>Model Context Protocol SDK</td>
</tr>
</tbody></table>
<h3 id="6-벡터-데이터베이스-및-임베딩">6. 벡터 데이터베이스 및 임베딩</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>@pinecone-database/pinecone</td>
<td>^6.1.3</td>
<td>Pinecone 벡터 DB 클라이언트</td>
</tr>
<tr>
<td>@qdrant/js-client-rest</td>
<td>^1.16.2</td>
<td>Qdrant 벡터 DB 클라이언트</td>
</tr>
<tr>
<td>@supabase/supabase-js</td>
<td>^2.90.1</td>
<td>Supabase 클라이언트</td>
</tr>
</tbody></table>
<h3 id="7-백엔드-프레임워크-및-서버">7. 백엔드 프레임워크 및 서버</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>express</td>
<td>^5.2.1</td>
<td>Node.js 웹 프레임워크</td>
</tr>
<tr>
<td>ws</td>
<td>^8.19.0</td>
<td>WebSocket 서버/클라이언트</td>
</tr>
<tr>
<td>bull</td>
<td>^4.16.5</td>
<td>Redis 기반 작업 큐</td>
</tr>
<tr>
<td>amqplib</td>
<td>^0.10.9</td>
<td>RabbitMQ 클라이언트</td>
</tr>
</tbody></table>
<h3 id="8-데이터-처리-및-변환">8. 데이터 처리 및 변환</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>lodash</td>
<td>^4.17.21</td>
<td>JavaScript 유틸리티 라이브러리</td>
</tr>
<tr>
<td>luxon</td>
<td>^3.7.2</td>
<td>날짜/시간 처리</td>
</tr>
<tr>
<td>moment-timezone</td>
<td>^0.6.0</td>
<td>타임존 처리</td>
</tr>
<tr>
<td>uuid</td>
<td>^13.0.0</td>
<td>UUID 생성</td>
</tr>
<tr>
<td>nanoid</td>
<td>^5.1.6</td>
<td>짧은 고유 ID 생성</td>
</tr>
<tr>
<td>change-case</td>
<td>^5.4.4</td>
<td>문자열 케이스 변환</td>
</tr>
<tr>
<td>xml2js</td>
<td>^0.6.2</td>
<td>XML ↔ JSON 변환</td>
</tr>
<tr>
<td>cheerio</td>
<td>^1.1.2</td>
<td>서버사이드 HTML 파싱</td>
</tr>
</tbody></table>
<h3 id="9-보안-및-인증">9. 보안 및 인증</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>jsonwebtoken</td>
<td>^9.0.3</td>
<td>JWT 토큰 생성/검증</td>
</tr>
<tr>
<td>bcryptjs</td>
<td>^3.0.3</td>
<td>비밀번호 해싱</td>
</tr>
<tr>
<td>basic-auth</td>
<td>^2.0.1</td>
<td>HTTP Basic 인증</td>
</tr>
<tr>
<td>xss</td>
<td>^1.0.15</td>
<td>XSS 방지</td>
</tr>
</tbody></table>
<h3 id="10-테스팅-프레임워크">10. 테스팅 프레임워크</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>vitest</td>
<td>^4.0.16</td>
<td>빠른 단위 테스트 프레임워크</td>
</tr>
<tr>
<td>jest-mock-extended</td>
<td>^4.0.0</td>
<td>Jest 목 확장</td>
</tr>
<tr>
<td>vitest-mock-extended</td>
<td>^3.1.0</td>
<td>Vitest 목 확장</td>
</tr>
<tr>
<td>@playwright/test</td>
<td>^1.57.0</td>
<td>E2E 테스팅</td>
</tr>
<tr>
<td>@pinia/testing</td>
<td>^1.0.3</td>
<td>Pinia 상태 테스팅</td>
</tr>
<tr>
<td>nock</td>
<td>^14.0.10</td>
<td>HTTP 목킹</td>
</tr>
<tr>
<td>miragejs</td>
<td>^0.1.48</td>
<td>API 목 서버</td>
</tr>
<tr>
<td>testcontainers</td>
<td>^11.11.0</td>
<td>컨테이너 기반 통합 테스트</td>
</tr>
</tbody></table>
<h3 id="11-개발-도구">11. 개발 도구</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>@typescript-eslint/utils</td>
<td>^8.52.0</td>
<td>TypeScript ESLint 유틸리티</td>
</tr>
<tr>
<td>@typescript-eslint/rule-tester</td>
<td>^8.52.0</td>
<td>ESLint 룰 테스터</td>
</tr>
<tr>
<td>@storybook/vue3-vite</td>
<td>^10.1.11</td>
<td>Storybook Vue 3 통합</td>
</tr>
<tr>
<td>@faker-js/faker</td>
<td>^10.2.0</td>
<td>페이크 데이터 생성</td>
</tr>
</tbody></table>
<h3 id="12-http-클라이언트-및-네트워크">12. HTTP 클라이언트 및 네트워크</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>axios</td>
<td>^1.13.2</td>
<td>HTTP 클라이언트</td>
</tr>
<tr>
<td>form-data</td>
<td>^4.0.5</td>
<td>멀티파트 폼 데이터</td>
</tr>
</tbody></table>
<h3 id="13-파서-및-컴파일러">13. 파서 및 컴파일러</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>acorn</td>
<td>^8.15.0</td>
<td>JavaScript 파서</td>
</tr>
<tr>
<td>acorn-walk</td>
<td>^8.3.4</td>
<td>AST 순회</td>
</tr>
<tr>
<td>@lezer/common</td>
<td>^1.5.0</td>
<td>Lezer 파서 공통 유틸</td>
</tr>
<tr>
<td>@lezer/highlight</td>
<td>^1.2.3</td>
<td>구문 강조</td>
</tr>
<tr>
<td>@lezer/lr</td>
<td>^1.4.7</td>
<td>LR 파서</td>
</tr>
</tbody></table>
<h3 id="14-ui-컴포넌트-및-시각화">14. UI 컴포넌트 및 시각화</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>chart.js</td>
<td>^4.5.1</td>
<td>차트 라이브러리</td>
</tr>
<tr>
<td>ag-grid-community</td>
<td>^35.0.0</td>
<td>데이터 그리드</td>
</tr>
<tr>
<td>@dagrejs/dagre</td>
<td>^1.1.8</td>
<td>그래프 레이아웃</td>
</tr>
<tr>
<td>@clack/prompts</td>
<td>^0.11.0</td>
<td>CLI 프롬프트</td>
</tr>
<tr>
<td>cli-progress</td>
<td>^3.12.0</td>
<td>CLI 프로그레스 바</td>
</tr>
</tbody></table>
<h3 id="15-유틸리티-및-헬퍼">15. 유틸리티 및 헬퍼</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>callsites</td>
<td>^4.2.0</td>
<td>콜스택 추적</td>
</tr>
<tr>
<td>fast-glob</td>
<td>^3.3.3</td>
<td>빠른 파일 글로빙</td>
</tr>
<tr>
<td>chokidar</td>
<td>^5.0.0</td>
<td>파일 시스템 감시</td>
</tr>
<tr>
<td>cache-manager</td>
<td>^7.2.8</td>
<td>캐싱 관리</td>
</tr>
<tr>
<td>bowser</td>
<td>^2.13.1</td>
<td>브라우저 감지</td>
</tr>
<tr>
<td>picocolors</td>
<td>^1.1.1</td>
<td>터미널 색상</td>
</tr>
<tr>
<td>@mozilla/readability</td>
<td>^0.6.0</td>
<td>웹 페이지 가독성 추출</td>
</tr>
<tr>
<td>@internationalized/date</td>
<td>^3.10.1</td>
<td>국제화 날짜 처리</td>
</tr>
<tr>
<td>minifaker</td>
<td>^1.34.1</td>
<td>경량 페이커</td>
</tr>
</tbody></table>
<h3 id="16-데이터베이스-및-스트리밍">16. 데이터베이스 및 스트리밍</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>alasql</td>
<td>^4.17.0</td>
<td>JavaScript SQL 데이터베이스</td>
</tr>
<tr>
<td>@kafkajs/confluent-schema-registry</td>
<td>^3.9.0</td>
<td>Kafka 스키마 레지스트리</td>
</tr>
</tbody></table>
<h3 id="17-모니터링-및-에러-추적">17. 모니터링 및 에러 추적</h3>
<table>
<thead>
<tr>
<th>패키지명</th>
<th>버전</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>@sentry/vue</td>
<td>^10.32.1</td>
<td>Sentry Vue 통합</td>
</tr>
<tr>
<td>@sentry/node</td>
<td>^10.32.1</td>
<td>Sentry Node.js 통합</td>
</tr>
<tr>
<td>@sentry/core</td>
<td>^10.32.1</td>
<td>Sentry 핵심</td>
</tr>
<tr>
<td>@rudderstack/rudder-sdk-node</td>
<td>^3.0.0</td>
<td>RudderStack 분석</td>
</tr>
</tbody></table>
<hr>
<h2 id="설치-통계">설치 통계</h2>
<ul>
<li><strong>총 설치된 패키지 수</strong>: 87개 (직접 의존성 86개 + devDependency 1개)</li>
<li><strong>전체 패키지 수</strong> (의존성 포함): 1,500개</li>
<li><strong>주요 카테고리</strong>:<ul>
<li>Vue.js 생태계: 7개</li>
<li>LangChain AI/ML: 9개</li>
<li>테스팅: 9개</li>
<li>데이터 처리: 8개</li>
<li>보안: 4개</li>
<li>백엔드: 4개</li>
</ul>
</li>
</ul>
<hr>
<h2 id="주요-사용-패턴">주요 사용 패턴</h2>
<h3 id="프론트엔드-아키텍처">프론트엔드 아키텍처</h3>
<pre><code>Vue 3 + Pinia + Vue Router + VueUse
└── 컴포넌트 테스팅: Vue Test Utils
└── UI 컴포넌트: Vue Flow, Chart.js, AG Grid
└── 빌드: Vite + Vue Plugin</code></pre><h3 id="aiml-스택">AI/ML 스택</h3>
<pre><code>LangChain Core
├── OpenAI, Anthropic, Cohere (LLM 제공자)
├── HuggingFace (모델 추론)
├── Pinecone, Qdrant (벡터 DB)
└── Text Splitters (텍스트 처리)</code></pre><h3 id="백엔드-스택">백엔드 스택</h3>
<pre><code>Express (웹 서버)
├── Bull (작업 큐)
├── JWT (인증)
├── WebSocket (실시간 통신)
└── Axios (HTTP 클라이언트)</code></pre><h3 id="테스팅-스택">테스팅 스택</h3>
<pre><code>Vitest (단위 테스트)
├── Playwright (E2E)
├── Nock (HTTP 목킹)
├── Testcontainers (통합 테스트)
└── MirageJS (API 목킹)</code></pre><hr>
<h2 id="설치-명령어-히스토리">설치 명령어 히스토리</h2>
<pre><code class="language-bash"># 1차: n8n-workflow 핵심 패키지
npm install n8n-workflow --cache /tmp/npm-cache

# 2차: XSS, AI SDK 등 보안 및 AI 패키지
npm install xss minifaker @n8n_io/ai-assistant-sdk --cache /tmp/npm-cache

# 3차: LangChain 생태계
npm install jest-mock-extended @langchain/core @langchain/langgraph @langchain/classic @langchain/openai @langchain/textsplitters picocolors --cache /tmp/npm-cache

# 4차: Vue 및 핵심 유틸리티
npm install vue pinia vue-router express lodash luxon uuid moment-timezone axios vitest nock nanoid class-validator form-data xml2js jsonwebtoken ws fast-glob json-schema change-case @pinia/testing @vueuse/core @vue-flow/core @faker-js/faker @vue/test-utils vitest-mock-extended --cache /tmp/npm-cache

# 5차: 테스팅 및 UI 라이브러리
npm install @typescript-eslint/utils @typescript-eslint/rule-tester @playwright/test @storybook/vue3-vite miragejs testcontainers @lezer/common @lezer/highlight @lezer/lr @dagrejs/dagre @clack/prompts --cache /tmp/npm-cache

# 6차: LangChain 커뮤니티 및 벡터 DB
npm install @langchain/community @langchain/anthropic @langchain/aws @langchain/cohere @pinecone-database/pinecone @qdrant/js-client-rest @supabase/supabase-js @huggingface/inference @kafkajs/confluent-schema-registry --cache /tmp/npm-cache

# 7차: 유틸리티 패키지
npm install bcryptjs cheerio acorn acorn-walk bull cache-manager class-transformer cli-progress bowser basic-auth chart.js callsites chokidar amqplib alasql ag-grid-community --cache /tmp/npm-cache

# 8차: 모니터링 및 도구
npm install @modelcontextprotocol/sdk @sentry/vue @sentry/node @sentry/core @rudderstack/rudder-sdk-node @internationalized/date @mozilla/readability @vitejs/plugin-vue --cache /tmp/npm-cache

# 9차: 테스트 유틸리티
npm install jest-expect-message --save-dev --cache /tmp/npm-cache</code></pre>
<hr>
<h2 id="n8n-로컬-실행-가이드">n8n 로컬 실행 가이드</h2>
<h3 id="사전-요구사항-1">사전 요구사항</h3>
<ul>
<li>Node.js &gt;= 22.16</li>
<li>pnpm &gt;= 10.22.0</li>
</ul>
<h3 id="실행-단계">실행 단계</h3>
<pre><code class="language-bash"># 1. n8n 디렉토리로 이동
cd /Users/user/Desktop/n8n_repository/n8n_new_project/n8n

# 2. pnpm으로 의존성 설치 (npx 사용)
npx pnpm@10.22.0 install

# 3. 프로젝트 빌드
npx pnpm@10.22.0 build

# 4. 개발 서버 실행 (옵션 선택)
npx pnpm@10.22.0 dev           # 전체 개발 환경
npx pnpm@10.22.0 dev:be        # 백엔드만
npx pnpm@10.22.0 dev:fe        # 프론트엔드만
npx pnpm@10.22.0 dev:ai        # AI 기능만

# 또는 프로덕션 모드로 실행
npx pnpm@10.22.0 start</code></pre>
<h3 id="typescript-설정-수정-내역">TypeScript 설정 수정 내역</h3>
<p><strong>1. composite 설정 추가</strong></p>
<ul>
<li>파일: <code>packages/workflow/tsconfig.build.esm.json</code></li>
<li>변경: <code>&quot;composite&quot;: true</code> 추가</li>
<li>이유: TypeScript 프로젝트 참조 요구사항</li>
</ul>
<p><strong>2. extends 경로 수정</strong></p>
<ul>
<li>파일: <code>packages/@n8n/api-types/tsconfig.json</code></li>
<li>변경: <code>&quot;@n8n/typescript-config/tsconfig.common.json&quot;</code> → <code>&quot;../typescript-config/tsconfig.common.json&quot;</code></li>
<li>이유: 상대 경로로 올바르게 해석되도록 수정</li>
</ul>
<hr>
<h2 id="보안-권고사항">보안 권고사항</h2>
<p>설치 중 발견된 취약점:</p>
<ul>
<li><strong>2개의 critical severity 취약점</strong> 발견</li>
<li>권장 조치: <code>npm audit fix --force</code> 실행 고려</li>
<li>주의: 일부 deprecated 패키지 경고 발생 (<a href="mailto:glob@7.2.3">glob@7.2.3</a>, <a href="mailto:rimraf@3.0.2">rimraf@3.0.2</a> 등)</li>
</ul>
<hr>
<h2 id="추가-참고사항">추가 참고사항</h2>
<h3 id="n8n-원본-프로젝트-특징">n8n 원본 프로젝트 특징</h3>
<ul>
<li><strong>패키지 매니저</strong>: pnpm (workspace 기반 모노레포)</li>
<li><strong>빌드 시스템</strong>: Turbo</li>
<li><strong>Node 버전</strong>: &gt;= 22.16</li>
<li><strong>총 TypeScript 파일</strong>: 약 8,990개</li>
<li><strong>주요 디렉토리</strong>:<ul>
<li><code>packages/nodes-base</code>: 3,259개 노드 파일</li>
<li><code>packages/cli</code>: 1,172개 백엔드 파일</li>
<li><code>packages/frontend/editor-ui</code>: 1,075개 프론트엔드 파일</li>
</ul>
</li>
</ul>
<h3 id="현재-프로젝트-환경">현재 프로젝트 환경</h3>
<ul>
<li><strong>작업 디렉토리</strong>: <code>/Users/user/Desktop/n8n_repository/n8n_new_project</code></li>
<li><strong>패키지 매니저</strong>: npm (pnpm 대신)</li>
<li><strong>캐시 우회</strong>: <code>--cache /tmp/npm-cache</code> 사용 (권한 문제 회피)</li>
</ul>
<hr>
<h2 id="마이그레이션-노트">마이그레이션 노트</h2>
<p>n8n 원본은 모노레포 구조로 <code>workspace:*</code> 프로토콜을 사용하여 내부 패키지를 참조합니다:</p>
<ul>
<li><code>@n8n/permissions</code></li>
<li><code>@n8n/config</code></li>
<li><code>@n8n/db</code></li>
<li><code>@n8n/di</code></li>
<li>기타 30+ 개의 @n8n 스코프 패키지</li>
</ul>
<p>현재 프로젝트에서는 이러한 내부 패키지들을 직접 구현하거나 외부 대안으로 대체해야 할 수 있습니다.</p>
<hr>
<h2 id="트러블슈팅">트러블슈팅</h2>
<h3 id="일반적인-문제-해결">일반적인 문제 해결</h3>
<h4 id="1-npm-캐시-권한-오류">1. npm 캐시 권한 오류</h4>
<pre><code class="language-bash"># 오류: EACCES: permission denied, mkdir &#39;/Users/user/.npm/_cacache/...&#39;
# 해결: 임시 캐시 디렉토리 사용
npm install --cache /tmp/npm-cache</code></pre>
<h4 id="2-typescript-컴파일-오류">2. TypeScript 컴파일 오류</h4>
<p><strong>오류 A: Referenced project must have setting &quot;composite&quot;: true</strong></p>
<pre><code class="language-bash"># 파일: packages/workflow/tsconfig.build.esm.json
# 해결: &quot;composite&quot;: true 추가됨 (이미 수정 완료)</code></pre>
<p><strong>오류 B: File &#39;@n8n/typescript-config/tsconfig.common.json&#39; not found</strong></p>
<pre><code class="language-bash"># 파일: packages/@n8n/api-types/tsconfig.json
# 해결: 상대 경로로 변경됨 (이미 수정 완료)</code></pre>
<h4 id="3-포트-충돌">3. 포트 충돌</h4>
<pre><code class="language-bash"># 오류: Port 5678 is already in use
# 해결 1: 기존 프로세스 종료
lsof -ti:5678 | xargs kill -9

# 해결 2: 환경 변수로 다른 포트 사용
N8N_PORT=5679 npx pnpm@10.22.0 start</code></pre>
<h4 id="4-nodejs-버전-불일치">4. Node.js 버전 불일치</h4>
<pre><code class="language-bash"># 현재 버전 확인
node --version

# nvm 사용 시
nvm install 22.16
nvm use 22.16

# 또는 최신 LTS 버전
nvm install --lts</code></pre>
<h4 id="5-빌드-실패">5. 빌드 실패</h4>
<pre><code class="language-bash"># 전체 정리 후 재빌드
npx pnpm@10.22.0 clean
npx pnpm@10.22.0 install
npx pnpm@10.22.0 build</code></pre>
<h4 id="6-데이터베이스-마이그레이션-오류">6. 데이터베이스 마이그레이션 오류</h4>
<pre><code class="language-bash"># n8n은 첫 실행 시 자동으로 SQLite DB 생성
# 문제 발생 시 DB 파일 삭제 후 재시작
rm -rf ~/.n8n/database.sqlite
npx pnpm@10.22.0 start</code></pre>
<h3 id="환경-변수-설정-선택사항">환경 변수 설정 (선택사항)</h3>
<p>n8n은 환경 변수 없이도 기본 설정으로 실행됩니다. 필요시 다음과 같이 설정할 수 있습니다:</p>
<pre><code class="language-bash"># .env 파일 생성 예시 (선택사항)
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_HOST=localhost
N8N_EDITOR_BASE_URL=http://localhost:5678
N8N_LOG_LEVEL=info

# 데이터베이스 설정 (기본값: SQLite)
DB_TYPE=sqlite
DB_SQLITE_DATABASE=~/.n8n/database.sqlite

# 보안 설정
N8N_BASIC_AUTH_ACTIVE=false
N8N_JWT_SECRET=&lt;your-secret-key&gt;</code></pre>
<h3 id="성능-최적화">성능 최적화</h3>
<h4 id="개발-환경">개발 환경</h4>
<pre><code class="language-bash"># 백엔드만 개발할 때
npx pnpm@10.22.0 dev:be

# 프론트엔드만 개발할 때
npx pnpm@10.22.0 dev:fe

# AI 기능만 개발할 때
npx pnpm@10.22.0 dev:ai</code></pre>
<h4 id="프로덕션-환경">프로덕션 환경</h4>
<pre><code class="language-bash"># 빌드 최적화
npx pnpm@10.22.0 build:deploy

# Docker 이미지 빌드 (선택사항)
npx pnpm@10.22.0 build:docker</code></pre>
<h3 id="로그-확인">로그 확인</h3>
<pre><code class="language-bash"># n8n 로그 위치
~/.n8n/logs/

# 실시간 로그 확인
tail -f ~/.n8n/logs/n8n.log

# 개발 모드 콘솔 출력
N8N_LOG_LEVEL=debug npx pnpm@10.22.0 start</code></pre>
<h3 id="데이터-백업">데이터 백업</h3>
<pre><code class="language-bash"># n8n 데이터 디렉토리
~/.n8n/

# 백업 (워크플로우, 크레덴셜, 실행 이력 포함)
cp -r ~/.n8n ~/n8n-backup-$(date +%Y%m%d)

# 복원
cp -r ~/n8n-backup-YYYYMMDD ~/.n8n</code></pre>
<hr>
<h2 id="추가-리소스">추가 리소스</h2>
<h3 id="공식-문서">공식 문서</h3>
<ul>
<li><a href="https://docs.n8n.io/">n8n 공식 문서</a></li>
<li><a href="https://github.com/n8n-io/n8n">n8n GitHub Repository</a></li>
<li><a href="https://community.n8n.io/">n8n Community Forum</a></li>
</ul>
<h3 id="개발-가이드">개발 가이드</h3>
<ul>
<li><a href="https://docs.n8n.io/integrations/creating-nodes/">n8n 커스텀 노드 개발</a></li>
<li><a href="https://docs.n8n.io/api/">n8n API 문서</a></li>
<li><a href="https://n8n.io/workflows">n8n 워크플로우 예제</a></li>
</ul>
<h3 id="이-프로젝트">이 프로젝트</h3>
<ul>
<li><strong>Repository</strong>: <a href="https://github.com/ai-exploration-25/n8n_new_project">https://github.com/ai-exploration-25/n8n_new_project</a></li>
<li><strong>브랜딩</strong>: Agent Builder</li>
<li><strong>기반 버전</strong>: n8n v2.2.0</li>
</ul>
<hr>
<h2 id="빠른-참조-명령어-모음">빠른 참조 명령어 모음</h2>
<pre><code class="language-bash"># === 초기 설정 ===
git clone https://github.com/ai-exploration-25/n8n_new_project.git
cd n8n_new_project/n8n
npx pnpm@10.22.0 install
npx pnpm@10.22.0 build

# === 개발 ===
npx pnpm@10.22.0 dev           # 프론트엔드 개발 서버
npx pnpm@10.22.0 start         # 백엔드 서버

# === 테스트 ===
npx pnpm@10.22.0 test          # 전체 테스트
npx pnpm@10.22.0 lint          # 린팅
npx pnpm@10.22.0 typecheck     # 타입 체크

# === 정리 ===
npx pnpm@10.22.0 clean         # 빌드 파일 정리
rm -rf node_modules            # 의존성 정리

# === 포트 확인 ===
lsof -i:5678                   # 백엔드 포트
lsof -i:8080                   # 프론트엔드 포트</code></pre>
<hr>
<p><strong>생성일</strong>: 2026-01-10
<strong>마지막 업데이트</strong>: 2026-01-10
<strong>문서 버전</strong>: 2.0
<strong>대상 독자</strong>: 신규 개발자, DevOps 엔지니어
<strong>프로젝트</strong>: Agent Builder (n8n v2.2.0 기반)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AGI로 가는 5단계]]></title>
            <link>https://velog.io/@exploration25-ai/AGI%EB%A1%9C-%EA%B0%80%EB%8A%94-5%EB%8B%A8%EA%B3%84</link>
            <guid>https://velog.io/@exploration25-ai/AGI%EB%A1%9C-%EA%B0%80%EB%8A%94-5%EB%8B%A8%EA%B3%84</guid>
            <pubDate>Fri, 21 Nov 2025 04:41:08 GMT</pubDate>
            <description><![CDATA[<p>AGI(Artificial General Intelligence(범용 인공 지능) 으로 가기 위한 5단계 중 현재(2025년) 3단계에 해당 합니다.</p>
<p>[AGI의 5단계]</p>
<p>1단계 대화형 AI - 챗봇 AI와 대화</p>
<p>2단계 추론 AI - 인간 수준의 문제 해결</p>
<p>3단계 자율 AI - 독립적으로 작업을 수행하는 AI</p>
<p>4단계 혁신 AI - 새로운 방법을 개발하고, 기존 방법을 개선할 수 있는 AI</p>
<p>5단계 조직 AI - 전체 조직의 작업을 수행할 수 있는 AI</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[llm api 사용]]></title>
            <link>https://velog.io/@exploration25-ai/llm-api-%EC%82%AC%EC%9A%A9</link>
            <guid>https://velog.io/@exploration25-ai/llm-api-%EC%82%AC%EC%9A%A9</guid>
            <pubDate>Fri, 07 Nov 2025 07:33:05 GMT</pubDate>
            <description><![CDATA[<p>ChatGPT - Open AI : <a href="https://goldenrabbit.co.kr/2024/10/31/chatgpt-%EC%95%B1%EC%8A%A4-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C-%EC%B1%97gpt-api-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/">https://goldenrabbit.co.kr/2024/10/31/chatgpt-%EC%95%B1%EC%8A%A4-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C-%EC%B1%97gpt-api-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/</a></p>
<p>Claude API : <a href="https://www.developerfastlane.com/blog/how-to-use-claude-api">https://www.developerfastlane.com/blog/how-to-use-claude-api</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OpenCode 설치]]></title>
            <link>https://velog.io/@exploration25-ai/OpenCode-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@exploration25-ai/OpenCode-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Thu, 02 Oct 2025 03:57:15 GMT</pubDate>
            <description><![CDATA[<p>OpenCode는 터미널 기반 AI 코딩 에이전트로, 다양한 패키지 관리자와 OS에서 설치가 가능합니다. </p>
<h3 id="설치-명령어">설치 명령어</h3>
<h4 id="1-스크립트-설치-yolo-방식">1. 스크립트 설치 (YOLO 방식)</h4>
<p>터미널에서 아래 명령어 입력</p>
<pre><code>curl -fsSL https://opencode.ai/install | bash</code></pre><p>가장 간단하며, macOS와 Linux 등에서 빠르게 사용 가능.</p>
<h4 id="2-npm-nodejs-패키지">2. npm (Node.js 패키지)</h4>
<pre><code>npm install -g opencode-ai@latest</code></pre><p>npm이 설치된 환경에서 실행.</p>
<h4 id="3-기타-패키지-관리자">3. 기타 패키지 관리자</h4>
<ul>
<li>Bun: <code>bun install -g opencode-ai</code></li>
<li>pnpm: <code>pnpm install -g opencode-ai</code></li>
<li>Yarn: <code>yarn global add opencode-ai</code></li>
<li>Homebrew (macOS/Linux): <code>brew install sst/tap/opencode</code></li>
<li>Arch Linux: <code>paru -S opencode-bin</code>
선호하는 패키지 관리자를 활용.</li>
</ul>
<h4 id="4-windows-수동-설치">4. Windows 수동 설치</h4>
<ul>
<li>GitHub releases 페이지에서 최신 <code>opencode.exe</code> 다운로드 후 실행</li>
<li>경로: 예시 <code>C:\opencode\opencode.exe</code>.</li>
</ul>
<h3 id="설치-후-인증-및-실행">설치 후 인증 및 실행</h3>
<ol>
<li>OpenCode 설치 후 터미널에 <code>opencode</code> 명령어 입력하여 실행.</li>
<li>최초 실행 시 AI Provider 인증 필요:  <pre><code>opencode auth login</code></pre>후 선택 가능한 LLM Provider(예: GPT, Claude 등) 리스트에서 연결.</li>
<li>사용하고 싶은 프로젝트 폴더에서:  <pre><code>opencode .</code></pre>혹은  <pre><code>&lt;path-to-opencode&gt;/opencode.exe .</code></pre></li>
</ol>
<p>설치 및 실행 과정은 매우 직관적이며, 공식 사이트 문서에서 최신 방법을 확인할 수 있습니다.</p>
<h3 id="vscode-설치">vscode 설치</h3>
<p><img src="https://velog.velcdn.com/images/exploration25-ai/post/57593239-52de-4b7e-b147-c0a8731bb853/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[역할 기반 개발 ( BMAD, Super Claude )]]></title>
            <link>https://velog.io/@exploration25-ai/%EC%97%AD%ED%95%A0-%EA%B8%B0%EB%B0%98-%EA%B0%9C%EB%B0%9C-BMAD-Super-Claude</link>
            <guid>https://velog.io/@exploration25-ai/%EC%97%AD%ED%95%A0-%EA%B8%B0%EB%B0%98-%EA%B0%9C%EB%B0%9C-BMAD-Super-Claude</guid>
            <pubDate>Sat, 20 Sep 2025 02:58:53 GMT</pubDate>
            <description><![CDATA[<p>역할 기반 개발 방법론인 BMAD (Breakthrough Method for Agile AI-driven Development)와 SuperClaude는 모두 AI 에이전트를 역할에 따라 분담하여 체계적이고 효율적으로 개발을 지원한다는 공통점이 있지만, 접근 방식과 활용 구조에서 차이가 있다.</p>
<p>BMAD 개요 및 특징</p>
<p>BMAD는 AI 중심의 애자일 개발 방식으로, 역할별 AI 에이전트가 기획, 설계, 개발, 테스트 전 과정을 분업 협업합니다.</p>
<p>주요 역할로는 분석가, 프로젝트 매니저, 아키텍트, PO, 스크럼 마스터, 개발자, QA 에이전트 등이 있으며, 단계별로 일관된 컨텍스트를 유지하며 PRD 및 아키텍처 문서부터 개발 스토리 생성, 구현, 테스트를 체계화합니다.</p>
<p>BMAD는 특히 대규모 또는 복잡한 프로젝트에 적합하며, AI를 단순 도구가 아닌 협업 파트너로 활용하는 데 초점이 있습니다.</p>
<p>연관 자료</p>
<p><a href="https://discuss.pytorch.kr/t/bmad-method-ai-ai/7481">https://discuss.pytorch.kr/t/bmad-method-ai-ai/7481</a></p>
<p><a href="https://github.com/bmad-code-org/BMAD-METHOD">https://github.com/bmad-code-org/BMAD-METHOD</a></p>
<p>SuperClaude 개요 및 특징</p>
<p>SuperClaude는 Anthropic의 Claude 언어 모델을 보완하는 가벼운 프레임워크로, 개발 지원을 위해 역할 기반 페르소나(persona)를 도입합니다.</p>
<p>각 페르소나는 고유한 사고방식, 커뮤니케이션 스타일, 도구 선호도 등을 포함해 전문가 팀처럼 Claude를 기능하게 하며, 명령어 중심 워크플로우와 컨텍스트 유지 기능을 강조합니다.</p>
<p>SuperClaude는 개발 중 발생하는 다양한 기술 도메인을 다루는 동시에, 장기 기억 지원과 증거 기반 판단을 통해 Claude의 한계를 보완하고, 코드 보조부터 개발 전반의 효율성 향상을 목표로 합니다.</p>
<p>연관 자료</p>
<p><a href="https://superclaude.org/">https://superclaude.org/</a> </p>
<p><a href="https://github.com/SuperClaude-Org/SuperClaude_Framework">https://github.com/SuperClaude-Org/SuperClaude_Framework</a></p>
<p><a href="https://goddaehee.tistory.com/387">https://goddaehee.tistory.com/387</a> </p>
<p>비교 및 차이점</p>
<p>항목</p>
<p>BMAD</p>
<p>SuperClaude</p>
<p>목적</p>
<p>AI 에이전트를 역할별로 나누어 애자일 개발 전과정 자동화 및 협업 지원</p>
<p>Claude 언어 모델의 한계를 보완, 다양한 페르소나로 전문화된 개발 지원</p>
<p>역할 체계</p>
<p>명확한 역할 구분(분석가, PM, 개발자, QA 등)</p>
<p>페르소나 기반 역할(인지 원형)로 동적 전환 및 다중 역할 가능</p>
<p>핵심 기술</p>
<p>Context-Engineered Development, Agentic Planning</p>
<p>페르소나, 명령어 중심 워크플로우, 장기 기억, MCP 통합</p>
<p>활용 분야</p>
<p>복잡한 소프트웨어 및 프로젝트 개발</p>
<p>Claude 코드 기반 개발 일반, 코드 보조 및 전문가 팀 기능 구현</p>
<p>컨텍스트 관리</p>
<p>기획부터 개발, 테스트까지 동일 컨텍스트 유지</p>
<p>페르소나마다 개별 컨텍스트 창 유지, 명확한 역할별 지식과 행동 양식 적용</p>
<p>주요 장점</p>
<p>개발 전 과정 흐름과 문서화 일관성, 대규모 협업 최적화</p>
<p>다양한 역할 전환 통한 유연성, 고도화된 판단력 및 장기 메모리로 효율성 극대화</p>
<p>페르소나 목록</p>
<p>BMAD 페르소나 목록</p>
<p>분석가 (Analyst)</p>
<p>프로젝트 매니저 (Project Manager)</p>
<p>아키텍트 (Architect)</p>
<p>PO (Product Owner)</p>
<p>스크럼 마스터 (Scrum Master)</p>
<p>개발자 (Developer)</p>
<p>QA 에이전트 (Quality Assurance Agent)</p>
<p>테스트 아키텍트 (Test Architect, QA 역할 고도화)[github: bmad-code-org/BMAD-METHOD]</p>
<p>SuperClaude 페르소나 목록</p>
<p>Architect (시스템 설계자)</p>
<p>Frontend Developer (프론트엔드 개발자)</p>
<p>Backend Developer (백엔드 개발자)</p>
<p>Security Specialist (보안 전문가)</p>
<p>Documentation Specialist (문서 전문가)</p>
<p>Tester / QA (테스트 및 품질 관리 담당)</p>
<p>Reviewer (코드 리뷰 담당)</p>
<p>DevOps (배포 및 운영 담당)</p>
<p>Release Manager (릴리스 관리 담당)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Claude Code 시작(설치)]]></title>
            <link>https://velog.io/@exploration25-ai/Claude-Code-%EC%8B%9C%EC%9E%91%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@exploration25-ai/Claude-Code-%EC%8B%9C%EC%9E%91%EC%84%A4%EC%B9%98</guid>
            <pubDate>Fri, 19 Sep 2025 05:52:09 GMT</pubDate>
            <description><![CDATA[<p>아래는 사용자 요청에 따라 Claude Code 관련 내용을 마크다운(MD) 형식으로 정리한 것입니다.</p>
<hr>
<h1 id="claude-code-개요">Claude Code 개요</h1>
<p>Claude Code는 터미널 환경에 최적화된 AI 기반 코딩 도우미로, 자연어 명령으로 다양한 개발 업무를 자동화하고 생산성을 높이는 혁신적인 도구입니다.</p>
<hr>
<h1 id="주요-특징">주요 특징</h1>
<ul>
<li><strong>터미널 환경 최적화</strong>: 별도 앱이나 브라우저 없이 터미널에서 직접 Claude와 대화하며 작업</li>
<li><strong>코드 분석 및 자동화</strong>: 코드베이스 전체 분석 후 코드 생성, 리팩토링, 디버깅, 테스트, Git 관리 등 자동화</li>
<li><strong>자연어 명령 지원</strong>: “이 함수 설명해줘”, “에러 수정해줘”, “모든 함수에 docstring 달아줘” 등 직관적 명령 가능</li>
</ul>
<hr>
<h1 id="주요-기능">주요 기능</h1>
<ul>
<li>프로젝트 구조 및 코드 설명, 전체 파일 동시 수정</li>
<li>자동 테스트 생성 및 린트 수행</li>
<li>Git 커밋, 병합, 코드 리뷰, 오류 수정 등의 작업 자연어 처리</li>
<li>대용량 프로젝트, 복잡한 코드도 대응 가능하며 코드 품질 검사 및 자동 개선 루틴 지원</li>
</ul>
<hr>
<h1 id="공식-사이트">공식 사이트</h1>
<ul>
<li><a href="https://www.anthropic.com/claude-code">https://www.anthropic.com/claude-code</a></li>
<li>최신 정보, 공식 문서, 릴리스 노트 확인 가능</li>
</ul>
<hr>
<h1 id="로컬-설치-방법">로컬 설치 방법</h1>
<h2 id="사전-준비">사전 준비</h2>
<ul>
<li>Node.js 18버전 이상 설치 필요</li>
<li>Node.js 설치 페이지: <a href="https://nodejs.org">https://nodejs.org</a></li>
</ul>
<h2 id="설치-명령어">설치 명령어</h2>
<pre><code class="language-bash">npm install -g @anthropic-ai/claude-code</code></pre>
<h2 id="선택-네이티브-설치">(선택) 네이티브 설치</h2>
<ul>
<li>맥/리눅스/WSL<pre><code class="language-bash">curl -fsSL https://claude.ai/install.sh | bash</code></pre>
</li>
<li>윈도우 Powershell<pre><code class="language-powershell">irm https://claude.ai/install.ps1 | iex</code></pre>
</li>
</ul>
<h2 id="설치-상태-확인">설치 상태 확인</h2>
<pre><code class="language-bash">claude doctor</code></pre>
<hr>
<h1 id="실행-및-첫-로그인">실행 및 첫 로그인</h1>
<ol>
<li><p>프로젝트 폴더로 이동 또는 새 프로젝트 생성</p>
<pre><code class="language-bash">mkdir ~/Projects/claude_code_test
cd ~/Projects/claude_code_test</code></pre>
</li>
<li><p>Claude Code 실행</p>
<pre><code class="language-bash">claude</code></pre>
</li>
<li><p>터미널 스타일 선택, 로그인 방법 선택<br>초기 실행 시 Anthropic Console 로그인(이메일/비밀번호) 진행</p>
</li>
<li><p>라이선스 선택</p>
</li>
</ol>
<ul>
<li>Claude Pro/Max/Team/Enterprise 구독 계정으로 로그인 가능</li>
<li>API 키 기반 과금도 가능</li>
</ul>
<ol start="5">
<li><p>프로젝트 환경 설정 및 권한 승인<br>폴더 접근권한 요청 시 ‘Yes, proceed’ 선택</p>
</li>
<li><p>터미널 최적 설정 적용 권장 (Option+Enter 줄바꿈, Visual Bell 등)</p>
</li>
<li><p>시작 팁</p>
</li>
</ol>
<ul>
<li><code>/init</code> 명령어로 CLAUDE.md 생성, 작업 지침 작성 추천</li>
<li><code>/terminal-setup</code> 명령어로 터미널 최적화 설정 가능</li>
</ul>
<hr>
<h1 id="유용한-명령어-및-팁">유용한 명령어 및 팁</h1>
<table>
<thead>
<tr>
<th>명령어 표시</th>
<th>기능</th>
</tr>
</thead>
<tbody><tr>
<td><code>refactor &lt;filepath&gt;</code></td>
<td>파일 리팩토링 시작</td>
</tr>
<tr>
<td><code>/init</code></td>
<td>프로젝트 초기 설정 및 문서 생성</td>
</tr>
<tr>
<td><code>!</code></td>
<td>bash 명령어 입력 모드</td>
</tr>
<tr>
<td><code>/</code></td>
<td>Claude 명령어</td>
</tr>
<tr>
<td><code>@</code></td>
<td>파일 경로 입력</td>
</tr>
<tr>
<td><code>#</code></td>
<td>작업 기억</td>
</tr>
<tr>
<td><code>option + enter</code></td>
<td>줄바꿈 입력</td>
</tr>
</tbody></table>
<hr>
<h1 id="참고-링크-및-추가-정보">참고 링크 및 추가 정보</h1>
<ul>
<li>카카오 개발자 가이드: <a href="https://revfactory.github.io/claude-code-mastering/#claude-code-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0">https://revfactory.github.io/claude-code-mastering/#claude-code-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0</a></li>
<li>IDE 통합 확장: <a href="https://docs.claude.com/ko/docs/claude-code/ide-integrations">https://docs.claude.com/ko/docs/claude-code/ide-integrations</a></li>
<li>공식 가이드/도움말: <a href="https://docs.anthropic.com/ko/docs/claude-code/overview">https://docs.anthropic.com/ko/docs/claude-code/overviewanthropic</a></li>
<li>설치 및 인증 안내: <a href="https://docs.anthropic.com/ko/docs/claude-code/setup">https://docs.anthropic.com/ko/docs/claude-code/setupanthropic</a></li>
<li>설치 및 사용법 블로그: <a href="https://www.0x00.kr/ai/claude/claude-code-install-and-simple-usage0x00+1">https://www.0x00.kr/ai/claude/claude-code-install-and-simple-usage0x00+1</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Claude Intellij에서 사용하기 - 환경설정]]></title>
            <link>https://velog.io/@exploration25-ai/Claude-Intellij%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@exploration25-ai/Claude-Intellij%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95</guid>
            <pubDate>Sat, 06 Sep 2025 11:17:34 GMT</pubDate>
            <description><![CDATA[<p>사전 준비물</p>
<ul>
<li>[Node.js] (<a href="https://nodejs.org/ko">https://nodejs.org/ko</a>)</li>
<li>Intellij (2024.2 버전이상)</li>
<li>[Claude Desktop App] (<a href="https://claude.ai/download">https://claude.ai/download</a>)</li>
</ul>
<hr>
<h2 id="claude-desktop-app-설정하기">Claude Desktop App 설정하기</h2>
<p>Claude Desktop App &gt; 설정 &gt; 개발자 &gt; 설정편집</p>
<p><img src="https://velog.velcdn.com/images/exploration25-ai/post/5120360b-0113-41c7-b613-042f3f2b150f/image.png" alt=""></p>
<hr>
<pre><code>// 설정정보 입력
{
    &quot;mcpServers&quot;: {
        &quot;jetbrains&quot;: {
        &quot;command&quot;: &quot;npx&quot;,
        &quot;args&quot;: [&quot;-y&quot;, &quot;@jetbrains/mcp-proxy&quot;]
        }
    }
}</code></pre><p><img src="https://velog.velcdn.com/images/exploration25-ai/post/02f5a00a-8d55-47d7-a943-228b2eb10aa6/image.png" alt=""></p>
<hr>
<p>Intellij 설정 성공 시 &gt; jetbrains &gt; running</p>
<p><img src="https://velog.velcdn.com/images/exploration25-ai/post/59ac76e3-d2d4-44fe-b343-b3aecda8027e/image.png" alt=""></p>
<hr>
<h2 id="intellij-설정하기">IntelliJ 설정하기</h2>
<p>IntelliJ &gt; Settings &gt; Plugins
<img src="https://velog.velcdn.com/images/exploration25-ai/post/37089658-f114-415a-a2a7-b13e456de031/image.png" alt=""></p>
<hr>
<p>MCP Server 설치
<img src="https://velog.velcdn.com/images/exploration25-ai/post/34b5bc07-7236-46fb-952d-3241e476f4aa/image.png" alt=""></p>
<hr>
<p>Settings &gt; Tools &gt; MCP Server &gt; Enable 체크
<img src="https://velog.velcdn.com/images/exploration25-ai/post/047070d5-a7a9-4cca-b865-21f639080ebc/image.png" alt=""></p>
<hr>
<p>Claude 연결상태 확인
<img src="https://velog.velcdn.com/images/exploration25-ai/post/62f37969-b6e3-4584-8dc1-3ddea511171c/image.png" alt=""></p>
<hr>
<p>바이블코딩 테스트
<img src="https://velog.velcdn.com/images/exploration25-ai/post/8aa839e8-544a-4571-b679-e29e974bed2d/image.png" alt=""></p>
<hr>
<p>결과
<img src="https://velog.velcdn.com/images/exploration25-ai/post/dd2a51b1-3421-41cf-80f2-c3c303dcd8a0/image.png" alt=""></p>
<p>이상으로 IntelliJ 에서 Claude 연결 후 바이블코딩 테스트하기를 마치겠습니다.</p>
<p>바이블코딩 연결 및 사용을 처음해봐서 부족한 부분이 많아서 댓글 달아주시면 좀 더 쉬운 방향으로 수정하겠습니다.</p>
<p>감사합니다.</p>
]]></description>
        </item>
    </channel>
</rss>