← 노드 한 장 전체#33 · Sentiment Analysis
Sentiment Analysis
리뷰를 긍정·중립·부정으로 바로 나누기
이 글은 이런 분께리뷰·댓글을 긍정·중립·부정으로 바로 나누고 싶은 분

1분 영상은 @workflow.hanjang 에 순서대로 공개돼요
리뷰 13개, 좋다는 거야 싫다는 거야? 하나하나 읽기엔 길어요.
Sentiment Analysis 노드는 글의 기분을 읽고 긍정·중립·부정 출구로 바로 나눠요.
먼저 결과부터
Sentiment Analysis는 글을 긍정·중립·부정 출구로 나눈다. CoD 리뷰 13개 → 긍정 5·중립 3·부정 5, 중립을 뺀 10개 중 8개가 Steam 추천 여부와 일치(AI 판단은 틀릴 수 있음).
우리가 실제로 돌린 기록 · 실행 #74093 · 2026-10-29
우리가 실제로 돌린 기록 · 실행 #74093 · 2026-10-29
- 설정은 두 칸: 읽을 글 + 출구(Positive, Neutral, Negative)
- Call of Duty: MW4 최근 Steam 리뷰 13개 → 긍정 5 · 중립 3 · 부정 5 (11.5초)
- 점수도 같이: strength(얼마나 강한지) · confidence(얼마나 확신하는지)
- 같은 리뷰의 Steam 추천 표시와 비교하면, 중립을 뺀 10개 중 8개가 일치


따라 하기
아래 설정값은 이 영상에 나온 워크플로우 JSON에서 그대로 가져왔어요. n8n 캔버스에서 +를 눌러 노드를 순서대로 추가하고 같은 값을 넣으면 돼요. 빨간 제목이 이번 편의 주인공 노드예요. 표 왼쪽은 n8n 편집기에 보이는 칸 이름, 오른쪽은 실제로 넣은 값이에요. 직접 입력하기 번거로우면 JSON을 받아 ⋯ → Import from File로 가져오세요.
Step 1. Manual Trigger 노드 추가이름: Run manually
설정 없이 그대로 추가해요.
Step 2. HTTP Request 노드 추가이름: Get recent reviews
| URL | https://store.steampowered.com/ajaxappreviews/4435490?json=1&l=english&language=english&num_per_page=20&filter=recent&purchase_type=all |
Step 3. Code 노드 추가이름: One review per item
| JavaScript | // 40자 이상 리뷰만, 욕설·가림(♥) 들어간 리뷰는 제외
const bad = /♥|shit|fuck|molest|bitch|damn/i;
const r = $input.first().json.reviews || [];
return r
.filter(x => x.review.trim().length >= 40 && !bad.test(x.review))
.map((x, i) => ({ json: {
no: i + 1,
steam_recommended: x.voted_up,
review: x.review.replace(/\s+/g, ' ').trim().slice(0, 400)
}})); |
Step 4. Sentiment Analysis 노드 추가이름: Sentiment Analysis
| Text to Analyze | {{ $json.review }} |
| Options › Sentiment Categories | Positive, Neutral, Negative |
| Options › Include Detailed Results | 켜짐 |
Step 5. OpenAI Chat Model 노드 추가이름: OpenAI Chat Model
| Model | gpt-4.1-mini |
| Options › Sampling Temperature | 0 |
Step 6. Edit Fields (Set) 노드 추가이름: Label: positive
| 필드 1 | no · number · {{ $json.no }} |
| 필드 2 | ai_sentiment · string · 긍정 |
| 필드 3 | steam_recommended · boolean · {{ $json.steam_recommended }} |
| 필드 4 | strength · number · {{ $json.sentimentAnalysis.strength }} |
| 필드 5 | confidence · number · {{ $json.sentimentAnalysis.confidence }} |
Step 7. Edit Fields (Set) 노드 추가이름: Label: neutral
| 필드 1 | no · number · {{ $json.no }} |
| 필드 2 | ai_sentiment · string · 중립 |
| 필드 3 | steam_recommended · boolean · {{ $json.steam_recommended }} |
| 필드 4 | strength · number · {{ $json.sentimentAnalysis.strength }} |
| 필드 5 | confidence · number · {{ $json.sentimentAnalysis.confidence }} |
Step 8. Edit Fields (Set) 노드 추가이름: Label: negative
| 필드 1 | no · number · {{ $json.no }} |
| 필드 2 | ai_sentiment · string · 부정 |
| 필드 3 | steam_recommended · boolean · {{ $json.steam_recommended }} |
| 필드 4 | strength · number · {{ $json.sentimentAnalysis.strength }} |
| 필드 5 | confidence · number · {{ $json.sentimentAnalysis.confidence }} |
가져와서 쓸 때 확인할 것
- OpenAI 자격 증명을 연결해 주세요.
- YOUR_… 표시를 내 값으로 바꾸고, 계정이 필요한 서비스 노드만 자격 증명을 연결하세요. 그런 칸이나 노드가 없는 예제는 추가 계정 없이 실행할 수 있어요.
노드의 모든 옵션은 n8n 공식 문서에서 볼 수 있어요.