Analyse et notation de actions par IA avec envoi de rapports via Gmail
Ceci est unCrypto Trading, AI RAGworkflow d'automatisation du domainecontenant 24 nœuds.Utilise principalement des nœuds comme Gmail, Markdown, Agent, HttpRequestTool, ToolThink. Système d'analyse boursière par IA, avec notation par IA et fonctionnalité d'envoi de rapports Gmail
- •Compte Google et informations d'identification Gmail API
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
- •Informations de connexion à la base de données PostgreSQL
- •URL et Clé API Supabase
Nœuds utilisés (24)
Catégorie
{
"meta": {
"instanceId": "e7ccf4281d5afb175c79c02db95b45f15d5b53862cb6bc357c5e5bc26567f35c",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "ec0ab7b1-7f50-45d0-aeb8-147f525aa40c",
"name": "Think",
"type": "@n8n/n8n-nodes-langchain.toolThink",
"position": [
1264,
464
],
"parameters": {},
"typeVersion": 1
},
{
"id": "631a10cf-d3d5-4f0d-9831-3b3775c76e38",
"name": "Supabase Vector Store1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
992,
464
],
"parameters": {
"mode": "retrieve-as-tool",
"topK": 5,
"options": {},
"tableName": {
"__rl": true,
"mode": "list",
"value": "danelfin",
"cachedResultName": "danelfin"
},
"useReranker": true,
"toolDescription": "Work with data in supabase to understand danelfin scoring and strategy",
"includeDocumentMetadata": false
},
"credentials": {
"supabaseApi": {
"id": "4TXwWjRCifw2A3yw",
"name": "Supabase tm"
}
},
"typeVersion": 1.3
},
{
"id": "0295201f-5b30-4bb4-bacd-f5ed57a76ab2",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
960,
624
],
"parameters": {
"options": {
"dimensions": 1536
}
},
"credentials": {
"openAiApi": {
"id": "OQJASLp1qn1StvpI",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "21b0a10e-69cf-4ba7-b1b8-7581900f242e",
"name": "Reranker Cohere",
"type": "@n8n/n8n-nodes-langchain.rerankerCohere",
"position": [
1120,
640
],
"parameters": {
"modelName": "rerank-english-v3.0"
},
"credentials": {
"cohereApi": {
"id": "PCdrjFiCsNkbtU2E",
"name": "CohereApi account"
}
},
"typeVersion": 1
},
{
"id": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"name": "Requête Danelfin",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
624,
144
],
"parameters": {
"text": "=Manage it with the strategy Agent",
"options": {
"systemMessage": "=# You are an expert of making request to an api that retrieves you financial data, YOU ARE NOT A CHATBOT, YOUR ANSWERS HAVE ALWAYS TO BE CONCLUSIVE\n\n\n# Danelfin REST API Reference\n\n## Authentication\n- Header: `x-api-key: {API_KEY}`\n- Base URL: `https://apirest.danelfin.com`\n\n## Endpoints\n- `/ranking` - GET ticker scores/rankings\n- `/sectors` - GET sector list\n- `/sectors/{slug}` - GET sector history\n- `/industries` - GET industry list \n- `/industries/{slug}` - GET industry history\n\n## /ranking Parameters\n**Required:** At least one of `ticker` OR `date`\n\n- `date` - YYYY-MM-DD format\n- `ticker` - Symbol (e.g. AAPL)\n- `market` - Exchange filter (NYSE, NASDAQ)\n- `aiscore`, `fundamental`, `technical`, `sentiment`, `low_risk` - Exact score 1-10\n- `*_min` versions - Minimum thresholds 1-10\n- `buy_track_record`, `sell_track_record` - 1/0 boolean\n- `sector` - Sector slug\n- `industry` - Industry slug\n- `asset` - stock/etf\n- `fields` - Comma-separated field list\n\n## Response Formats\n- With ticker: `{date: {scores}}`\n- Without ticker: `{date: {ticker: {scores}}}`\n- Score filter: `{ticker: {scores}}`\n\n## Score Fields\n- `aiscore` - AI Score 1-10\n- `technical` - Technical Score 1-10\n- `fundamental` - Fundamental Score 1-10\n- `sentiment` - Sentiment Score 1-10\n- `low_risk` - Low-Risk Score 1-10\n- `buy_track_record` - Boolean\n- `sell_track_record` - Boolean\n\n## Processing Rules\n1. Parse user intent → extract date, ticker, filters\n2. Validate ticker OR date present (default to today if neither)\n3. Build query string\n4. Send GET request with API key header\n5. Handle errors: 400 = bad params, 403 = auth fail\n6. Convert string scores to integers\n7. Sort by aiscore descending unless specified\n8. Return formatted results\n\n## Query Examples\n- Ticker history: `?ticker=AAPL`\n- Top 100 today: `?date={{ new Date().toISOString().split('T')[0] }}`\n- Score filter: `?date={{ new Date().toISOString().split('T')[0] }}&aiscore=10`\n- Sector filter: `?date={{ new Date().toISOString().split('T')[0] }}§or=utilities&low_risk_min=5`\n\n## Error Codes\n- 200: Success\n- 400: Bad request - fix params\n- 403: Auth failed - abort\n\n## The http tool gives you acces to all 3 different endpoints\n\n## You must call the supabase RAG tool that gives you knowledge of Danelfin technology and strategy\n\n## Your current timestamp is {{ $now }}, by default always make queries from yesterday or the previous days where the market was opened. \n\n## If you have an error by consulting a stock scores, d'ont consult the one from the previous year, consult the one from the past day\n\n# Output: You always have to make a full deep report on the user query\n\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "5111ce59-f32a-47d8-a16d-eff54cdc0d4a",
"name": "Classement",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
336,
464
],
"parameters": {
"url": "https://apirest.danelfin.com/ranking",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', ``, 'string') }}"
},
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
},
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters2_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters2_Value', ``, 'string') }}"
}
]
},
"toolDescription": "ranking endpoint"
},
"credentials": {
"httpHeaderAuth": {
"id": "WtAyYH2L9Z9enZqX",
"name": "danelfin"
}
},
"typeVersion": 4.2
},
{
"id": "2b8207dd-aa9c-4032-a4d0-fc98bfa59370",
"name": "Secteurs",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
448,
464
],
"parameters": {
"url": "https://apirest.danelfin.com/sectors",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', ``, 'string') }}"
},
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
},
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters2_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters2_Value', ``, 'string') }}"
}
]
},
"toolDescription": "sectors endpoint"
},
"credentials": {
"httpHeaderAuth": {
"id": "WtAyYH2L9Z9enZqX",
"name": "danelfin"
}
},
"typeVersion": 4.2
},
{
"id": "baf0f5de-3629-4f26-8a2e-3195f4928c78",
"name": "Industries",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
544,
464
],
"parameters": {
"url": "https://apirest.danelfin.com/industries",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', ``, 'string') }}"
},
{
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Name', ``, 'string') }}",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
}
]
},
"toolDescription": "industries endpoint"
},
"credentials": {
"httpHeaderAuth": {
"id": "WtAyYH2L9Z9enZqX",
"name": "danelfin"
}
},
"typeVersion": 4.2
},
{
"id": "b3ff8d0f-1298-4dd9-ac16-e1221a43bd17",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-48
],
"parameters": {
"color": 4,
"width": 1352,
"height": 792,
"content": "# Main Agent /danelfin scoring"
},
"typeVersion": 1
},
{
"id": "a15112eb-32ba-4d73-a2ee-8f1d388052d8",
"name": "Envoyer le rapport",
"type": "n8n-nodes-base.gmail",
"position": [
1200,
144
],
"webhookId": "f6586c17-da23-454b-adad-6d02fc79ec4b",
"parameters": {
"sendTo": "paul@taskmorphr.com",
"message": "={{ $json.data }}",
"options": {
"appendAttribution": false
},
"subject": "Report"
},
"credentials": {
"gmailOAuth2": {
"id": "zDJ58xrpmivGPuAW",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "21e95e0c-2774-481b-a546-8313d841c848",
"name": "À réception d'un message chat",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
48,
144
],
"webhookId": "730fb36d-bd91-468d-8eab-9d028698b16c",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "99a81cec-74ff-4962-ab52-9f22b9d89713",
"name": "Mémoire de chat Postgres1",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"position": [
192,
416
],
"parameters": {},
"credentials": {
"postgres": {
"id": "44lwBYXMr6Vx0Fmq",
"name": "Postgres account"
}
},
"typeVersion": 1.3
},
{
"id": "875650d8-6399-46d2-b1e3-a63ee762ad2b",
"name": "Définir un modèle de raisonnement",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
80,
416
],
"parameters": {
"model": "x-ai/grok-4",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "1t22HwKbMlWsWxcJ",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "9ef4549b-449c-41bd-8a3d-b79fe4b8cbd0",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
80
],
"parameters": {
"color": 5,
"width": 288,
"height": 208,
"content": "### Ask about any stock, industries, sectors, potential trade, etc"
},
"typeVersion": 1
},
{
"id": "b492be0c-f316-4c1f-af73-2cde40a7efcb",
"name": "Markdown vers HTML",
"type": "n8n-nodes-base.markdown",
"position": [
1008,
144
],
"parameters": {
"mode": "markdownToHtml",
"options": {},
"markdown": "={{ $json.output }}"
},
"typeVersion": 1
},
{
"id": "862c2311-fd44-43cd-b288-460a3595ee8b",
"name": "Supabase Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
496,
896
],
"parameters": {
"mode": "insert",
"options": {},
"tableName": {
"__rl": true,
"mode": "list",
"value": "danelfin",
"cachedResultName": "danelfin"
}
},
"credentials": {
"supabaseApi": {
"id": "4TXwWjRCifw2A3yw",
"name": "Supabase tm"
}
},
"typeVersion": 1.3
},
{
"id": "0d2987bc-01ec-4c6a-b263-48f4f495323a",
"name": "Chargeur de données par défaut",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
640,
1120
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{}
]
}
},
"dataType": "binary",
"textSplittingMode": "custom"
},
"typeVersion": 1.1
},
{
"id": "f70e3c0a-e4e6-4c44-a24e-49e0f4fcd854",
"name": "Séparateur de texte récursif",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
688,
1280
],
"parameters": {
"options": {
"splitCode": "markdown"
},
"chunkSize": 700
},
"typeVersion": 1
},
{
"id": "e3689a2b-5c64-473c-869a-45dae5997cb6",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
368,
1136
],
"parameters": {
"options": {
"dimensions": 1536
}
},
"credentials": {
"openAiApi": {
"id": "OQJASLp1qn1StvpI",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "56b19f7f-8451-4c39-9349-737ce968bd4c",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
800
],
"parameters": {
"color": 7,
"width": 1136,
"height": 660,
"content": "## Load sata to vector database"
},
"typeVersion": 1
},
{
"id": "514b7f03-e91c-49a3-bc46-da2f4ab75a73",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
896
],
"parameters": {
"width": 416,
"height": 272,
"content": "## Load a pdf with the following information\n\nhttps://docs.google.com/document/d/1wxnTMb4ZwBq1X25QXkvh49WhWz3-DYT2IdbEa8K6opw/edit?usp=sharing\n\nhttps://docs.google.com/document/d/1U6pkrK6sIXuQ9plLHum6puTVVEv-p6ZvP0NGqKlSS5s/edit?usp=sharing"
},
"typeVersion": 1
},
{
"id": "8bca3f8f-0309-446b-9e84-41855e0075f9",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-688,
-48
],
"parameters": {
"color": 6,
"width": 640,
"height": 2240,
"content": "# Workflow Description and Setup Guide\n\nThis workflow provides comprehensive AI-driven stock analysis, generating detailed deep reports by leveraging advanced vector-based data retrieval and API integrations for precise financial analytics using Danelfin scoring and strategy.\n\n---\n\n## Overview\n\nThis workflow automates stock analysis utilizing:\n\n* **AI-driven scoring and sector insights** (Danelfin configuration)\n* **Vector-based data retrieval** (Supabase)\n* **Deep analytical reports**\n\n---\n\n## Key Components and API Integrations\n\n### 1. Danelfin AI Stock Analysis API\n\nProvides advanced stock scores, rankings, and sector insights.\n\n* **Endpoints:**\n\n * `/ranking`: Stock rankings and scores\n * `/sectors`: Sector information\n * `/industries`: Industry details\n\n### 2. Supabase Vector Store\n\nVector embedding storage and quick data retrieval.\n\n---\n\n## Workflow Steps\n\n### Initialization\n\n1. **Chat Trigger**: Activates when a message requesting stock analysis is received.\n\n### Stock Analysis and Deep Reporting\n\n2. **Main AI Agent**: Processes the query, retrieves relevant data from Danelfin, and generates deep analytical reports.\n\n3. **Supabase Vector Store**: Facilitates efficient data retrieval using embeddings.\n\n### Reporting\n\n4. **Markdown Conversion**: Transforms analysis into a readable HTML format.\n\n5. **Email Reporting**: Sends detailed reports via Gmail.\n\n---\n\n## Setup Instructions\n\n### Prerequisites\n\n* Obtain API Keys for Supabase and Danelfin.\n\n### Configuration Steps\n\n1. **Set API Keys**:\n\n * Supabase API credentials for vector storage.\n * Danelfin API credentials for stock analysis.\n\n2. **Gmail API Credentials**:\n\n * Configure Gmail node for sending reports.\n\n### Running the Workflow\n\n* Triggered automatically by chat messages requesting analysis.\n* Reports sent directly via email.\n\n---\n\nThis setup ensures precise, AI-driven stock analysis delivered clearly through automated deep reporting.\n"
},
"typeVersion": 1
},
{
"id": "5cd42ade-bb36-49d9-b2c1-29cf96b581d8",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1456,
16
],
"parameters": {
"color": 3,
"width": 576,
"height": 560,
"content": "## Need a tailor-made workflow? Tell me about your business and get a free proposal:\n\n**[Start here → Custom Automation Form](https://taskmorphr.com/contact)**\n\n---\n## 📈 Cost-Savings Snapshot \nCurious what automation could save you? \nRun the 60-second calculator:\n\n**[ROI / Cost Comparison](https://taskmorphr.com/cost-comparison)**\n\n---\n### ✉️ Reach me directly \n`paul@taskmorphr.com`"
},
"typeVersion": 1
},
{
"id": "2405dbd4-f266-466f-aab3-8bff9f72871f",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1712,
416
],
"parameters": {
"color": 3,
"width": 224,
"height": 128,
"content": "### 🛠️ Build it yourself \nBrowse every ready-made workflow: \n[Full Template Pack — coming soon](https://n8n.io/creators/diagopl/)\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"ec0ab7b1-7f50-45d0-aeb8-147f525aa40c": {
"ai_tool": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_tool",
"index": 0
}
]
]
},
"5111ce59-f32a-47d8-a16d-eff54cdc0d4a": {
"ai_tool": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_tool",
"index": 0
}
]
]
},
"2b8207dd-aa9c-4032-a4d0-fc98bfa59370": {
"ai_tool": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_tool",
"index": 0
}
]
]
},
"baf0f5de-3629-4f26-8a2e-3195f4928c78": {
"ai_tool": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_tool",
"index": 0
}
]
]
},
"21b0a10e-69cf-4ba7-b1b8-7581900f242e": {
"ai_reranker": [
[
{
"node": "631a10cf-d3d5-4f0d-9831-3b3775c76e38",
"type": "ai_reranker",
"index": 0
}
]
]
},
"879e5393-01ac-4f28-bb89-d57164a49d2e": {
"main": [
[
{
"node": "b492be0c-f316-4c1f-af73-2cde40a7efcb",
"type": "main",
"index": 0
}
]
]
},
"b492be0c-f316-4c1f-af73-2cde40a7efcb": {
"main": [
[
{
"node": "a15112eb-32ba-4d73-a2ee-8f1d388052d8",
"type": "main",
"index": 0
}
]
]
},
"0295201f-5b30-4bb4-bacd-f5ed57a76ab2": {
"ai_embedding": [
[
{
"node": "631a10cf-d3d5-4f0d-9831-3b3775c76e38",
"type": "ai_embedding",
"index": 0
}
]
]
},
"e3689a2b-5c64-473c-869a-45dae5997cb6": {
"ai_embedding": [
[
{
"node": "862c2311-fd44-43cd-b288-460a3595ee8b",
"type": "ai_embedding",
"index": 0
}
]
]
},
"0d2987bc-01ec-4c6a-b263-48f4f495323a": {
"ai_document": [
[
{
"node": "862c2311-fd44-43cd-b288-460a3595ee8b",
"type": "ai_document",
"index": 0
}
]
]
},
"99a81cec-74ff-4962-ab52-9f22b9d89713": {
"ai_memory": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_memory",
"index": 0
}
]
]
},
"875650d8-6399-46d2-b1e3-a63ee762ad2b": {
"ai_languageModel": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"631a10cf-d3d5-4f0d-9831-3b3775c76e38": {
"ai_tool": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "ai_tool",
"index": 0
}
]
]
},
"21e95e0c-2774-481b-a546-8313d841c848": {
"main": [
[
{
"node": "879e5393-01ac-4f28-bb89-d57164a49d2e",
"type": "main",
"index": 0
}
]
]
},
"f70e3c0a-e4e6-4c44-a24e-49e0f4fcd854": {
"ai_textSplitter": [
[
{
"node": "0d2987bc-01ec-4c6a-b263-48f4f495323a",
"type": "ai_textSplitter",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Trading crypto, RAG IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Paul
@diagoplAutomation expert & n8n power user. I build advanced workflows combining AI, outbound, and business logic. Grab my templates or reach out for custom builds.
Partager ce workflow