Update n8n directory with extracted markdown and README.md

This commit is contained in:
2026-02-25 09:53:34 +09:00
parent 9a1a45d504
commit 7336bce4ca
8 changed files with 599 additions and 0 deletions

30
n8n/README.md Normal file
View File

@@ -0,0 +1,30 @@
# n8n 자동화 프로젝트
이 폴더는 n8n을 활용한 자동화 워크플로우 구축 및 관리 가이드를 포함하고 있습니다.
## 주요 내용
### 1. n8n 활용 문서 (도커 설치 방법)
- **도커(Docker) 기반 설치**: WSL 2 환경에서의 n8n 설치 및 실행 방법 가이드.
- **Docker Compose 설정**: docker-compose.yml을 활용한 컨테이너 관리 및 데이터 영속성 설정.
- **워크플로우 기초**: 트리거(Trigger) 노드 활용 및 기초 노드 설정 방법.
### 2. 뉴스 기사 수집 자동화 Sample
- **Naver API 연동**: 뉴스 검색 API를 통한 기사 데이터 수집.
- **데이터 변환**: JSON 데이터를 n8n 내부 데이터 구조로 변환 및 분할(Split).
- **AI 분석**: Jina AI 및 Gemini AI를 활용한 기사 요약 및 핵심 키워드 추출.
- **결과 저장**: 분석된 데이터를 Google Sheets로 자동 업로드.
## 포함된 파일
-
8n 활용 문서(도커 설치 방법) .md: 상세 설치 및 기본 사용법 가이드.
-
8n을 활용한 뉴스 기사 수집 Sample.md: 뉴스 수집 자동화 워크플로우 상세 설명.
-
8n을 활용한 뉴스 기사 수집 Sample .json: n8n 워크플로우 가져오기용 샘플 파일.
- docker-compose.yml: n8n 실행을 위한 도커 설정 파일.
## 시작하기
1. 도커 데스크탑을 설치하고 실행합니다.
2. docker-compose.yml이 있는 디렉토리에서 docker compose up -d 명령어를 실행합니다.
3. http://localhost:5678 접속 후 가이드에 따라 워크플로우를 구성하거나 샘플 JSON을 가져옵니다.

17
n8n/docker-compose.yml Normal file
View File

@@ -0,0 +1,17 @@
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Seoul
- TZ=Asia/Seoul
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:

View File

@@ -0,0 +1,5 @@
{
"title": "n8n 활용 문서(도커 설치 방법) ",
"content": "n8n 설정\n- 로컬(docker*)활용 시 무료, 하지만 설치 필요\n(*) cloud는 비용 20~50$ 지불하면 손쉽게 사용 / 프로그램과 실행에 필요한 것들을 한 묶음으로 만들\n어 두고, 그 묶음을 내 컴퓨터에서 바로 실행하게 해주는 도구\n1. 설치 방법\n(1) 다운로드 및 설치 https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe\n- ☑ \"Use WSL 2 instead of Hyper-V\" 반드시 체크 → 설치 완료 후 PC 재시작\n(2) 업데이트 (5분 소요)\n작업 창에서 cmd 입력 → “명령 프롬프트“ 아이콘위에서 마우스 우클릭 → 관리자 권한으로 실행 →\n아래사항 입력 후 엔터\nwsl --update --web-download\n→ 완료되면 아래사항 입력 후 엔터\nwsl --set-default-version 2\n→ 컴퓨터 재부팅 & cmd(관리자)에서 아래 사항 입력\ndocker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n\n→ 완료 시, 아래 링크를 크롬에 입력후 회원 가입 http://localhost:5678\n→ 이메일에서 n8n 관련 activate license key 클릭 후 바로위 코드 입력하면 완료\n(active 버튼을 누르면 완료되기도 함 / 완료 시, get start라는 가운데 박스창이 뜸)\n2. 설정 방법 (추후 도커를 열면 바로 n8n이 열리도록 하는 것)\n(1) d 드라이브에 폴더 하나 만들기 폴더명 : n8n\n(2) 폴더 안에 아래 내용을 넣은 txt 파일 만들기\nversion: '3.8'\nservices:\nn8n:\nimage: docker.n8n.io/n8nio/n8n\ncontainer_name: n8n\nrestart: unless-stopped\nports:\n- \"5678:5678\"\nenvironment:\n- GENERIC_TIMEZONE=Asia/Seoul\n- TZ=Asia/Seoul\nvolumes:\n- n8n_data:/home/node/.n8n\nvolumes:\nn8n_data:\n(3) 파일명 변경\ndocker-compose.yml\n(4) 터미널(관리자)에서 폴더로 이동하여 n8n 실행\nd: → cd n8n\ndocker rm -f n8n → docker compose up -d\n\n2. 실행 (예제) - ”고객 정보 기반 새해 인사 초안 만들기“\n(1) start with a template : 미리 만들어진 예제로 시작\nstart from scratch : 빈캔버스에서 직접 만들어 보기\n(2) 상단바 : 제목\n(3) 워크플로우는 트리거(시작점)으로 시작 (언제 시작할건데??를 설정)\n1) trigger 설정\n트리거 의미 예시\n1 Trigger manually 내가 버튼 클릭할 때 테스트할 때 주로 사용\n2 On a schedule 정해진 시간에 자동 매일 오전 9시에 실행\n3 On webhook call 외부에서 신호 받을 때 다른 앱이 n8n 호출\n4 On form submission 폼 제출할 때 설문 응답 받을 때\n5 On app event 앱에서 뭔가 일어날 때 이메일 도착, 슬랙 메시지 등\n6 On chat message 채팅 메시지 받을 때 AI 챗봇 만들 때\n2) 노드 만들기 (+ 버튼을 누르면 다음 할 일을 수행함)\n카테고리 의미 비유\n1 AI AI 연동 ChatGPT한테 물어보기\n2 Action in an app 앱 조작 구글 시트에 쓰기, 이메일 보내기\n3 Data transformation 데이터 가공 엑셀 함수 같은 것\n4 Flow 흐름 제어 IF 조건, 반복\n5 Core 기본 기능 HTTP 요청, 코드 실행\n(*) search nodes → set 입력 → edit fields(set) 클릭\n- input : 이전 노드에서넘어온 데이터 / scheme : 구조 보기, table : 엑셀처럼 보기, json : 코드보기\n- parameters : 이 노드가 무엇을 하는지 정리\nmode - manual mapping : 직접 타이핑, json : 코드 입력\nfields to set 내가 만들 데이터\ninclude other input fields 이전 데이터 살릴지 말지에 대한 옵션\n- name : 이름, value : 홍길동 / name : 성별, value : 남성 / name : 나이, value : 19\n가운데 선택\n타입 의미 예시\n1 String 텍스트 \"홍길동\", \"기획팀\"\n2 Number 숫자 100, 3.14\n3 Boolean 참/거짓 true / false\n4 Array 목록 [\"사과\", \"바나나\", \"포도\"]\n5 Object 묶음 데이터 {\"이름\": \"홍길동\", \"나이\": 30}\n6 Binary 파일 이미지, PDF 등\n- Execute step 클릭하면 우측에 나옴.\n이름 성별 나이\n홍길동 남성 19\n\n3) AI 노드 연결하기\n(*) + 버튼 클릭 → AI 클릭\n(*) chat gpt → message a model 클릭\nparameter\n(*) credential to connect with → creat new credential → API 입력\nsk-proj-oOMOwEAdcDKSMoB2Xwc-id0MAo21qrDYJuuNNZAqvBVXM1W5HohBIE0T3c2DUB-Z-kh\nF0wSzAJT3BlbkFJsPMos6ed4zL-L_6V4b-x1trbIIY9T5yDoOE4C9NXaeOqqx_t0ytD-Vd8KzCFEzee3gP\nIL4jaUA\n(*) Modal 설정\n헷 3.5 turbo 0125\n(*) Prmopt 입력\n고객 정보야. {{ $json['이름'] }}{{ $json['성별'] }}{{ $json['나이'] }}에게 정확하게 맞는 맞는 새해인사를 성별, 나이를 맞추어 이\n름을 넣어 만들어줘\n(*) excute step 실행 output 도출\n4) 구글 시트 연결하기\n(*) + 버튼 클릭 → google sheet 검색 → append row in sheet 클릭\n(*)\n\n",
"source_hwp": "D:\\ad-hoc\\n8n\\n8n 활용 문서(도커 설치 방법) .hwp"
}

