Google RSS、Openrouter、Telegram を使った自動株ニュースアラート
上級
これはCrypto Trading, AI Summarization分野の自動化ワークフローで、22個のノードを含みます。主にIf, Code, Merge, JinaAi, Telegramなどのノードを使用。 Google RSS、Gemini、Telegramを基にした株式ニュースの自動通知
前提条件
- •Telegram Bot Token
- •Google Sheets API認証情報
使用ノード (22)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "zyj0hJZNNR3mKvEx",
"name": "Automated Stock News Alerts via Google RSS, Openrouter & Telegram",
"tags": [],
"nodes": [
{
"id": "b4739068-769f-4638-83cf-94a7c611caad",
"name": "シートに行を追加または更新",
"type": "n8n-nodes-base.googleSheets",
"position": [
2380,
620
],
"parameters": {
"columns": {
"value": {
"ID": "={{ $('Merge').item.json.id }}",
"URL": "={{ $json.realUrl }}",
"Date": "={{ $('Merge').item.json.pubDate }}",
"Title": "={{ $('Merge').item.json.title }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SentToTelegram",
"type": "string",
"display": true,
"required": false,
"displayName": "SentToTelegram",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"ID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo"
}
},
"typeVersion": 4.6
},
{
"id": "4d5abad5-44ac-4698-a178-f6da494d83d7",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
860,
140
],
"parameters": {
"color": 7,
"width": 460,
"height": 760,
"content": "### ⏰ Scheduler\n\n**Function:** \nThis node triggers the entire workflow at a predefined interval. It ensures that the system checks for new stock news regularly without manual intervention.\n\n**Configuration:**\n- **Mode:** Every X minutes\n- **Interval:** 15 minutes (default, can be customized based on user needs)\n\n**Notes:**\n- You can adjust the interval depending on how frequently you want to monitor news updates.\n\n"
},
"typeVersion": 1
},
{
"id": "8f3aeb9c-380e-4d91-a8e0-f2c856d360b5",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 6,
"width": 780,
"height": 1300,
"content": "## 🎯 Purpose\nThis workflow helps you automatically monitor stock related news, extract the main content, summarize it using a LLM (via OpenRouter), and send real time alerts to Telegram and store them in Google Sheets.\n\n## ⚙️ How It Works\n### Trigger\n- A Cron node triggers the workflow every 15 minutes (adjustable).\n- RSS Feed node checks latest articles from Google Alerts RSS.\n- The workflow filters duplicates using Google Sheets as a log.\n- The article URL is sent to Jina AI Readability API to extract the main body text.\n- The content is summarized using a model from OpenRouter (e.g., Gemini, Claude, GPT-4).\n- You can customize the prompt to suit your tone and analysis needs.\n- The result is appended to a Google Sheets file.\n- Sends the title, summary, and reccomendation to Telegram chat.\n\n**🧾 Google Sheets Template**\nCreate a Google Sheet using this template: [Stock Alert](https://docs.google.com/spreadsheets/d/109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo/edit?usp=sharing)\n\n## 🧰 Requirements\n- Telegram Bot + your Chat ID\n- OpenRouter account and API key\n- Jina AI account for content extraction\n- Google Account with access to Google Sheets\n- Google Alerts RSS feed\n\n## 🛠 Setup Instructions\n- Install required credentials:\n - Add OpenRouter API key to n8n credentials.\n - Add Telegram Bot Token and Chat ID.\n - Add Google Sheets credentials.\n - Add Jina AI credentials.\n- Create or copy the Google Sheet using the link above.\n- Go to Google Alerts, create alerts, and copy the RSS feed URL.\n- Replace placeholder API keys and URLs.\n- Adjust Telegram Chat ID.\n\n## 🔐 Security Note\nAll sensitive credentials (e.g., API keys, personal chat IDs) have been removed from this template. Please replace them using the n8n credentials manager before activating the workflow."
},
"typeVersion": 1
},
{
"id": "f00e3efd-e11e-4340-adef-c87b01c4818c",
"name": "URLコンテンツを読み取り",
"type": "n8n-nodes-base.jinaAi",
"position": [
2980,
500
],
"parameters": {
"url": "={{ $('Get row(s) in sheet').item.json.URL }}",
"options": {},
"requestOptions": {}
},
"typeVersion": 1
},
{
"id": "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f",
"name": "AIエージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3300,
500
],
"parameters": {
"text": "=Create a summary of up to 200 words from {{ $json.content }} Add a description of the affected stocks (stock code). Add a sentiment description (uptrend, downtrend, sideways, positive, negative or others). The writing format is as follows: Title\\nCategory\\nSummary\\nSentiment\\nReccomendation. Write in plain text without punctuation, use emoji to more interactive.",
"options": {
"systemMessage": "You are a professional analyst who has studied a lot about stock movements. Use the following news articles to see the company's fundamentals, sentiment, and future projections."
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "b94dff41-913d-4e8b-9ea8-3fe9d36041ab",
"name": "OpenRouterチャットモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
3300,
700
],
"parameters": {
"model": "google/gemini-2.0-flash-exp:free",
"options": {}
},
"typeVersion": 1
},
{
"id": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
"name": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
1960,
620
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "552b48ff-8921-4878-8c65-4d1f9c63f6e0",
"name": "シートから行を取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
2580,
620
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo"
}
},
"typeVersion": 4.6
},
{
"id": "2dc342e9-9f0b-4f1e-8889-60b61bcb42f2",
"name": "テキストメッセージを送信",
"type": "n8n-nodes-base.telegram",
"position": [
3960,
500
],
"parameters": {
"text": "={{ $json.Summary }}",
"additionalFields": {
"appendAttribution": false
}
},
"typeVersion": 1.2
},
{
"id": "f49aa596-c969-4c4f-b466-79f962c2a658",
"name": "シートに行を追加または更新1",
"type": "n8n-nodes-base.googleSheets",
"position": [
3740,
500
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $('Read URL content').item.json.url }}",
"Summary": "={{ $json.output }}",
"SentToTelegram": "true"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SentToTelegram",
"type": "string",
"display": true,
"required": false,
"displayName": "SentToTelegram",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "109kj97ABR37XviIpxARCFviZwq8opOoe--rayOeFDSo"
}
},
"typeVersion": 4.6
},
{
"id": "966d4fb2-39e1-4e8f-a6bc-847f49e2f6f0",
"name": "スケジュールトリガー1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1020,
620
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 15
}
]
}
},
"typeVersion": 1.2
},
{
"id": "b9d23403-da7b-4c43-a6b4-aeaa38ac6e2d",
"name": "何もしない",
"type": "n8n-nodes-base.noOp",
"position": [
2980,
720
],
"parameters": {},
"typeVersion": 1
},
{
"id": "002d50e3-f1d5-4bcc-b342-7c94f9d22bf8",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
140
],
"parameters": {
"color": 7,
"width": 460,
"height": 840,
"content": "### 📡 RSS Feed (Google Alerts)\n\n**Function:** \nThis node fetches the latest news articles from Google Alerts RSS feeds based on specific stock related keywords.\n\n**Configuration:**\n- **RSS Feed URL:** Generated from Google Alerts using chosen keywords (e.g., `IPO`, `stock acquisition`, `company merger`, or specific company names like `AAPL`, `NVDA`, etc.)\n"
},
"typeVersion": 1
},
{
"id": "c17cce05-0f63-47ee-abdf-e5c016819766",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1940,
140
],
"parameters": {
"color": 7,
"width": 560,
"height": 840,
"content": "### 🔗 Merge & Extract Real URL\n\n**Function:** \nAfter collecting articles from multiple RSS Feed nodes, this step merges the data and **extracts the actual article URL**, since Google Alerts RSS provides redirect URLs (e.g., `https://www.google.com/url?...`).\n\n**Processing Steps:**\n- Use a **Merge** node to combine outputs from multiple RSS nodes.\n- Use a **Function** node to:\n - Parse the `link` field from the RSS item.\n - Extract the real URL from the `url` query parameter of Google's redirect link.\n- Save data to **Google Sheets**\n"
},
"typeVersion": 1
},
{
"id": "134bf506-303f-45aa-a659-93c7a9c8252d",
"name": "実際のURLを取得",
"type": "n8n-nodes-base.code",
"position": [
2160,
620
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "return {\n realUrl: $json.link.includes(\"google.com/url\")\n ? decodeURIComponent($json.link.match(/url=([^&]+)/)[1])\n : $json.link\n};\n"
},
"typeVersion": 2
},
{
"id": "6011ec34-cb71-4db6-b3a6-a8a190db78fc",
"name": "条件分岐",
"type": "n8n-nodes-base.if",
"position": [
2760,
620
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "67a8680d-5aca-4e40-9ae7-f91925461807",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Summary }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4a05175a-00ef-42b7-a8f5-87d6d729313f",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2560,
140
],
"parameters": {
"color": 7,
"width": 620,
"height": 840,
"content": "### 📄 Extract Content (Jina AI)\n\n**Function:** \nThis step extracts the **main content** (article body) from the real URL using **Jina AI’s article reader API**.\n\n**Processing Steps:**\n- Use an **IF node** to check whether the article already contains extracted content.\n - **If content exists:** Do nothing.\n - **If content is empty or missing:** Continue to next step.\n- Use **Jina AI API** to extract the full article content from the `realUrl`.\n\n**Output:**\n- The full article text is stored in a field such as `extractedContent` or `fullText`.\n- This text will be passed to the summarization step."
},
"typeVersion": 1
},
{
"id": "cdf4b5fd-8da9-49d4-a79b-cfb6bcf4dac3",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
3200,
140
],
"parameters": {
"color": 7,
"width": 440,
"height": 840,
"content": "### 🧠 Summarize & Analyze (LLM via OpenRouter)\n\n**Function:** \nThis node uses a **Large Language Model (LLM)** via the **OpenRouter API** to summarize and analyze the extracted article content. The goal is to turn raw text into concise, actionable insights.\n\n- You can customize the **system message** and **user prompt** to suit your use case.\n- **Model**: Choose from a variety of models via OpenRouter (GPT-4, Claude, etc.).\n\n**Output:**\n- `summary`: A brief overview of the article.\n- `analysis`: Optional insight or investment angle.\n"
},
"typeVersion": 1
},
{
"id": "f71646be-296c-47d0-9443-126c03405faa",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
3700,
140
],
"parameters": {
"color": 7,
"width": 440,
"height": 840,
"content": "### 🗂️ Save to Google Sheets and Send to Telegram\nThis step saves the results of the summarization and analysis into the existing **Google Sheets database** to maintain a structured log of processed news.\n\n### 📲 Send to Telegram\nDelivers the summarized news and analysis via **Telegram Bot API** for real-time alerts.\n"
},
"typeVersion": 1
},
{
"id": "ce580e6b-e954-4cf0-a55b-f9e67be8a905",
"name": "株式取得",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1580,
440
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
},
{
"id": "d64cf706-d073-4d1a-a793-4ab66a32da28",
"name": "自社株買い",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1580,
620
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
},
{
"id": "1a3e5030-0b82-4649-910f-bfc8d0a28866",
"name": "NVDA株",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1580,
800
],
"parameters": {
"options": {}
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"connections": {
"6011ec34-cb71-4db6-b3a6-a8a190db78fc": {
"main": [
[
{
"node": "f00e3efd-e11e-4340-adef-c87b01c4818c",
"type": "main",
"index": 0
}
],
[
{
"node": "b9d23403-da7b-4c43-a6b4-aeaa38ac6e2d",
"type": "main",
"index": 0
}
]
]
},
"f4d18c3e-7ed8-44d8-b699-82c6923e642f": {
"main": [
[
{
"node": "134bf506-303f-45aa-a659-93c7a9c8252d",
"type": "main",
"index": 0
}
]
]
},
"f86e1a17-48b9-4a3b-a428-b4e6edc27d6f": {
"main": [
[
{
"node": "f49aa596-c969-4c4f-b466-79f962c2a658",
"type": "main",
"index": 0
}
]
]
},
"1a3e5030-0b82-4649-910f-bfc8d0a28866": {
"main": [
[
{
"node": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
"type": "main",
"index": 2
}
]
]
},
"134bf506-303f-45aa-a659-93c7a9c8252d": {
"main": [
[
{
"node": "b4739068-769f-4638-83cf-94a7c611caad",
"type": "main",
"index": 0
}
]
]
},
"d64cf706-d073-4d1a-a793-4ab66a32da28": {
"main": [
[
{
"node": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
"type": "main",
"index": 1
}
]
]
},
"f00e3efd-e11e-4340-adef-c87b01c4818c": {
"main": [
[
{
"node": "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f",
"type": "main",
"index": 0
}
]
]
},
"966d4fb2-39e1-4e8f-a6bc-847f49e2f6f0": {
"main": [
[
{
"node": "1a3e5030-0b82-4649-910f-bfc8d0a28866",
"type": "main",
"index": 0
},
{
"node": "d64cf706-d073-4d1a-a793-4ab66a32da28",
"type": "main",
"index": 0
},
{
"node": "ce580e6b-e954-4cf0-a55b-f9e67be8a905",
"type": "main",
"index": 0
}
]
]
},
"ce580e6b-e954-4cf0-a55b-f9e67be8a905": {
"main": [
[
{
"node": "f4d18c3e-7ed8-44d8-b699-82c6923e642f",
"type": "main",
"index": 0
}
]
]
},
"552b48ff-8921-4878-8c65-4d1f9c63f6e0": {
"main": [
[
{
"node": "6011ec34-cb71-4db6-b3a6-a8a190db78fc",
"type": "main",
"index": 0
}
]
]
},
"b94dff41-913d-4e8b-9ea8-3fe9d36041ab": {
"ai_languageModel": [
[
{
"node": "f86e1a17-48b9-4a3b-a428-b4e6edc27d6f",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b4739068-769f-4638-83cf-94a7c611caad": {
"main": [
[
{
"node": "552b48ff-8921-4878-8c65-4d1f9c63f6e0",
"type": "main",
"index": 0
}
]
]
},
"f49aa596-c969-4c4f-b466-79f962c2a658": {
"main": [
[
{
"node": "2dc342e9-9f0b-4f1e-8889-60b61bcb42f2",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 仮想通貨取引, AI要約
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
AI・SNS・WhatsAppリンクを活用したローカル事業者リードジェネレーター
AI、ソーシャルメディア、WhatsAppリンクを使ったローカルビジネスの自動リード生成
If
Code
Limit
+
If
Code
Limit
29 ノードBudi SJ
リード獲得
毎日の WhatsApp グループ スマート分析:GPT-4.1 による分析と音声メッセージの transcrição
毎日の WhatsApp グループ インタラクティブ分析:GPT-4.1 分析と音声メッセージ文字起こし
If
Set
Code
+
If
Set
Code
52 ノードDaniel Lianes
その他
SOL/USDTマルチタイムフレームAI市場解析器&取引システム(Telegram承認含む)
Gemini AI、多時間枠分析、AFK Cryptoを使ってSolana取引を自動化する
If
Code
Wait
+
If
Code
Wait
56 ノードJeff
仮想通貨取引
TelegramとSheetsにリアルタイムで更新されるスマートPOSシステム
Web POSインターフェース、AIレポート、Telegramアラート、Sheetsを使用した注文書の作成
Code
Wait
Webhook
+
Code
Wait
Webhook
16 ノードBudi SJ
顧客管理
TelegramのDOI URL経由で研究論文をZoteroに自動インポートする
Telegramから研究論文をZoteroにインポート(AI要約付)
If
Set
Code
+
If
Set
Code
25 ノードBudi SJ
AI要約
AI駆動のGoogle Mapsビジネスデータスクレイピングとスプレッドシート出力
AIを基盤としたGoogle Mapsビジネスデータの収集、データの充実化、スプレッドシートへのエクスポートをサポート
If
Code
Wait
+
If
Code
Wait
25 ノードMsaid Mohamed el hadi
リード獲得
ワークフロー情報
難易度
上級
ノード数22
カテゴリー2
ノードタイプ12
作成者
Budi SJ
@budisjI’m a Product Designer who also works as an Automation Developer. With a background in product design and systems thinking, I build user-centered workflows. My focus is on helping teams and businesses work more productively through impactful automation systems.
外部リンク
n8n.ioで表示 →
このワークフローを共有