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