View File

@@ -0,0 +1,101 @@
# n8n 활용 문서(도커 설치 방법)
n8n 설정
- 로컬(docker*)활용 시 무료, 하지만 설치 필요
(*) cloud는 비용 20~50$ 지불하면 손쉽게 사용 / 프로그램과 실행에 필요한 것들을 한 묶음으로 만들
어 두고, 그 묶음을 내 컴퓨터에서 바로 실행하게 해주는 도구
1. 설치 방법
(1) 다운로드 및 설치 https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
- ☑ "Use WSL 2 instead of Hyper-V" 반드시 체크 → 설치 완료 후 PC 재시작
(2) 업데이트 (5분 소요)
작업 창에서 cmd 입력 → “명령 프롬프트“ 아이콘위에서 마우스 우클릭 → 관리자 권한으로 실행 →
아래사항 입력 후 엔터
wsl --update --web-download
→ 완료되면 아래사항 입력 후 엔터
wsl --set-default-version 2
→ 컴퓨터 재부팅 & cmd(관리자)에서 아래 사항 입력
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
→ 완료 시, 아래 링크를 크롬에 입력후 회원 가입 http://localhost:5678
→ 이메일에서 n8n 관련 activate license key 클릭 후 바로위 코드 입력하면 완료
(active 버튼을 누르면 완료되기도 함 / 완료 시, get start라는 가운데 박스창이 뜸)
2. 설정 방법 (추후 도커를 열면 바로 n8n이 열리도록 하는 것)
(1) d 드라이브에 폴더 하나 만들기 폴더명 : n8n
(2) 폴더 안에 아래 내용을 넣은 txt 파일 만들기
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Seoul
- TZ=Asia/Seoul
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
(3) 파일명 변경
docker-compose.yml
(4) 터미널(관리자)에서 폴더로 이동하여 n8n 실행
d: → cd n8n
docker rm -f n8n → docker compose up -d
2. 실행 (예제) - ”고객 정보 기반 새해 인사 초안 만들기“
(1) start with a template : 미리 만들어진 예제로 시작
start from scratch : 빈캔버스에서 직접 만들어 보기
(2) 상단바 : 제목
(3) 워크플로우는 트리거(시작점)으로 시작 (언제 시작할건데??를 설정)
1) trigger 설정
트리거 의미 예시
1 Trigger manually 내가 버튼 클릭할 때 테스트할 때 주로 사용
2 On a schedule 정해진 시간에 자동 매일 오전 9시에 실행
3 On webhook call 외부에서 신호 받을 때 다른 앱이 n8n 호출
4 On form submission 폼 제출할 때 설문 응답 받을 때
5 On app event 앱에서 뭔가 일어날 때 이메일 도착, 슬랙 메시지 등
6 On chat message 채팅 메시지 받을 때 AI 챗봇 만들 때
2) 노드 만들기 (+ 버튼을 누르면 다음 할 일을 수행함)
카테고리 의미 비유
1 AI AI 연동 ChatGPT한테 물어보기
2 Action in an app 앱 조작 구글 시트에 쓰기, 이메일 보내기
3 Data transformation 데이터 가공 엑셀 함수 같은 것
4 Flow 흐름 제어 IF 조건, 반복
5 Core 기본 기능 HTTP 요청, 코드 실행
(*) search nodes → set 입력 → edit fields(set) 클릭
- input : 이전 노드에서넘어온 데이터 / scheme : 구조 보기, table : 엑셀처럼 보기, json : 코드보기
- parameters : 이 노드가 무엇을 하는지 정리
mode - manual mapping : 직접 타이핑, json : 코드 입력
fields to set 내가 만들 데이터
include other input fields 이전 데이터 살릴지 말지에 대한 옵션
- name : 이름, value : 홍길동 / name : 성별, value : 남성 / name : 나이, value : 19
가운데 선택
타입 의미 예시
1 String 텍스트 "홍길동", "기획팀"
2 Number 숫자 100, 3.14
3 Boolean 참/거짓 true / false
4 Array 목록 ["사과", "바나나", "포도"]
5 Object 묶음 데이터 {"이름": "홍길동", "나이": 30}
6 Binary 파일 이미지, PDF 등
- Execute step 클릭하면 우측에 나옴.
이름 성별 나이
홍길동 남성 19
3) AI 노드 연결하기
(*) + 버튼 클릭 → AI 클릭
(*) chat gpt → message a model 클릭
parameter
(*) credential to connect with → creat new credential → API 입력
sk-proj-oOMOwEAdcDKSMoB2Xwc-id0MAo21qrDYJuuNNZAqvBVXM1W5HohBIE0T3c2DUB-Z-kh
F0wSzAJT3BlbkFJsPMos6ed4zL-L_6V4b-x1trbIIY9T5yDoOE4C9NXaeOqqx_t0ytD-Vd8KzCFEzee3gP
IL4jaUA
(*) Modal 설정
헷 3.5 turbo 0125
(*) Prmopt 입력
고객 정보야. {{ $json['이름'] }}{{ $json['성별'] }}{{ $json['나이'] }}에게 정확하게 맞는 맞는 새해인사를 성별, 나이를 맞추어 이
름을 넣어 만들어줘
(*) excute step 실행 output 도출
4) 구글 시트 연결하기
(*) + 버튼 클릭 → google sheet 검색 → append row in sheet 클릭
(*)

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,441 @@
# n8n을 활용한 뉴스 기사 수집 Sample
n8n
n8n을 활용한 뉴스 기사 수집 Sample
개요
- 키워드를 입력하면 인터넷에서 키워드 연관 기사를 수집·분석하여 인사이트 정보를 정리
(키워드 입력 → 네이버 키워드 검색 및 본문 정리 → AI 인사이트 생성)
- 결과물 : 네이버 뉴스 기사 수집 내용(naver api 시트), 기사 분석 내용(sheet 2)
세부 파이프라인
구분 노드명 수행 내용 비고
웹 브라우저 상태에서 입력 가능한 폼.
Step 1. 키워드 입력
키워드와 수집 기간을 입력하도록 페이지 구성. 참고 1
키워드 입력 (Trigger)
(키워드와 기간으로 뉴스 수집)
Naver API로 제공된 기사 중, 입력한 키워드와 기간 내의
기사 수집 참고 2
기사를 수집 (※ 샘플로 12개만을 수집함)
수집된 기사 정보를 처리할 수 있도록 분리
수집 정보 정리 참고 3
(수집된 12개 기사 묶음을 1개씩 처리하도록 분리)
Step 2.
검색 내용 각 기사별 링크로 접속하여 본문을 수집
기사 본문 수집 참고 4
수집&정리 (본문 수집을 위하여 Jina AI 활용)
본문 정리 본문 중 광고, 메뉴, 댓글 등 불필요한 내용 제거 참고 5
구글 시트에 수집된 기사의 내용을 한줄씩 정리
기사 저장하기 참고 6
(번호, 제목, 발행일, url, 요약, 본문 전체를 저장)
(AI 분석을 위한)
12개의 본문을 AI가 분석할 수 있도록 하나로 묶음 참고 7
전처리
(AI) 본문 분석 Gemini AI가 본문 내용 중 핵심 인사이트 3가지를 정리 참고 8
Step 3.
AI 인사이트 생성 AI가 응답한 결과를 구글 시트에 정리하기 위하여 정리
인사이트 정리 참고 9
(번호, 인사이트 제목, 내용, 관련 링크)
저장하기 인사이트 3개를 구글시트 Sheet 2번에 저장 참고 10
※ (사전) 구글 계정 연결 필요 (참고 6-1)
기사 수집 대상 및 방법의 보완
향후 계획 ⇨ 현재 naver api만으로 기사 수집
⇨ 현재 jina ai를 활용하여 본문 수집(20건 제한)
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 1 -
[참고 1] Step 1. 키워드 입력
사용자에게 키워드를 받기 위한 화면을 시작점으로 설정.
사용자가 컴퓨터에 ‘무엇을 조사해줘’라고 키워드를 입력하는 단계로, 사용자가 키워드와 기간을 입
력하여야만 프로세스가 시작되도록 설정.
- 세부 단계
1) “Add first Step...”의 +버튼 클릭하여, (우측) On form submission 클릭
* 참고 : Trigger manually(내가 버튼 클릭 시), On a schedule(정해진 시간), On webhook call(외부 신호 받을 때), On
form submission(폼 제출 시), On app event(앱에서 event가 일어날 때), On chat message(채팅 메시지 받을 때)
2) Parameters에서 수취한 웹 페이지를 구성
- 페이지 설명
(1) Authenitication : 폼에 접근 시 로그인 등 인증이 필요한지에 대한 것
· None : 인증 없이 누구나 링크만 있으면 접근 가능
(2) From Title : 웹 폼 화면 최상단에 표시되는 제목
· 뉴스 수집 키워드 입력
(3) From Description : 폼 제목 아래 표시되는 안내 설명
· 수집할 키워드와 기간을 입력하세요.
- 키워드 입력(Form Elements) (*) Add attibutes를 통해 추가
(1) Label : 폼 화면에 표시되는 항목의 이름
· 키워드 : 사용자에게 받을 키워드
(2) Element Type : 항목 입력 방식 (drop down, 텍스트 입력 등)
· Text input : 입력 방식의 형태
(2-1) Field Option : (drop down 선택 시,) 각각의 옵션 (선택1, 선택2 등)
3) Execute step 클릭하여 Output 확인 (예시)
"키워드": "한맥기술",
"수집 기간": "당일",
"submittedAt": "2026-02-23T10:06:48.754+09:00",
"formMode": "test"
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 2 -
[참고 2] Step 2. 검색 내용 수집&정리 기사 수집
Naver에서 제공하는 기사 중(Naver API) 사용자가 입력한 키워드를 기준으로 기사를 수집함.
* Naver API : 네이버가 외부 개발자에게 제공하는 검색 기능. 키워드를 입력하면 네이버에서 해당 키워드와 관련된 검색 결과를
자동으로 돌려줌. 사람이 직접 네이버에서 검색하는 것과 동일한 결과를 프로그램이 자동으로 받아올 수 있게 해주는 서비스.
- 세부 단계
1) “HTTP Request” 노드 추가
* HTTP Request : 외부 인터넷 서비스에 데이터를 요청하고 결과를 받아오는 노드. 웹 브라우저가 특정 주소로 접속해서
정보를 가져오는 것과 동일한 동작.→ 이번에는 네이버 검색 서비스(Naver API)에 접속하여 검색 결과를 가져옴
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Method : 네이버에 어떤 방식으로 요청을 보낼지 설정
· Get : 데이터를 읽어서 가져오라는 방식
(2) URL : 요청 보낼 네이버 서버 주소 (API 주소)
· https://openapi.naver.com/v1/search/news.json
(3) Authentication : 인증 방식
· None
- 검색 조건 설정 : “Send Query Parameters”를 On으로 체크
(1) Specify Query Parameters : 검색 조건을 어떤 방식으로 입력할지 선택
· Using Fields Below (아래의 사항을 중심으로 하나씩 입력)
(2) Query Parameters : 검색을 Name(항목)과 Value(값)로 입력
· Name / Value
① query / (좌측의 “키워드”를 드레그&드랍) : 네이버에 검색할 키워드
② display / 12 : 가져올 검색 결과 수 (최대 100개까지 가능)
③ sort / date : 결과 정렬 방식 (날짜 최신순)
- 네이버 API를 쓰기위한 사용자 정보 입력 : “Send Headers”를 On으로 체크
(1) Specify Headers : 인증 정보 입력 방식
· Using Fields Below (아래의 사항을 중심으로 하나씩 입력)
(2) Headers : 실제 인증 정보를 Name(항목)과 Value(값)로 입력
· Name / Value
① X-naver-client-id : 회원 아이디
② X-naver-client-secret : 회원 비밀번호
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 3 -
3) Execute step 클릭하여 Output 확인 (예시)
"lastBuildDate": "Mon, 23 Feb 2026 10:32:35 +0900",
"total": 3265,
"start": 1,
"display": 12,
"items": [
{
"title": "2월 3주 엔지니어링 주간 입낙찰 동향",
"originallink": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"link": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"description": "이산&b&기술&/b&단 금액 : 22억984만원 사업명 : 함양군 노후상수관망 정비사업 기본 및 실시설계 발주
처... 삼안, &b&한맥&/b& 금액 : 29억1,115만원 사업명 : 노성·상월면 일원 하수관로 정비사업 기본 및 실시설계 발주처... ",
"pubDate": "Thu, 19 Feb 2026 10:20:00 +0900"
},
※ 기사 수집 방법 : RSS, Perplexity, (코드 활용)매체별 크롤링 등은 샘플로 정리
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 4 -
[참고 3] Step 2. 검색 내용 수집&정리 수집 정보 정리
수집된 기사는 하나의 묶음으로 묶여있기 때문에 데이터를 하나씩 분리하여 다음 단계로 넘기기 위
한 전처리 단계
- 세부 단계
1) “Split out” 노드 추가
* Split out : 한 묶음으로 묶여있는 데이터를 하나씩 분리하는 노드.→ 네이버 API가 돌려준 12개 기사 묶음을 1개씩 떼어
내어 다음 단계로 하나씩 넘겨줌
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Fields to split out : 묶음 데이터 중 어떤 항목을 분리할지 지정
· Items : 네이버 API 결과에서 기사 목록이 담긴 항목
(2) Include : 분리된 데이터 외에 다른 정보도 함께 넘길지 설정
· No other fields : 기사 내용만 남기고 나머지 정보는 제외
3) Execute step 클릭하여 Output 확인 (예시)
"lastBuildDate": "Mon, 23 Feb 2026 10:32:35 +0900",
"total": 3265,
"start": 1,
"display": 12,
"items": [
{
"title": "2월 3주 엔지니어링 주간 입낙찰 동향",
"originallink": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"link": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"description": "이산&b&기술&/b&단 금액 : 22억984만원 사업명 : 함양군 노후상수관망 정비사업 기본 및 실시설계 발주
처... 삼안, &b&한맥&/b& 금액 : 29억1,115만원 사업명 : 노성·상월면 일원 하수관로 정비사업 기본 및 실시설계 발주처... ",
"pubDate": "Thu, 19 Feb 2026 10:20:00 +0900"
},
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 5 -
[참고 4] Step 2. 검색 내용 수집&정리 기사 본문 수집
네이버 API에서 본문을 제공하지 않기에 수집한 링크로 직접 접속하여 본문을 전체 읽어오는 단계.
(대부분의 언론사가의 포맷 상이, 외부 접근을 막고 있어 Jina AI를 활용하여 본문을 수집.)
* Jina AI : 특정 웹페이지 주소(URL)를 전달하면 해당 페이지의 본문을 읽어서 텍스트로 변환해 주는 서비스. 구독이 필요
한 언론사 사이트도 본문을 읽어올 수 있음. (무료 계정 기준 시간당 20건 제한)
- 세부 단계
1) “HTTP Request” 노드 추가
* HTTP Request : 외부 인터넷 서비스에 데이터를 요청하고 결과를 받아오는 노드. 웹 브라우저가 특정 주소로 접속해서
정보를 가져오는 것과 동일한 동작.→ 이번에는 지나 AI서비스에 기사 링크를 전달하여 본문 전체를 가져오고자 함
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Method : Jina AI 서비스에 전달하는 방식
· Get : 데이터를 읽어서 가져오라는 방식
(2) URL : 요청 보낼 주소 (Jina 링크 뒤에 각각의 링크 추가)
· https://r.jina.ai/{{ $json.link }}
(3) Authentication : 인증 방식
· None
- Jina AI API를 쓰기 위한 사용자 정보 입력 : “Send Headers”를 On으로 체크
(1) Specify Headers : 인증 정보 입력 방식
· Using Fields Below (아래의 사항을 중심으로 하나씩 입력)
(2) Headers : 실제 인증 정보를 Name(항목)과 Value(값)로 입력
· Name / Value
① Authorization / Bearer jina_a72bde1404d14c2a94fd0c8b357cf795yFATC69lNjusqnhy5ymUhnqjBMNh
* Jina AI에서 제공하는 API 키 등록(20건까지 무료)
3) Execute step 클릭하여 Output 확인 (예시)
"data": "Title: 2월 3주 엔지니어링 주간 입낙찰 동향\n\nURL Source: http://www.engdaily.com/news/articleView.html?idxno=21743\n\nPublished Time:
2026-02-19T10:18:38+09:00\n\nMarkdown Content:\n2월 3주 엔지니어링 주간 입낙찰 동향 엔지니어링데일리\n===============\n\n×\n*
[전체기사](http://www.engdaily.com/news/articleList.html?view_type=sm)\n*
[뉴스](http://www.engdaily.com/news/articleList.html?sc_section_code=S1N1&view_type=sm)\n *
[전체](http://www.engdaily.com/news/articleList.html?sc_section_code=S1N1&view_type=sm)\n *
[정책](http://www.engdaily.com/news/articleList.html?sc_sub_section_code=S2N1&view_type=sm)\n *
[업계](http://www.engdaily.com/news/articleList.html?sc_sub_section_code=S2N2&view_type=sm)\n * [
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 6 -
[참고 5] Step 2. 검색 내용 수집&정리 기사 본문 정리
Jina AI를 통해 수집된 본문에서 필요한 정보만을 추출하는 단계
* Jina AI가 가져온 원본에는 기사 본문 외에 광고, 메뉴, 댓글, 이미지 설명 등 불필요한 내용이 섞여 있어 이를 자동으로 걸러
내는 처리가 필요함.
- 세부 단계
1) “Code” 노드 추가
* Code : AI를 활용하여 코드를 작성, 데이터를 원하는 형태로 가공하는 노드.→ 이번에는 Jina AI가 가져온 원본 텍스트에
서 순수 기사 본문만 추출하고, 앞 단계(Split Out)의 제목·발행일·링크 정보와 합치는 용도로 사용.
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Mode : 코드를 어떠한 방식으로 실행할지에 대한 설정
· Run once for each item : 12개 기사 1개씩 반복 처리
(2) Language : 코드를 어떤 프로그래밍 언어로 작성할지 선택
· Javascript
(3) 코드 입력
· (claude에 해당 사항에서 본문 추출을 위한 코드 정리 요청)
[입력 프롬프트]
* (참고 5. 결과물 중 샘플 3개 입력 후)
수집한 기사 본문에서 광고·메뉴·링크·이미지 등 불필요한 내용을 제거하고, 순수한 본문 내용만 추출하고자 해.본문 구조를 파
악하여 n8n Code 노드용 JavaScript 코드로 정리해줘.최종 출력 항목은 제목, 발행일, url, 주요내용, 본문전체이고,앞 단계 노
드명은 '수집 정보 정리'야.
[클로드 코드]
원본 전체를 Raw 저장 → 마크다운 콘텐츠 추출(제목, url 메타정보 삭제) → 50자 미만 줄 제거,
헤더목차,강조, 링크, 이미지 등 제거 → 본문 정리 → 수집정보 정리(참고4)와 본문을 하나로 정리
3) Execute step 클릭하여 Output 확인 (예시)
"title": "2월 3주 엔지니어링 주간 입낙찰 동향",
"발행일": "Thu, 19 Feb 2026 10:20:00 +0900",
"url": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"주요내용": "이산&b&기술&/b&단 금액 : 22억984만원 사업명 : 함양군 노후상수관망 정비사업 기본 및 실시설계 발주처...
삼안, &b&한맥&/b& 금액 : 29억1,115만원 사업명 : 노성·상월면 일원 하수관로 정비사업 기본 및 실시설계 발주처... ",
"본문전체": "(엔지니어링데일리) 정원기 기자 = 19일 엔지니어링업계에 따르면 2월 3주 엔지니어링 입낙찰 동향은 다음과
같다. 사업명 : 2026년도 호남고속선 오송~익산간 외 2개소 궤도 정밀진단 및 성능평가 엔지니어링 사업명 : 용산국제업무지
구 동서방향연결도로 외 3개소 재해영향성검토 및 (소규모)재해영향평가 사업명 : 산양,사창 노후하수관로 정비 및 하리1 배
수분구 중점관리지역 도시침수 대응사업 통합건설사업관리"
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 7 -
[참고 6] Step 2. 검색 내용 수집&정리 기사 저장하기
참고 5에서 정리된 기사 정보(제목, 발행일, url, 주요내용, 본문전체)를 구글 스프레드시트 시트1에
한 줄씩 저장하는 단계.
* 사전 구글 계정의 연결 필요(참고 6-1)
- 세부 단계
1) “Google sheets_append row in sheet” 노드 추가
* Google sheets : 구글 스프레드시트에 데이터를 읽거나 쓰는 노드
* append row in sheet : 정리된 기사 정보를 지정한 시트에 한 줄씩 추가
2) Parameters에서 요청 내용 정리
- 기본 설정 (사전 구글 계정 연동 필요(참고 6-1))
(1) Credential to connet with : 연결할 구글 계정 선택
· Google sheets account
(2) Resource : 구글 서비스 중 선택할 소스
· sheet within document
(3) Operation : 작업 선택
· Append Row : 시트 마지막 행에 새줄 추가
(4) Document : 저장할 구글 스프레드시트파일
· sample
(5) sheet : 저장할 시트 선택
· 시트 1
- 구글 시트에 입력 방식 선택 : Mapping column mode
Map Each Column Manually : 항목을 하나씩 직접 지정하여 저장
* 구글시트에 있는 head가 자동으로 Value to send 항목으로 정리. 좌측 input을 매칭
3) Execute step 클릭하여 Output 확인 (예시)
"title": "2월 3주 엔지니어링 주간 입낙찰 동향",
"url": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"주요내용": "이산&b&기술&/b&단 금액 : 22억984만원 사업명 : 함양군 노후상수관망 정비사업 기본 및 실시설계 발주처...
삼안, &b&한맥&/b& 금액 : 29억1,115만원 사업명 : 노성·상월면 일원 하수관로 정비사업 기본 및 실시설계 발주처... ",
"발행일": "Thu, 19 Feb 2026 10:20:00 +0900",
“구분” : 1,
"본문전체": "(엔지니어링데일리) 정원기 기자 = 19일 엔지니어링업계에 따르면 2월 3주 엔지니어링 입낙찰 동향은 다음과
같다. 사업명 : 2026년도 호남고속선 오송~익산간 외 2개소 궤도 정밀진단 및 성능평가 엔지니어링 사업명 : 용산국제업무지
구 동서방향연결도로 외 3개소 재해영향성검토 및 (소규모)재해영향평가 사업명 : 산양,사창 노후하수관로 정비 및 하리1 배
수분구 중점관리지역 도시침수 대응사업 통합건설사업관리"
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 8 -
[참고 6-1] Step 2. 검색 내용 수집&정리 기사 저장하기 (구글 계정 연결하기)
Credential to connect with
* “+ create new credential” 클릭 → Client ID, client Secret 입력
1) console.cloud.google.com 접속
(1) 프로젝트 생성 : 프로젝트 선택 → 새프로젝트 → 프로젝트 이름 입력 후 만들기
(2) API 활성화 :
① 구글 시트
(좌측) API 및 서비스 → 라이브러리 → (검색창에) google sheets api → “사용” 클릭
② 구글 드라이브
(좌측) API 및 서비스 → 라이브러리 → (검색창에) google drive api → “사용” 클릭
(3) OAuth 2.0 클라이언트 ID 생성
① (좌측) 사용자 인증정보 → (상단) + 사용자 인증 정보 만들기 → OAuth 클라이언트 ID
→ 동의 화면 구성 → 시작하기
② 입력
- 앱이름 : n8n / 사용자 지원 이메일 : 입력
- 대상 : 외부
- 이메일 및 완료
③ OAuth 클라이언트 만들기
- 애플리케이션 유형 : 웹 애플리케이션
- 이름 : n8n
- 승인된 리디렉션 URI : http://localhost:5678/rest/oauth2-credential/callback
(4) 사용자 등록
(좌측) API 및 서비스 → OAuth 동의 → 대상 → 테스트사용자 +Add users → (이메일 입력
후) 저장
2) 아이디 비번 입력
- Client ID / Client Sectret 입력 & save 버튼 클릭
- Sign in with google 클릭 후 로그인 허용
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 9 -
[참고 7] Step 3. AI 인사이트 생성 - 전처리
참고 6에서 저장된 12개 기사의 본문을 AI가 한 번에 분석할 수 있도록 하나로 합치는 단계.
* 12개를 각각 AI에 보내면 API 호출이 12번 발생하여 비용과 시간이 늘어남. 하나로 합쳐서 1번만 호출하도록 전처리.
- 세부 단계
1) “Aggregate” 노드 추가
* Aggregate : 여러 개로 나뉜 데이터를 하나로 합치는 노드.→ 이번에는 12개 기사의 본문전체 항목을 하나의 묶음으로 합
쳐서 Gemini AI로 전달하는 용도로 사용.
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Aggregate : 어떠한 방식으로 합칠지 선택
· All Item Data (Into a Single List) : 모든 항목을 하나의 리스트로 합침
(2) Put Output in Field : 합쳐진 결과를 어떤 이름으로 저장할지 설정
· data
(3) Include : 합칠 때 어떤 항목을 포함할지 설정
· Selected Fields : 지정한 항목만 포함
· Field Name : 본문전체
3) Execute step 클릭하여 Output 확인 (예시) - 12개 기사가 하나로 합쳐져서 출력
"title": "2월 3주 엔지니어링 주간 입낙찰 동향",
"url": "http://www.engdaily.com/news/articleView.html?idxno=21743",
"주요내용": "이산&b&기술&/b&단 금액 : 22억984만원 사업명 : 함양군 노후상수관망 정비사업 기본 및 실시설계 발주처...
삼안, &b&한맥&/b& 금액 : 29억1,115만원 사업명 : 노성·상월면 일원 하수관로 정비사업 기본 및 실시설계 발주처... ",
"발행일": "Thu, 19 Feb 2026 10:20:00 +0900",
“구분” : 1,
"본문전체": "(엔지니어링데일리) 정원기 기자 = 19일 엔지니어링업계에 따르면 2월 3주 엔지니어링 입낙찰 동향은 다음과
같다. 사업명 : 2026년도 호남고속선 오송~익산간 외 2개소 궤도 정밀진단 및 성능평가 엔지니어링 사업명 : 용산국제업무지
구 동서방향연결도로 외 3개소 재해영향성검토 및 (소규모)재해영향평가 사업명 : 산양,사창 노후하수관로 정비 및 하리1 배
수분구 중점관리지역 도시침수 대응사업 통합건설사업관리"
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 10 -
[참고 8] Step 3. AI 인사이트 생성 본문 분석
참고 7 결과물(하나로 합쳐진 12개 기사 본문)을 Gemini AI에게 전달하여 인사이트 3가지를 추출
* 사전 Gemini API 키 발급 필요
- 세부 단계
1) “Google Gemini” 노드 추가
- Text action Message a model 선택
* Text action message a model : 텍스트를 Gemini AI에게 전달하고 분석 결과를 받아오는 기능
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Credential to connect with : Gemini API 키 입력
(2) Resource : input 데이터 형식
· Text
(3) Operation ; resource를 통하여 어떠한 작업을 하는지 확인
· Message a model : AI에게 메시지를 보내도 답변 수취
(4) Model : Gemini AI 모델 선택
(5) Messages : 프롬프트 입력
· Prompt : 내가 AI에게 입력
아래는 '{{ $('키워드 입력(Trigger)').first().json['키워드'] }}' 키워드 관련 뉴스 본문들입니다.
{{ $json.data.map(item => item['본문 전체']).join('\n\n') }}
위 내용을 바탕으로 주요 인사이트 3개를 아래 JSON 형식으로만 답해줘. 다른 말은 하지 마:
[ {"제목": "인사이트 제목", "내용": "상세 내용", "링크": "관련 기사 URL"},
{"제목": "인사이트 제목", "내용": "상세 내용", "링크": "관련 기사 URL"},
{"제목": "인사이트 제목", "내용": "상세 내용", "링크": "관련 기사 URL"}
]
· Model : AI가 이전에 한 말을 다시 넣어서 실행
3) Execute step 클릭하여 Output 확인 (예시) - 12개 기사가 하나로 합쳐져서 출력
"text": "```json\n[\n {\n \"제목\": \"한맥기술, 건설 특화 2D·3D 통합 설계 솔루션 'EG-BIM' 상용화 테스트 참여\",\n \"내
용\": \"㈜한맥기술은 바론컨설턴트가 자체 개발한 2D 설계와 3D 뷰어 기능을 통합한 건설특화 CAD 솔루션 'EG-BIM(이지
빔)'의 상용화 테스트에 참여하여 실무 안정성을 검증받았다.\",\n \"링크\":
\"https://www.dnews.co.kr/uhtml/view.jsp?idxno=202601200915035880355#\"\n },\n {\n \"제목\": \"박다정 한맥 대표, '미
래를 이끌어갈 여성지도자상' 농업 부문 수상\",\n \"내용\": \"강원도 평창에서 약용 작물(천궁·당귀)을 재배하는 박다정 한맥
대표가 청년 여성 농업인 육성과 농업 발전에 기여한 공로를 인정받아 여성신문의 '미래를 이끌어갈 여성지도자상'을 수상했
다. 그녀는 귀농 후 데이터화된 농사 노하우와 드론 방제사 자격증 취득 등 신기술을 접목하며 농업 혁신을 이끌고 있다.\",\n
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 11 -
[참고 9] Step 3. AI 인사이트 생성 인사이트 정리
참고 8에서 Gemini AI가 돌려준 결과를 구글 시트에 저장할 수 있는 형태로 가공하는 단계
.※ Gemini AI 응답은 JSON 형식으로 오기 때문에 이를 번호/제목/내용/링크 항목으로 분리해야 함.
- 세부 단계
1) “Code” 노드 추가
* Code : AI를 활용하여 코드를 작성, 데이터를 원하는 형태로 가공하는 노드.→ 이번에는 Gemini AI가 JSON 형식으로 돌
려준 인사이트 3개를 번호/제목/내용/링크로 각각 분리하여 구글 시트에 저장할 수 있는 형태로 정리.
2) Parameters에서 요청 내용 정리
- 기본 설정
(1) Mode : 코드를 어떠한 방식으로 실행할지에 대한 설정
· Run once for all item : 1개 결과물을 정리
(2) Language : 코드를 어떤 프로그래밍 언어로 작성할지 선택
· Javascript
(3) 코드 입력
· (claude에 해당 사항에서 본문 추출을 위한 코드 정리 요청)
[입력 프롬프트]
* (참고 8. Gemini 결과물 입력 후)
위는 Gemini AI가 돌려준 인사이트 결과입니다. JSON을 파싱하여 인사이트 3개를 각각 번호(#), 인사이트 제목, 관련 내용, 관
련 링크 항목으로 분리하는 n8n Code 노드용 JavaScript 코드를 작성해줘.
[클로드 코드]
Gemini 응답 텍스트 수신 → JSON 파싱 → 인사이트 3개를 각각 분리 → 번호/제목/내용/링크
4개 항목으로 정리하여 다음 단계로 전달
3) Execute step 클릭하여 Output 확인 (예시)
"#": 1,
"인사이트": "한맥기술, 건설 특화 2D·3D 통합 설계 솔루션 'EG-BIM' 상용화 테스트 참여",
"관련 내용": "㈜한맥기술은 바론컨설턴트가 자체 개발한 2D 설계와 3D 뷰어 기능을 통합한 건설특화 CAD 솔루션 'EG-BIM(이
지빔)'의 상용화 테스트에 참여하여 실무 안정성을 검증받았다.",
"관련 링크": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202601200915035880355#"
"#": 2,
"인사이트": "박다정 한맥 대표, '미래를 이끌어갈 여성지도자상' 농업 부문 수상",
"관련 내용": "강원도 평창에서 약용 작물(천궁·당귀)을 재배하는 박다정 한맥 대표가 청년 여성 농업인 육성과 농업 발전에 기여
한 공로를 인정받아 여성신문의 '미래를 이끌어갈 여성지도자상'을 수상했다. 그녀는 귀농 후 데이터화된 농사 노하우와 드론
방제사 자격증 취득 등 신기술을 접목하며 농업 혁신을 이끌고 있다.",
"관련 링크": "https://n.news.naver.com/mnews/article/310/0000133113?sid=102#"
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 12 -
[참고 10] Step 3. AI 인사이트 생성 저장하기
참고 9에서 정리된 인사이트 3개를 구글 스프레드시트 Sheet2에 한 줄씩 저장하는 단계
- 세부 단계
1) “Google sheets_append row in sheet” 노드 추가
* Google sheets : 구글 스프레드시트에 데이터를 읽거나 쓰는 노드
* append row in sheet : 정리된 기사 정보를 지정한 시트에 한 줄씩 추가
2) Parameters에서 요청 내용 정리
- 기본 설정 (사전 구글 계정 연동 필요(참고 6-1))
(1) Credential to connet with : 연결할 구글 계정 선택
· Google sheets account
(2) Resource : 구글 서비스 중 선택할 소스
· sheet within document
(3) Operation : 작업 선택
· Append Row : 시트 마지막 행에 새줄 추가
(4) Document : 저장할 구글 스프레드시트파일
· sample
(5) sheet : 저장할 시트 선택
· 시트 2
- 구글 시트에 입력 방식 선택 : Mapping column mode
Map Each Column Manually : 항목을 하나씩 직접 지정하여 저장
* 구글시트에 있는 head가 자동으로 Value to send 항목으로 정리. 좌측 input을 매칭
3) Execute step 클릭하여 Output 확인 (예시)
"인사이트": "한맥기술, 건설 특화 2D·3D 통합 설계 솔루션 'EG-BIM' 상용화 테스트 참여",
"관련 내용": "㈜한맥기술은 바론컨설턴트가 자체 개발한 2D 설계와 3D 뷰어 기능을 통합한 건설특화 CAD 솔루션
'EG-BIM(이지빔)'의 상용화 테스트에 참여하여 실무 안정성을 검증받았다.",
"링크": "https://www.dnews.co.kr/uhtml/view.jsp?idxno=202601200915035880355#"
기술로 사람과 자연이
함께하는 세상을 만들어 갑니다.
- 13 -

Binary file not shown.