연구형 AI 에이전트: 아티클 스크래핑 및 요약 후 Notion 저장 (Gemini, Browserless)
중급
이것은Other, AI분야의자동화 워크플로우로, 9개의 노드를 포함합니다.주로 NotionTool, DiscordTool, Agent, ChatTrigger, ToolHttpRequest 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. AI스마트어시스턴트:抓取、总结기사并保存至Notion(Gemini,Browserless)
사전 요구사항
- •Notion API Key
- •Discord Bot Token 또는 Webhook
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "4sKJLlAF2vqpkk2I",
"meta": {
"instanceId": "69133932b9ba8e1ef14816d0b63297bb44feb97c19f759b5d153ff6b0c59e18d"
},
"name": "Research AI Agent: Scrape and Summarize Articles and save to Notion (Gemini, Browserless)",
"tags": [],
"nodes": [
{
"id": "bbfff416-7270-4f1c-8024-b91b1c5acd1b",
"name": "Gemini 2.5 PRO",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-840,
20
],
"parameters": {
"options": {
"temperature": 0
},
"modelName": "models/gemini-2.5-pro-exp-03-25"
},
"credentials": {
"googlePalmApi": {
"id": "jLOqyTR4yTT1nYKi",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "e1a4b171-0850-4d90-bf49-5c39888922af",
"name": "website_scraper",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"position": [
-220,
-100
],
"parameters": {
"url": "http://browserless:3000/content",
"method": "POST",
"jsonBody": "={\n \"url\": \"{url}\",\n \"gotoOptions\": {\n \"waitUntil\": \"networkidle0\"\n }\n} ",
"sendBody": true,
"specifyBody": "json",
"toolDescription": "website_scraper: Scrape a website given it's URL",
"placeholderDefinitions": {
"values": [
{
"name": "url",
"type": "string",
"description": "the URL of the website to scrape"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "fd94022a-bf8d-47e6-b561-d622da350737",
"name": "save_to_notion",
"type": "n8n-nodes-base.notionTool",
"position": [
-620,
-100
],
"parameters": {
"title": "={{ $fromAI('Title', `The original title of the article!`, 'string') }}",
"blockUi": {
"blockValues": [
{
"type": "heading_1",
"textContent": "={{ $fromAI('Title', `The original title of the article!`, 'string') }}"
},
{
"type": "heading_2",
"textContent": "Quick Summary (TL;DR)"
},
{
"textContent": "={{ $fromAI('Summary', `1-3 sentence summary capturing the absolute essence of this article`, 'string') }}"
},
{
"type": "heading_2",
"textContent": "={{ $fromAI('objective_title', `short title for the Problem Addressed / Objective section`, 'string') }}"
},
{
"textContent": "={{ $fromAI('objective_text', `description of the core problem, question, or goal the article tackles. Keep it focused.`, 'string') }}"
},
{
"type": "heading_2",
"textContent": "={{ $fromAI('concepts_title', `title for the Key Concepts / Solution Overview section`, 'string') }}"
},
{
"textContent": "={{ $fromAI('concepts_text', `Explain the main ideas, theories, or the high-level approach of the solution presented.`, 'string') }}"
},
{
"type": "heading_2",
"textContent": "Technologies & Libraries"
},
{
"text": {
"text": [
{
"text": "={{ $fromAI('technologies_list', `A bulleted list of Technologies, Libraries, Techniques and Patterns Mentioned in the article along with a short description for each`, 'string') }}",
"annotationUi": {}
}
]
},
"richText": true
},
{
"type": "heading_2",
"textContent": "Core Code Snippets"
},
{
"textContent": "={{ $fromAI('important_code_snippet_description', `1-2 sentences of context explaining what this snippet does or why it's important.`, 'string') }}"
},
{
"text": {
"text": [
{
"text": "={{ $fromAI('important_code_snippet', `The actual code snippet. The AI must ensure this block doesn't exceed 2000 chars. If a crucial snippet is longer, the AI should either prioritize a key part of it or potentially link to the source if available. Specify the language (e.g., python, javascript) for syntax highlighting.`, 'string') }}",
"annotationUi": {
"code": true
}
}
]
},
"richText": true
},
{
"type": "heading_2",
"textContent": "Key Takeaways & Conclusion"
},
{
"textContent": "={{ $fromAI('conclusions', `A bulleted item list that summarizes the main conclusions, results, or actionable insights from the article.`, 'string') }}"
}
]
},
"options": {
"icon": "={{ $fromAI('Icon', `Pick an emoji that would be good as an icon for this article. Remember, this should be a single emoji`, 'string') }}"
},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "1c385086-bf58-80a1-a60f-dbc96d64413f",
"cachedResultUrl": "https://www.notion.so/1c385086bf5880a1a60fdbc96d64413f",
"cachedResultName": "Knowledge Database"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Description|rich_text",
"textContent": "={{ $fromAI('Description', `Short description of what the article is about`, 'string') }}"
},
{
"key": "URL|url",
"urlValue": "={{ $fromAI('URL', `The URL where this article resides.`, 'string') }}"
},
{
"key": "Tags|multi_select",
"multiSelectValue": "={{ $fromAI('Tags', `General (generic) tags that would be relevant for this article, such as technologies used / talked about, programming language, techniques and so on! Keep them generic not ultra specific.`, 'string') }}"
},
{
"key": "Publication Date|date",
"date": "={{ $fromAI('publication_date', `The date this article was published if available on the page.`, 'string') }}",
"includeTime": false
}
]
},
"descriptionType": "manual",
"toolDescription": "save_to_notion: This tool saves the information to the Notion database."
},
"credentials": {
"notionApi": {
"id": "MDVhXc92xUP3UjxB",
"name": "Notion account"
}
},
"notesInFlow": false,
"typeVersion": 2.2
},
{
"id": "0e70e938-97ac-4aa0-80c1-8f7c9c519b9d",
"name": "discord_notification",
"type": "n8n-nodes-base.discordTool",
"position": [
-420,
-100
],
"webhookId": "617fa695-5a0a-464e-b3f2-bcd77ab5965b",
"parameters": {
"embeds": {
"values": [
{
"url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
"title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
"description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
}
]
},
"content": "={{ $fromAI('Message', `Start with an :information_source: emoji. Then tell the chat that the action has been completed.`, 'string') }}",
"guildId": {
"__rl": true,
"mode": "list",
"value": "1207038600731168821",
"cachedResultUrl": "https://discord.com/channels/1207038600731168821",
"cachedResultName": "Let's Talk Dev Community"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "list",
"value": "1354563802854723774",
"cachedResultUrl": "https://discord.com/channels/1207038600731168821/1354563802854723774",
"cachedResultName": "research"
}
},
"credentials": {
"discordBotApi": {
"id": "LfVy6XSgcAgRUPSS",
"name": "Discord Bot account"
}
},
"typeVersion": 2
},
{
"id": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
"name": "Save Article To Notion",
"type": "@n8n/n8n-nodes-langchain.agent",
"onError": "continueErrorOutput",
"position": [
-700,
-320
],
"parameters": {
"options": {
"systemMessage": "=You will receive a URL. Your task is to:\n1. use the website_scraper to scrape the provided URL!\n2. use the save_to_notion tool to save the information to Notion.\n3. use the discord_notification tool to send a notification that the research is available, along with the notion URL of the created page.\n\n## Tools\nThe save_to_notion tool expects the following parameters:\n* title: the original title of the article\n* description: short description of what the article is about\n* url: the URL where this article resides.\n* tags: general (generic) tags that would be relevant for this article, such as technologies used / talked about, programming language, techniques and so on! Keep them generic not ultra specific.\n* publication_date: The date this article was published if available on the page.\n* summary: 1-3 sentence summary capturing the absolute essence of this article\n* objective_title: short title for the section about the problem addressed / objective\n* objective_text: description of the core problem, question, or goal the article tackles. Keep it focused.\n* concepts_title: title for the Key Concepts / Solution Overview section\n* concepts_text: explain the main ideas, theories, or the high-level approach of the solution presented. \n* technologies_list: A bulleted list of Technologies, Libraries, Techniques and Patterns Mentioned in the article along with a short description for each.\n* important_code_snippet_description: Description for The most important code snippet in the article. 1-2 sentences of context explaining what this snippet does or why it's important.\n* important_code_snippet: The actual code snippet. The AI must ensure this block doesn't exceed 2000 chars. If a crucial snippet is longer, the AI should either prioritize a key part of it or potentially link to the source if available. Specify the language (e.g., python, javascript) for syntax highlighting.\n* conclusions: A bulleted item list that summarizes the main conclusions, results, or actionable insights from the article.\n* icon: an emoji that represents this article best!\n\nRemember you always have to scrape the website using the website_scraper tool. Don't try to summarize without scraping!\nAlways save the results to notion using the save_to_notion tool. Only execute this tool once!"
}
},
"executeOnce": true,
"notesInFlow": false,
"typeVersion": 1.7
},
{
"id": "4a7f0a06-0d5f-4013-964c-fcc272484ff4",
"name": "채팅 메시지 수신 시",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-1000,
-320
],
"webhookId": "3e4878bb-dcb4-4591-975f-8f279605e90b",
"parameters": {
"public": true,
"options": {}
},
"typeVersion": 1.1
},
{
"id": "5bcfe9f7-a58f-4851-8ac4-ad6de06705df",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1060,
-120
],
"parameters": {
"width": 340,
"height": 260,
"content": "## Google Gemini AI model\n\nI picked this for the enormous context window and speed. Feel free to experiment with other AI models."
},
"typeVersion": 1
},
{
"id": "8a1ef34e-9f27-4e68-8ef2-34c488463512",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
-420
],
"parameters": {
"width": 380,
"height": 460,
"content": "## Browserless (https://www.browserless.io/)\n\nI use Browserless as a self hosted Docker container (alongside n8n). You can use the cloud version of Browserless or any other web scraping tool or API.\n\nSince there isn't a pre-built tool for Browserless , we can simply use the generic HTTP request tool to call Browserless' API."
},
"typeVersion": 1
},
{
"id": "dfba5742-663c-4b8c-a971-de120c8f73c1",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1980,
-820
],
"parameters": {
"width": 860,
"height": 980,
"content": "## Setup\n\n1. **Import Workflow:** Import this template into your n8n instance.\n2. **Configure Credentials & Notion Database:**\n * **Notion Database:**\n * Create or designate a Notion database (like the example \"Knowledge Database\") where articles will be saved.\n * Ensure this database has the following properties (fields):\n * `Name` (Type: Text) - *This will store the article title.*\n * `URL` (Type: URL) - *This will store the original article link.*\n * `Description` (Type: Text) - *This can store the AI-generated summary.*\n * `Tags` (Type: Multi-select) - *Optional, for categorization.*\n * `Publication Date` (Type: Date) - *Optional, \nstore the date the article was published.\n * Ensure the n8n integration has access to this specific database.\n\t* If you require a different format to the Notion Database, not that you will have to update the Notion tool configuration in this n8n workflow accordingly.\n * **Notion Credential:** Obtain your Notion API key and add it as a Notion credential in n8n. Select this credential in the `save_to_notion` tool node.\n * **Configure `save_to_notion` Tool:** In the `save_to_notion` tool node within the workflow, set the 'Database ID' field to the ID of the Notion database you prepared above. Map the workflow data (URL, AI summary, etc.) to the corresponding database properties (`URL`, `Description`, etc.). In the blocks section of the notion tool, you can define a custom format for the research page, allowing the AI to fill in the exact details you want extracted from any web page!\n * **Google Gemini AI:** Obtain your API key from [Google AI Studio](https://aistudio.google.com/app/apikey) or Google Cloud Console (if using Vertex AI) and add it as a credential. Select this credential in the \"Tools Agent\" node.\n * **Discord (or other notification service):** If using Discord notifications, create a Webhook URL ([instructions](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks)) or set up a Bot Token. Add the credential in n8n and select it in the `discord_notification` tool node. Configure the target Channel ID.\n * **Browserless/HTTP Request:**\n * **Cloud:** Obtain your API key from [Browserless](https://www.browserless.io/) and configure the `website_scraper` HTTP Request tool node with the correct API endpoint and authentication header.\n * **Self-Hosted:** Ensure your Browserless Docker container is running and accessible by n8n. Configure the `website_scraper` HTTP Request tool node with your self-hosted Browserless instance URL.\n6. **Activate Workflow:** Save test and activate the workflow.\n\n## How to customize this workflow to your needs\n\n* **Change AI Model:** Experiment with different AI models supported by n8n (like OpenAI GPT models or Anthropic Claude) in the Agent node if Gemini 2.5 Pro doesn't fit your needs or budget, keeping in mind potential differences in context window size and processing capabilities for large content.\n* **Modify Notion Saving:** Adjust the `save_to_notion` tool node to map different data fields (e.g., change the summary style by modifying the AI prompt, add specific tags, or alter the page content structure) to your Notion database properties.\n* **Adjust Scraping:** Modify the prompt/instructions for the `website_scraper` tool or change the parameters sent to the Browserless API if you need different data extracted from the web pages. You could also swap Browserless for another scraping service/API accessible via the HTTP Request node."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "d5328d32-6ee9-4dd6-a68b-8736c85975fe",
"connections": {
"bbfff416-7270-4f1c-8024-b91b1c5acd1b": {
"ai_languageModel": [
[
{
"node": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"fd94022a-bf8d-47e6-b561-d622da350737": {
"ai_tool": [
[
{
"node": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
"type": "ai_tool",
"index": 0
}
]
]
},
"e1a4b171-0850-4d90-bf49-5c39888922af": {
"ai_tool": [
[
{
"node": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
"type": "ai_tool",
"index": 0
}
]
]
},
"0e70e938-97ac-4aa0-80c1-8f7c9c519b9d": {
"ai_tool": [
[
{
"node": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
"type": "ai_tool",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "ee123a65-f0db-45e8-8e78-618b6c2b74e9",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 기타, 인공지능
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
⚡AI驱动의YouTube播放列表및视频摘要与분석v2
AI YouTube播放列表与视频분석채팅봇
If
Set
Code
+
If
Set
Code
72 노드dmr
기타
주식 재무제표 분석을 위한 RAG 워크플로
주식 재무제표 분석을 위한 AI 기반 RAG 워크플로
Google Docs
Google Drive
Google Sheets
+
Google Docs
Google Drive
Google Sheets
18 노드Mihai Farcas
인공지능
개인 어시스턴트 MCP 서버
MCP를 사용하여 Google Gemini, Gmail, 일정을 통합한 개인 어시스턴트를 구축합니다.
Gmail Tool
Agent
Google Sheets Tool
+
Gmail Tool
Agent
Google Sheets Tool
20 노드Aitor | 1node.ai
기타
RAG(Pinecone과 OpenAI)를 사용하여 GitHub OpenAPI 규격과 대화
GitHub API 문서와 대화: RAG 기반 채팅 로봇, Pinecone와 OpenAI를 사용합니다.
Http Request
Manual Trigger
Agent
+
Http Request
Manual Trigger
Agent
17 노드Mihai Farcas
엔지니어링
제작자의 워크플로우 3
Llama Parser, Gemini LLM, Pinecone DB를 기반으로 한 문서 분석 및 채팅 로봇 생성
If
Code
Gmail
+
If
Code
Gmail
36 노드pavith
기타
24. Bright Data와 Gemini AI를 사용하여 실시간 검색 데이터를 통해 채팅 응답 강화
통해Bright Data및Gemini AI利用实时검색데이터增强채팅响应
Set
Mcp Client
Mcp Client Tool
+
Set
Mcp Client
Mcp Client Tool
18 노드Ranjan Dailata
제품
워크플로우 정보
난이도
중급
노드 수9
카테고리2
노드 유형7
저자
Mihai Farcas
@mihailtdFull-stack developer with 5+ years streamlining healthcare processes. Proficient in NodeJS, VueJS, MongoDB, PostgreSQL, Kubernetes, and n8n. Ready to optimize your workflows – book a consult via my link.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유