Automatisierte Überwachung wissenschaftlicher Artikel mit PDF-Vektoren, GPT-3.5 und Slack-Benachrichtigungen
Dies ist ein Personal Productivity, Multimodal AI-Bereich Automatisierungsworkflow mit 10 Nodes. Hauptsächlich werden Set, Code, Slack, OpenAi, EmailSend und andere Nodes verwendet. Automatisierte Überwachung wissenschaftlicher Artikel mit PDF-Vektoren, GPT-3.5 und Slack-Benachrichtigungen
- •Slack Bot Token oder Webhook URL
- •OpenAI API Key
Verwendete Nodes (10)
{
"meta": {
"instanceId": "placeholder"
},
"nodes": [
{
"id": "config-note",
"name": "Bot-Konfiguration",
"type": "n8n-nodes-base.stickyNote",
"position": [
250,
150
],
"parameters": {
"content": "## Paper Monitoring Bot\n\nMonitors these topics:\n- Machine Learning\n- Neural Networks\n- Computer Vision\n\nRuns: Daily at 9 AM"
},
"typeVersion": 1
},
{
"id": "schedule-trigger",
"name": "Täglicher Zeitplan",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
450,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 24,
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1
},
{
"id": "set-params",
"name": "Suchparameter festlegen",
"type": "n8n-nodes-base.set",
"position": [
650,
300
],
"parameters": {
"values": {
"number": [
{
"name": "daysBack",
"value": 1
}
],
"string": [
{
"name": "searchQueries",
"value": "machine learning,neural networks,computer vision,deep learning"
}
]
}
},
"typeVersion": 1
},
{
"id": "split-queries",
"name": "Suchanfragen aufteilen",
"type": "n8n-nodes-base.code",
"position": [
850,
300
],
"parameters": {
"functionCode": "const queries = $json.searchQueries.split(',').map(q => q.trim());\nreturn queries.map(query => ({ query }));"
},
"typeVersion": 1
},
{
"id": "pdfvector-search",
"name": "PDF Vector - Neue Publikationen suchen",
"type": "n8n-nodes-pdfvector.pdfVector",
"position": [
1050,
300
],
"parameters": {
"limit": 10,
"query": "={{ $json.query }}",
"fields": [
"title",
"authors",
"abstract",
"date",
"doi",
"pdfUrl",
"totalCitations"
],
"resource": "academic",
"yearFrom": "={{ new Date().getFullYear() }}",
"operation": "search",
"providers": [
"arxiv",
"pubmed",
"semantic_scholar"
]
},
"typeVersion": 1
},
{
"id": "filter-recent",
"name": "Aktuelle Publikationen filtern",
"type": "n8n-nodes-base.code",
"position": [
1250,
300
],
"parameters": {
"functionCode": "// Filter papers from last N days\nconst daysBack = $node['Set Search Parameters'].json.daysBack;\nconst cutoffDate = new Date();\ncutoffDate.setDate(cutoffDate.getDate() - daysBack);\n\nconst recentPapers = $json.filter(paper => {\n const paperDate = new Date(paper.date);\n return paperDate >= cutoffDate;\n});\n\nreturn recentPapers.length > 0 ? recentPapers : [];"
},
"typeVersion": 1
},
{
"id": "summarize-paper",
"name": "Zusammenfassung generieren",
"type": "n8n-nodes-base.openAi",
"position": [
1450,
300
],
"parameters": {
"model": "gpt-3.5-turbo",
"messages": {
"values": [
{
"content": "Summarize this research paper in 2-3 sentences:\n\nTitle: {{ $json.title }}\nAuthors: {{ $json.authors.join(', ') }}\nAbstract: {{ $json.abstract }}\n\nFocus on the main contribution and findings."
}
]
}
},
"typeVersion": 1
},
{
"id": "format-digest",
"name": "Digest formatieren",
"type": "n8n-nodes-base.code",
"position": [
1650,
300
],
"parameters": {
"functionCode": "// Format papers for notification\nconst papers = $items().map(item => {\n const paper = item.json;\n return {\n title: paper.title,\n authors: paper.authors.slice(0, 3).join(', ') + (paper.authors.length > 3 ? ' et al.' : ''),\n summary: paper.summary,\n link: paper.doi ? `https://doi.org/${paper.doi}` : paper.url,\n citations: paper.totalCitations || 0,\n query: paper.originalQuery\n };\n});\n\n// Group by query\nconst grouped = papers.reduce((acc, paper) => {\n if (!acc[paper.query]) acc[paper.query] = [];\n acc[paper.query].push(paper);\n return acc;\n}, {});\n\nreturn { papers: grouped, totalCount: papers.length, date: new Date().toISOString() };"
},
"typeVersion": 1
},
{
"id": "slack-notify",
"name": "Slack-Benachrichtigung senden",
"type": "n8n-nodes-base.slack",
"position": [
1850,
300
],
"parameters": {
"channel": "#research-alerts",
"message": "=📚 *Daily Research Digest* - {{ $now.format('MMM DD, YYYY') }}\n\nFound {{ $json.totalCount }} new papers:\n\n{{ Object.entries($json.papers).map(([query, papers]) => `*${query}:*\\n${papers.map(p => `• ${p.title}\\n _${p.authors}_\\n ${p.summary}\\n 🔗 ${p.link}`).join('\\n\\n')}`).join('\\n\\n---\\n\\n') }}",
"attachments": []
},
"typeVersion": 1
},
{
"id": "email-digest",
"name": "E-Mail-Digest",
"type": "n8n-nodes-base.emailSend",
"position": [
1850,
450
],
"parameters": {
"html": "=<h2>Daily Research Digest</h2>\n<p>Found {{ $json.totalCount }} new papers</p>\n\n{{ Object.entries($json.papers).map(([query, papers]) => \n `<h3>${query}</h3>\n ${papers.map(p => \n `<div style=\"margin-bottom: 20px;\">\n <h4>${p.title}</h4>\n <p><em>${p.authors}</em></p>\n <p>${p.summary}</p>\n <p><a href=\"${p.link}\">Read Paper</a> | Citations: ${p.citations}</p>\n </div>`\n ).join('')}`\n).join('\\n') }}",
"subject": "=Daily Research Digest - {{ $now.format('MMM DD, YYYY') }}",
"toEmail": "research-team@company.com"
},
"typeVersion": 1
}
],
"connections": {
"format-digest": {
"main": [
[
{
"node": "slack-notify",
"type": "main",
"index": 0
},
{
"node": "email-digest",
"type": "main",
"index": 0
}
]
]
},
"split-queries": {
"main": [
[
{
"node": "pdfvector-search",
"type": "main",
"index": 0
}
]
]
},
"schedule-trigger": {
"main": [
[
{
"node": "set-params",
"type": "main",
"index": 0
}
]
]
},
"summarize-paper": {
"main": [
[
{
"node": "format-digest",
"type": "main",
"index": 0
}
]
]
},
"filter-recent": {
"main": [
[
{
"node": "summarize-paper",
"type": "main",
"index": 0
}
]
]
},
"set-params": {
"main": [
[
{
"node": "split-queries",
"type": "main",
"index": 0
}
]
]
},
"pdfvector-search": {
"main": [
[
{
"node": "filter-recent",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Persönliche Produktivität, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
PDF Vector
@pdfvectorA fully featured PDF APIs for developers - Parse any PDF or Word document, extract structured data, and access millions of academic papers - all through simple APIs.
Diesen Workflow teilen