“어? Claude 노드가 없네?”
n8n으로 자동화 워크플로우를 만들다가 Claude를 연결하려고 했습니다. 당연히 공식 노드가 있을 줄 알았는데, 아무리 찾아도 보이지 않더라고요. Community 노드를 뒤져봐도 버전 문제로 설치가 안 되거나, 설치해도 제대로 작동하지 않았습니다. 결국 HTTP Request 노드로 직접 API를 호출하기로 했는데, 이게 생각보다 삽질의 연속이었습니다. 422 에러, 400 에러를 번갈아가며 만나고 나서야 겨우 성공했죠.
왜 이런 문제가 생겼을까
n8n은 정말 다양한 서비스와 연동할 수 있는 자동화 도구입니다. Slack, Google Sheets, OpenAI 같은 인기 서비스들은 공식 노드로 클릭 몇 번이면 연결됩니다.
그런데 Anthropic의 Claude는 상황이 좀 다릅니다.
n8n 공식 노드 목록에 Claude가 아직 포함되어 있지 않습니다. Community에서 만든 비공식 노드가 있긴 하지만,
n8n 버전이 올라가면서 호환성 문제가 생기는 경우가 많습니다. 설치했는데 노드가 보이지 않거나, 실행하면 알 수 없는 에러가 뜨는 식이죠.
이럴 때 가장 확실한 방법은 HTTP Request 노드를 사용하는 겁니다. API 문서만 잘 따라가면 어떤 서비스든 연결할 수 있고,
n8n 버전이 올라가도 크게 영향을 받지 않습니다. 조금 손이 많이 가지만, 한번 세팅해두면 오히려 더 안정적으로 돌아갑니다.
원인 파악
HTTP Request로 Claude API를 호출하려면 몇 가지 필수 요소를 정확히 맞춰줘야 합니다. 저는 처음에 두 가지 실수를 했습니다.
첫 번째는 anthropic-version 헤더를 빠뜨린 것입니다. Anthropic API는 버전 관리를 위해 이 헤더를 필수로 요구합니다. 없으면 422 에러가 발생합니다.
422 에러는 “요청 형식은 맞는데 내용이 처리 불가능하다”는 뜻인데, 처음 보면 뭐가 문제인지 감이 안 잡히죠.
두 번째는 Body에 불필요한 필드를 넣은 것입니다. 다른 API에서 쓰던 습관대로 temperature나 system 같은 필드를 넣었더니 400 에러가 났습니다.
Anthropic API는 예상치 못한 필드가 있으면 거부합니다. 기본적으로 model, max_tokens, messages 이 세 개만 넣으면 됩니다.
해결 방법
전체 과정을 단계별로 정리해 보겠습니다.
1단계: API 키 발급받기
console.anthropic.com에 접속해서 계정을 만들고 API 키를 발급받습니다. API Keys 메뉴에서 새 키를 생성하면 됩니다.
이 키는 한 번만 보여주니까 바로 복사해서 안전한 곳에 저장해두세요.
2단계: n8n에서 HTTP Request 노드 추가
워크플로우에 HTTP Request 노드를 추가합니다. 기본 설정은 다음과 같습니다.
- Method: POST
- URL:
https://api.anthropic.com/v1/messages
3단계: Headers 설정
Headers 섹션에서 세 가지 헤더를 추가합니다. 이 중 하나라도 빠지면 에러가 납니다.
x-api-key: 발급받은 API 키anthropic-version:2023-06-01content-type:application/json
4단계: Body 설정
Body Type을 JSON으로 선택하고, 딱 세 개의 필드만 넣습니다. 여기서 욕심내서 다른 필드를 추가하면 에러가 나니까 주의하세요.
5단계: 응답 파싱
Claude의 응답은 content 배열 안에 들어옵니다. 다음 노드에서 {{ $json.content[0].text }}로 텍스트만 뽑아서 사용하면 됩니다.
핵심 코드 / 설정값
실제로 n8n에 입력해야 하는 값들을 정리했습니다.
Headers:
x-api-key: sk-ant-api03-xxxxx (발급받은 키)
anthropic-version: 2023-06-01
content-type: application/json
Body (JSON):
{
"model": "claude-opus-4-5",
"max_tokens": 1000,
"messages": [
{ "role": "user", "content": "여기에 프롬프트 입력" }
]
}
만약 이전 노드에서 넘어온 데이터를 프롬프트에 넣고 싶다면, n8n의 Expression 문법을 사용합니다.
{
"model": "claude-opus-4-5",
"max_tokens": 1000,
"messages": [
{ "role": "user", "content": "{{ $json.news }}" }
]
}
응답에서 텍스트 추출:
{{ $json.content[0].text }}
이렇게 확인했다
설정을 마치고 노드를 실행해봤습니다. 처음에는 422 에러가 떴는데, anthropic-version 헤더를 추가하니까 해결됐습니다.
그 다음에는 400 에러가 났는데, Body에서 temperature 필드를 제거하니까 정상 작동했습니다.
성공하면 응답 데이터에 content 배열이 보이고, 그 안에 Claude가 생성한 텍스트가 들어있습니다.
role은 assistant로 표시되고, type은 text입니다. 여기서 content[0].text만 뽑아서 다음 노드로 넘기면 됩니다.
테스트할 때 팁이 하나 있습니다. max_tokens을 100 정도로 낮게 설정하고 간단한 프롬프트로 먼저 테스트하세요.
API 비용도 아끼고, 응답도 빨리 옵니다. 제대로 작동하는 걸 확인한 다음에 실제 값으로 바꾸면 됩니다.
정리하면
n8n에서 Claude API를 사용하려면 HTTP Request 노드로 직접 호출하는 게 가장 확실합니다. 핵심은 세 가지입니다.
anthropic-version: 2023-06-01헤더를 반드시 포함할 것- Body에는
model,max_tokens,messages세 개만 넣을 것 - 응답은
$json.content[0].text로 파싱할 것
한번 세팅해두면 뉴스 요약, 이메일 작성, 데이터 분석 등 다양한 자동화 워크플로우에 Claude를 붙일 수 있습니다.
공식 노드가 없다고 포기하지 마세요. HTTP Request만 있으면 어떤 API든 연결할 수 있습니다.
자주 묻는 질문 (FAQ)
Q. 422 에러가 계속 나는데 어떻게 해야 하나요?
A. 대부분 anthropic-version 헤더가 빠졌을 때 발생합니다. Headers 섹션에서 anthropic-version: 2023-06-01이 제대로 들어갔는지 확인하세요.
오타가 있어도 같은 에러가 나니까 철자도 꼼꼼히 체크해보세요.
Q. 다른 Claude 모델도 사용할 수 있나요?
A. 네, Body의 model 필드 값만 바꾸면 됩니다. claude-sonnet-4-20250514이나 claude-3-5-haiku-20241022 등 Anthropic에서 제공하는 모델명을 넣으면 됩니다.
모델별로 가격과 성능이 다르니까 용도에 맞게 선택하세요.
Q. system 프롬프트는 어떻게 넣나요?
A. system 필드를 Body에 추가하면 됩니다. 단, 최상위 레벨에 넣어야 합니다.
{"model": "...", "max_tokens": 1000, "system": "당신은 뉴스 요약 전문가입니다.", "messages": [...]} 이런 식으로요.
기본 3개 필드 외에 system은 허용되는 옵션 필드입니다.