This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "LLM && AI Curator",
"nodes": [
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Zwraca aktualn\u0105 dat\u0119 i czas (np. w ISO 8601). U\u017cywane do ustawiania [DATA] w temacie maila oraz okre\u015blania bie\u017c\u0105cego miesi\u0105ca dla deduplikacji artyku\u0142\u00f3w.",
"options": {}
},
"type": "n8n-nodes-base.dateTimeTool",
"typeVersion": 2,
"position": [
1376,
432
],
"id": "fd491d1c-5249-4584-a2c8-3af169852de4",
"name": "get_current_time"
},
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Zapisuje do bazy artyku\u0142y wykorzystane w aktualnej pras\u00f3wce. Przyjmuje tablic\u0119 obiekt\u00f3w {url, title} i dopisuje je do rekord\u00f3w bie\u017c\u0105cego miesi\u0105ca.",
"dataTableId": {
"__rl": true,
"value": "fFlEoKd5pV15ML9r",
"mode": "list",
"cachedResultName": "Articles",
"cachedResultUrl": "/projects/7Qxghf3TTzUDPsic/datatables/fFlEoKd5pV15ML9r"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('url', ``, 'string') }}",
"tile": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('tile', ``, 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "url",
"displayName": "url",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "tile",
"displayName": "tile",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
1504,
432
],
"id": "80b04cf1-6b6b-46e5-be95-a43bfdedbff9",
"name": "save_sent_articles"
},
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Pobiera z bazy list\u0119 artyku\u0142\u00f3w wys\u0142anych w bie\u017c\u0105cym miesi\u0105cu. Zwraca tablic\u0119 obiekt\u00f3w {url, title} do sprawdzania duplikat\u00f3w.",
"operation": "get",
"dataTableId": {
"__rl": true,
"value": "fFlEoKd5pV15ML9r",
"mode": "list",
"cachedResultName": "Articles",
"cachedResultUrl": "/projects/7Qxghf3TTzUDPsic/datatables/fFlEoKd5pV15ML9r"
},
"filters": {
"conditions": [
{
"keyName": "url",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Value', ``, 'string') }}"
}
]
},
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
1632,
432
],
"id": "a3fe5f87-92ce-42a1-bde3-a783f6c6a8ee",
"name": "get_sent_articles"
},
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Wysy\u0142a gotowego maila z pras\u00f3wk\u0105 Tech Brief do Adriana. Przyjmuje parametry subject (temat) i body (tre\u015b\u0107 maila w plaintext/markdown).",
"fromEmail": "adrian@kolegaliterat.pl",
"toEmail": "jawor34@gmail.com",
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
"emailFormat": "both",
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
"html": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('HTML', ``, 'string') }}",
"options": {}
},
"type": "n8n-nodes-base.emailSendTool",
"typeVersion": 2.1,
"position": [
1760,
432
],
"id": "c097692a-3843-4365-9b71-7bbd3410d494",
"name": "send_tech_brief_email",
"credentials": {
"smtp": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
1,
3,
5
],
"triggerAtHour": 8
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-320,
400
],
"id": "697d530b-a3e1-46f8-9765-f17bbfbaf4c3",
"name": "Schedule Trigger"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-5.1",
"mode": "list",
"cachedResultName": "gpt-5.1"
},
"options": {
"responseFormat": "text",
"timeout": 600000
}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
1248,
432
],
"id": "d21b9673-f900-4788-a142-5d64d7087fda",
"name": "GPT 5.1",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "{\n \"post_limit\" : 10\n}\n",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
128,
112
],
"id": "5e7c0f1f-2cfd-48c0-8f78-817caf3da8e2",
"name": "Set Post Limit"
},
{
"parameters": {
"operation": "getAll",
"subreddit": "singularity",
"limit": "={{ $json.post_limit }}",
"filters": {
"category": "top"
}
},
"type": "n8n-nodes-base.reddit",
"typeVersion": 1,
"position": [
352,
-368
],
"id": "041bd314-d6ff-44f3-a9fe-8eb8eb695bb1",
"name": "Visit r/singularity",
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "subreddit, selftext, , title, permalink, url",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
-368
],
"id": "88177c55-5ff9-45f8-80f9-31f837983f06",
"name": "Clean up r/singularity"
},
{
"parameters": {
"operation": "getAll",
"subreddit": "ArtificialInteligence",
"limit": "={{ $json.post_limit }}",
"filters": {
"category": "top"
}
},
"type": "n8n-nodes-base.reddit",
"typeVersion": 1,
"position": [
352,
-176
],
"id": "52bf56b4-cfaa-47b5-9f20-79c692a90377",
"name": "Visit r/ArtificialInteligence",
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "url, permalink, selftext, title",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
-176
],
"id": "1d861dcf-4d0b-40ff-84f8-39d505c9065b",
"name": "Clean up r/ArtificialInteligence"
},
{
"parameters": {
"operation": "getAll",
"subreddit": "Futurology",
"limit": "={{ $json.post_limit }}",
"filters": {
"category": "top"
}
},
"type": "n8n-nodes-base.reddit",
"typeVersion": 1,
"position": [
352,
16
],
"id": "ee2332ef-fddd-49e0-9cd4-b367ad8d4640",
"name": "Visit r/Futurology",
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "subreddit, selftext, , title, permalink, url",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
16
],
"id": "f08e5e36-6bdd-42d9-af70-7bbb2d5c4355",
"name": "Clean up r/Futurology"
},
{
"parameters": {
"operation": "getAll",
"subreddit": "LocalLLaMA",
"limit": "={{ $json.post_limit }}",
"filters": {
"category": "top"
}
},
"type": "n8n-nodes-base.reddit",
"typeVersion": 1,
"position": [
352,
208
],
"id": "3f787279-23be-41cc-9552-aec0332b1ead",
"name": "Visit r/LocalLLaMA",
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "url, permalink, selftext, title",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
208
],
"id": "105905fe-c619-4489-83c1-e61e05437c86",
"name": "Clean up r/LocalLLaMA"
},
{
"parameters": {
"operation": "getAll",
"subreddit": "MachineLearning",
"limit": "={{ $json.post_limit }}",
"filters": {
"category": "top"
}
},
"type": "n8n-nodes-base.reddit",
"typeVersion": 1,
"position": [
352,
400
],
"id": "06ad277e-6f4b-4742-8d22-32e229e43824",
"name": "Visit r/MachineLearning",
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "url, permalink, selftext, title",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
400
],
"id": "728ce390-8b31-4540-842d-ce62a492108c",
"name": "Clean up r/MachineLearning"
},
{
"parameters": {
"operation": "getAll",
"subreddit": "Python",
"limit": "={{ $json.post_limit }}",
"filters": {
"category": "top"
}
},
"type": "n8n-nodes-base.reddit",
"typeVersion": 1,
"position": [
352,
592
],
"id": "6748b81f-6419-483c-bf25-b8373124533a",
"name": "Visit r/Python",
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "url, permalink, selftext, title",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
592
],
"id": "e1068bc1-3f73-460a-b821-30f1180eaf31",
"name": "Clean up r/Python"
},
{
"parameters": {
"method": "POST",
"url": "http://export.arxiv.org/api/query?search_query=%28cat%3Acs.AI+OR+cat%3Acs.LG+OR+cat%3Acs.CL%29+AND+%28all%3A%22large+language+model%22+OR+all%3A%22LLM+agent%22+OR+all%3A%22autonomous+agent%22+OR+all%3A%22workflow+automation%22+OR+all%3A%22process+automation%22+OR+all%3A%22prompt+engineering%22+OR+all%3A%22retrieval+augmented%22+OR+all%3A%22RAG%22+OR+all%3A%22code+generation%22+OR+all%3A%22text-to-image%22+OR+all%3A%22diffusion%22+OR+all%3A%22ComfyUI%22+OR+all%3A%22production+deployment%22+OR+all%3A%22business+application%22%29+ANDNOT+%28all%3A%22theoretical+bound%22+OR+all%3A%22convergence+rate%22+OR+all%3A%22asymptotic+analysis%22+OR+all%3A%22sample+complexity%22%29&start=0&max_results=25&sortBy=submittedDate&sortOrder=descending",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
-96,
784
],
"id": "d770b1e6-cc50-4493-b7bd-b9347ccedd42",
"name": "Query arxiv"
},
{
"parameters": {
"options": {
"ignoreAttrs": false,
"normalize": true
}
},
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
128,
784
],
"id": "d84df407-99cb-4174-895c-2568024d0423",
"name": "Convert"
},
{
"parameters": {
"jsCode": "// 1. Pobieramy dane wej\u015bciowe. Zak\u0142adamy, \u017ce feed wchodzi jako jeden du\u017cy obiekt.\nconst item = $input.first();\nconst feedData = item.json;\n\n// 2. Dobieramy si\u0119 do listy artyku\u0142\u00f3w.\n// \u015acie\u017cka w Twoim JSON to: feed -> entry\n// Zabezpieczamy si\u0119 na wypadek, gdyby 'entry' nie by\u0142o tablic\u0105 (np. przy 1 wyniku)\nlet entries = feedData.feed.entry;\n\nif (!Array.isArray(entries)) {\n entries = [entries];\n}\n\n// 3. Funkcja pomocnicza do czyszczenia tekstu (usuwa \\n i zb\u0119dne spacje)\nconst cleanText = (text) => {\n if (typeof text === 'string') {\n return text\n .replace(/[\\r\\n]+/g, ' ') // Zamie\u0144 znaki nowej linii na spacj\u0119\n .replace(/\\s+/g, ' ') // Usu\u0144 podw\u00f3jne spacje\n .trim(); // Usu\u0144 spacje z pocz\u0105tku i ko\u0144ca\n }\n return text || '';\n};\n\n// 4. Mapujemy dane na format wyj\u015bciowy n8n\n// Ka\u017cdy element tablicy zostanie zwr\u00f3cony jako oddzielny item\nreturn entries.map(entry => {\n return {\n json: {\n id: entry.id,\n title: cleanText(entry.title),\n summary: cleanText(entry.summary)\n }\n };\n});"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
352,
784
],
"id": "46d766b4-785d-479a-aa6c-443dbc1afb1c",
"name": "Clean up arvix Response"
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
576,
784
],
"id": "a70d7297-667c-445f-b6b4-20ae8e39e13b",
"name": "Get all arvix Data"
},
{
"parameters": {
"numberInputs": 7
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
800,
128
],
"id": "cc79d7fa-e17d-4a47-89c4-866991086c77",
"name": "Merge everything!"
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
1024,
208
],
"id": "a6514899-9ce6-4fd7-bbd5-e79ae1b9355c",
"name": "Create one list"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.data.toJsonString() }}",
"options": {
"systemMessage": "Jeste\u015b kuratorskim asystentem tworz\u0105cym spersonalizowan\u0105 pras\u00f3wk\u0119 tech/AI dla specjalisty automatyzacji i generatywnej AI.\n\n# PROFIL ODBIORCY\n- W\u0142a\u015bciciel Point17Labs, specjalista AI w BaseLinker\n- Focus: praktyczne zastosowania AI, automatyzacja proces\u00f3w, agenci LLM\n- Background: 8 lat gamedev \u2192 obecnie tech/AI\n- Style: g\u0142\u0119bia > powierzchowno\u015b\u0107, praktyka > teoria, zero buzzword\u00f3w\n- Antypatterny: clickbait, drama, puste \"AI will change everything\"\n\n# NARZ\u0118DZIA (U\u017bYWAJ \u015aWIADOMIE)\n\nMasz do dyspozycji 4 narz\u0119dzia (node\u2019y n8n):\n\n1. `get_current_time` \n Zwraca aktualn\u0105 dat\u0119 i czas (np. w ISO 8601). \n U\u017cywaj do:\n - wstawienia [DATA] w temacie maila,\n - okre\u015blenia \u201ebie\u017c\u0105cego miesi\u0105ca\u201d dla deduplikacji artyku\u0142\u00f3w,\n - wstawienia [data] w sekcji \u201eNast\u0119pna pras\u00f3wka: [data]\u201d.\n\n2. `get_sent_articles` \n Pobiera z bazy list\u0119 artyku\u0142\u00f3w wys\u0142anych w bie\u017c\u0105cym miesi\u0105cu. \n Zwraca tablic\u0119 obiekt\u00f3w `{url, title}` do sprawdzania duplikat\u00f3w.\n\n3. `save_sent_articles` \n Zapisuje do bazy artyku\u0142y wykorzystane w aktualnej pras\u00f3wce. \n Przyjmuje tablic\u0119 obiekt\u00f3w `{url, title}` i dopisuje je do rekord\u00f3w bie\u017c\u0105cego miesi\u0105ca.\n\n4. `send_tech_brief_email` \n Wysy\u0142a gotowego maila z pras\u00f3wk\u0105 Tech Brief do Adriana. \n Przyjmuje parametry:\n - `subject` \u2013 temat maila,\n - `body` \u2013 tre\u015b\u0107 maila (plaintext/markdown).\n\n# WYSOKOPOZIOMOWY WORKFLOW\n\n1. Wywo\u0142aj `get_current_time` \u2192 ustal:\n - dat\u0119 do `[DATA]` w temacie,\n - aktualny miesi\u0105c dla deduplikacji.\n\n2. Wywo\u0142aj `get_sent_articles` \u2192 pobierz list\u0119 `{url, title}` z bie\u017c\u0105cego miesi\u0105ca.\n\n3. Wej\u015bciem jest JSON z postami Reddit + arXiv w jednej strukturze. \n Najpierw:\n - przefiltruj JSON: usu\u0144 wszystkie wpisy, kt\u00f3rych `url` ju\u017c jest w bazie z kroku 2.\n\n4. Na przefiltrowanej li\u015bcie:\n - oce\u0144 ka\u017cdy artyku\u0142 w skali 1\u201310 (wewn\u0119trznie),\n - wybierz \u0142\u0105cznie 5\u20137 najlepszych do maila.\n\n5. Zbuduj gotowy mail po polsku (markdown i html), dok\u0142adnie w opisanej ni\u017cej strukturze. \n Zwr\u00f3\u0107 **tylko** tre\u015b\u0107 maila (bez komentarzy/preambu\u0142y).\n\n6. Je\u015bli w mailu s\u0105 artyku\u0142y:\n - wywo\u0142aj `save_sent_articles` z list\u0105 `{url, title}` artyku\u0142\u00f3w u\u017cytych w mailu.\n\n7. Na ko\u0144cu wywo\u0142aj `send_tech_brief_email` z:\n - `subject`: tematem maila,\n - `body`: pe\u0142n\u0105 tre\u015bci\u0105 maila.\n\n8. Je\u015bli po deduplikacji nie zosta\u0142 **\u017caden** nowy artyku\u0142:\n - nie licz scoringu,\n - wygeneruj specjalny \"pusty\" mail (patrz sekcja \u201eJe\u015bli wszystkie artyku\u0142y s\u0105 duplikatami\u201d),\n - **nie** wywo\u0142uj `save_sent_articles`,\n - mimo wszystko wywo\u0142aj `send_tech_brief_email` z tym \u201epustym\u201d mailem.\n\n# ZASADY SELEKCJI\n\n## Reddit \u2013 wybierz 2\u20134 najlepsze\n\nPRIORYTETYZUJ (score 8\u201310/10):\n- Praktyczne implementacje z kodem / case study\n- Niestandardowe zastosowania AI w biznesie i automatyzacji\n- Insights z produkcji (co dzia\u0142a / nie dzia\u0142a)\n- Nowe narz\u0119dzia rozwi\u0105zuj\u0105ce konkretny problem\n- Architektura system\u00f3w (agenci, RAG, workflow, orchestration)\n\nODRZU\u0106 automatycznie:\n- Drama/gossip (np. Elon piss drinking)\n- Spekulacje o AGI/singularity bez konkret\u00f3w\n- Clickbaity bez warto\u015bci merytorycznej\n- Podstawowe tutoriale \"hello world\"\n- Polityk\u0119/strategie firm bez technicznego mi\u0119sa\n\n## arXiv \u2013 wybierz 2\u20133 najlepsze\n\nPRIORYTETYZUJ:\n- Praktyczne techniki mo\u017cliwe do przetestowania \"tu i teraz\"\n- Ulepszenia RAG / agents / code generation\n- Podej\u015bcia \"production-ready\"\n- Prace z jasno opisan\u0105 \u015bcie\u017ck\u0105 implementacji\n\nODRZU\u0106:\n- Czysta matematyka bez zastosowania\n- \"We prove convergence...\" bez eksperyment\u00f3w\n- Tylko benchmarki SOTA bez use case\n- Prace, kt\u00f3re sensownie dzia\u0142aj\u0105 tylko na 8\u00d7A100 bez wariantu \u201cmniejszego\u201d\n\n# ZARZ\u0104DZANIE DUPLIKATAMI\n\n**KRYTYCZNE: pracujesz zawsze na bie\u017c\u0105cym miesi\u0105cu (wg `get_current_time`).**\n\nWorkflow deduplikacji:\n\n1. **PRZED SELEKCJ\u0104:**\n - Wywo\u0142aj `get_sent_articles` \u2192 pobierz list\u0119 wszystkich `{url, title}` z bie\u017c\u0105cego miesi\u0105ca.\n\n2. **FILTR JSONA:**\n - Usu\u0144 wszystkie artyku\u0142y, kt\u00f3rych `url` ju\u017c jest w bazie.\n\n3. **NORMALNA SELEKCJA:**\n - Scoring, wyb\u00f3r 5\u20137 artyku\u0142\u00f3w i budowa maila tylko na przefiltrowanej li\u015bcie.\n\n4. **PO STWORZENIU MAILA:**\n - Je\u015bli w mailu s\u0105 nowe artyku\u0142y \u2192 wywo\u0142aj `save_sent_articles` z `{url, title}` z maila.\n\n**Je\u015bli wszystkie artyku\u0142y s\u0105 duplikatami (po filtrze lista jest pusta):** \nWy\u015blij maila (przez `send_tech_brief_email`) z tre\u015bci\u0105:\n\nCze\u015b\u0107 Adrian,\n\nWszystkie artyku\u0142y z dzisiejszego scrapingu by\u0142y ju\u017c w poprzednich pras\u00f3wkach tego miesi\u0105ca.\n\nMo\u017cliwe przyczyny:\n- S\u0142aby tydzie\u0144 na tech Reddit/arXiv\n- Algorytm HOT pokazuje te same popularne posty\n- Twoje filtry s\u0105 bardzo selektywne (to dobrze!)\n\nNast\u0119pna pras\u00f3wka: [data]\n\n---\nNa razie nic ciekawego \ud83e\udd37\n\n`[data]` ustaw na dat\u0119 z `get_current_time` albo na kolejn\u0105 dat\u0119 wysy\u0142ki, je\u015bli workflow j\u0105 dostarcza.\n\n# STRUKTURA MAILA\n\n## Temat maila\n\"\ud83e\udd16 Tech Brief [DATA] - [1-2 s\u0142owa o g\u0142\u00f3wnym temacie]\"\n\n- `[DATA]` = data z `get_current_time` (format dopasowany do workflow, np. 2025-11-21).\n\n## Tre\u015b\u0107 (po polsku, plaintext/markdown, bez dodatkowego komentarza):\n\nCze\u015b\u0107 Adrian,\n\n[Opcjonalnie: 1 zdanie kontekstu je\u015bli jest dominuj\u0105cy motyw dnia]\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udd25 MUST READ (2-3 artyku\u0142y)\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n### 1. [Tytu\u0142]\n**\u0179r\u00f3d\u0142o:** [Reddit: r/subreddit] lub [arXiv: kategorie]\n\n**Dlaczego to czyta\u0107:** [1-2 zdania \u2013 konkretna warto\u015b\u0107]\n\n**Key takeaways:**\n- [Praktyczny insight #1]\n- [Praktyczny insight #2] \n- [Praktyczny insight #3]\n\n**Gdzie to u\u017cy\u0107:** [Konkretne zastosowanie w jego pracy/projektach]\n\n\ud83d\udd17 [Link]\n\n---\n\n[Powt\u00f3rz dla pozosta\u0142ych MUST READ]\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udca1 WARTO PRZEJRZE\u0106 (2-3 artyku\u0142y)\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n### [Tytu\u0142]\n**TL;DR:** [1-2 zdania + konkretna warto\u015b\u0107]\n\ud83d\udd17 [Link]\n\n---\n\n[Powt\u00f3rz dla pozosta\u0142ych]\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83c\udfb2 WILDCARD (0-1 artyku\u0142)\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n[Co\u015b niestandardowego, mo\u017ce zaskoczy\u0107, poza g\u0142\u00f3wnym nurtem \u2013 max 1 pozycja]\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n**Czas czytania:** [wyestumuj czas czytania)\n**Przegapione:** [X] artyku\u0142\u00f3w by\u0142o blisko (je\u015bli by\u0142y sensowne, ale nie wesz\u0142y do topki)\n\n---\nPowodzenia w pracy \ud83d\ude80\n\n# KRYTERIA LICZBOWE\n\n**TOTAL: 5\u20137 artyku\u0142\u00f3w w mailu**\n- MUST READ: 2\u20133 (najwy\u017cszy priorytet)\n- WARTO PRZEJRZE\u0106: 2\u20133 (solidny \u015bredni priorytet) \n- WILDCARD: 0\u20131 (niszowe/ciekawe)\n\nProporcje:\n- Je\u015bli Reddit ma lepszy content \u2192 wi\u0119cej z Reddit\n- Je\u015bli arXiv ma mocne prace \u2192 wi\u0119cej z arXiv\n- Idea\u0142: ~50/50 Reddit + arXiv, ale **jako\u015b\u0107 > proporcje**\n\n## Scoring (wewn\u0119trzny, nie pokazuj w mailu):\n\n- 9\u201310: MUST READ (praktyczny game-changer)\n- 7\u20138: WARTO PRZEJRZE\u0106 (solidny content)\n- 6: WILDCARD (je\u015bli unikalny k\u0105t)\n- <6: odrzu\u0107\n\n# J\u0118ZYK I TON\n\n- Polski, bezpo\u015bredni, konkretny\n- Zwracaj si\u0119 \"ty\"\n- Kr\u00f3tkie, tre\u015bciwe zdania\n- Zero corporate speak, zero buzzword\u00f3w\n- Emoji tylko funkcjonalne (\ud83d\udd25\ud83d\udca1\ud83d\udd17\ud83c\udfb2), nie dla ozdoby\n\n# RED FLAGS \u2013 DO ODRZUCENIA\n\nReddit:\n- r/singularity drama (np. Elon piss) \u2192 SKIP\n- \"AI will replace everyone\" bez mi\u0119sa technicznego \u2192 SKIP\n- Tylko upvote\u2019y, brak g\u0142\u0119bi technicznej \u2192 SKIP\n\narXiv:\n- Abstract pe\u0142en matematyki bez \"we demonstrate\" / \"we evaluate\" \u2192 SKIP\n- Brak eksperyment\u00f3w, czysta teoria \u2192 SKIP\n- Sekcja \"future work\" wa\u017cniejsza ni\u017c wyniki \u2192 SKIP\n\n# KONTEKST CZASOWY (NIE ZMIENIA STRUKTURY MAILA)\n\nMail idzie 3\u00d7 w tygodniu (pon/\u015br/pt). Mo\u017cesz jedynie lekko dostosowa\u0107 komentarz otwieraj\u0105cy:\n- Poniedzia\u0142ek: bardziej praktyczny, \"na start tygodnia\"\n- \u015aroda: mix praktyka + szersza perspektywa\n- Pi\u0105tek: l\u017cejszy ton, mo\u017ce troch\u0119 wi\u0119cej research/\u201cweekend reading\u201d\n\n# OUTPUT\n\n1. Zbuduj **tylko** tre\u015b\u0107 maila (markdown i html).\n2. Nast\u0119pnie wywo\u0142aj `send_tech_brief_email` z tematem i tre\u015bci\u0105 i wy\u015blij maila!\n3. Je\u015bli w mailu s\u0105 artyku\u0142y \u2192 wywo\u0142aj `save_sent_articles` z `{url, title}`.\n"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3,
"position": [
1432,
208
],
"id": "5c0b2292-6700-4cdd-bd7a-c15f745b3999",
"name": "Curator"
}
],
"connections": {
"get_current_time": {
"ai_tool": [
[
{
"node": "Curator",
"type": "ai_tool",
"index": 0
}
]
]
},
"save_sent_articles": {
"ai_tool": [
[
{
"node": "Curator",
"type": "ai_tool",
"index": 0
}
]
]
},
"get_sent_articles": {
"ai_tool": [
[
{
"node": "Curator",
"type": "ai_tool",
"index": 0
}
]
]
},
"send_tech_brief_email": {
"ai_tool": [
[
{
"node": "Curator",
"type": "ai_tool",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Query arxiv",
"type": "main",
"index": 0
},
{
"node": "Set Post Limit",
"type": "main",
"index": 0
}
]
]
},
"GPT 5.1": {
"ai_languageModel": [
[
{
"node": "Curator",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set Post Limit": {
"main": [
[
{
"node": "Visit r/singularity",
"type": "main",
"index": 0
},
{
"node": "Visit r/ArtificialInteligence",
"type": "main",
"index": 0
},
{
"node": "Visit r/Futurology",
"type": "main",
"index": 0
},
{
"node": "Visit r/LocalLLaMA",
"type": "main",
"index": 0
},
{
"node": "Visit r/MachineLearning",
"type": "main",
"index": 0
},
{
"node": "Visit r/Python",
"type": "main",
"index": 0
}
]
]
},
"Visit r/singularity": {
"main": [
[
{
"node": "Clean up r/singularity",
"type": "main",
"index": 0
}
]
]
},
"Clean up r/singularity": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 0
}
]
]
},
"Visit r/ArtificialInteligence": {
"main": [
[
{
"node": "Clean up r/ArtificialInteligence",
"type": "main",
"index": 0
}
]
]
},
"Clean up r/ArtificialInteligence": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 1
}
]
]
},
"Visit r/Futurology": {
"main": [
[
{
"node": "Clean up r/Futurology",
"type": "main",
"index": 0
}
]
]
},
"Clean up r/Futurology": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 2
}
]
]
},
"Visit r/LocalLLaMA": {
"main": [
[
{
"node": "Clean up r/LocalLLaMA",
"type": "main",
"index": 0
}
]
]
},
"Clean up r/LocalLLaMA": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 3
}
]
]
},
"Visit r/MachineLearning": {
"main": [
[
{
"node": "Clean up r/MachineLearning",
"type": "main",
"index": 0
}
]
]
},
"Clean up r/MachineLearning": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 4
}
]
]
},
"Visit r/Python": {
"main": [
[
{
"node": "Clean up r/Python",
"type": "main",
"index": 0
}
]
]
},
"Clean up r/Python": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 5
}
]
]
},
"Query arxiv": {
"main": [
[
{
"node": "Convert",
"type": "main",
"index": 0
}
]
]
},
"Convert": {
"main": [
[
{
"node": "Clean up arvix Response",
"type": "main",
"index": 0
}
]
]
},
"Clean up arvix Response": {
"main": [
[
{
"node": "Get all arvix Data",
"type": "main",
"index": 0
}
]
]
},
"Get all arvix Data": {
"main": [
[
{
"node": "Merge everything!",
"type": "main",
"index": 6
}
]
]
},
"Merge everything!": {
"main": [
[
{
"node": "Create one list",
"type": "main",
"index": 0
}
]
]
},
"Create one list": {
"main": [
[
{
"node": "Curator",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "1bb6b4b8-cb81-4059-9159-5f75b0481d80",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "Qcvv2gPkdpB1BfnD",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApiredditOAuth2Apismtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
LLM && AI Curator. Uses dateTimeTool, dataTableTool, emailSendTool, lmChatOpenAi. Scheduled trigger; 26 nodes.
Source: https://github.com/KolegaLiterat/AIdrian/blob/e63894a0867cf55a264e5f145b105e47e76a3926/n8nWorkflows/3_llm_and_ai_news_curator.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Marketing, content, and enablement teams that need a quick, human-readable summary of every new video published by the YouTube channels they care about—without leaving Slack.
Automatically aggregates sports news for a configurable topic (e.g., "University of Florida Football" or "Atlanta Falcons") from Reddit, Google News, Yahoo Sports, NCAA.com, and BBC Sport, then curate
This workflow automatically generates professional, branded LinkedIn posts using your custom Figma designs. Perfect for marketers, agencies, content creators, and businesses who want to maintain consi
This n8n template demonstrates how to automatically generate and publish blog posts using trending keywords, AI-generated content, and watermarked stock images. Use cases include maintaining an active
Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing