{
  "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": []
}