N
n8n Store
Workflow Market
"E-Mail to article/blog post" - converter

"E-Mail to article/blog post" - converter

by julianreich0 views

Description

Categories

🤖 AI & Machine Learning

Nodes Used

n8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.coden8n-nodes-base.gmailn8n-nodes-base.gmailn8n-nodes-base.gmailn8n-nodes-base.googleDriven8n-nodes-base.httpRequestn8n-nodes-base.httpRequestn8n-nodes-base.gmailTrigger
PriceFree
Views0
Last Updated11/28/2025
workflow.json
{
  "id": "l1wMIoms9BgoA2lV",
  "meta": {
    "instanceId": "05b0588df0f58c91cb668a930710fae1c12db867675e52c5c2912a7beee5342b",
    "templateCredsSetupCompleted": true
  },
  "name": "\"E-Mail to article/blog post\" - converter",
  "tags": [],
  "nodes": [
    {
      "id": "e24d8d7a-88b2-4ee2-9c38-4b6f4a88102c",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -100,
        360
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "sender": "*@somedia.ch"
        },
        "options": {
          "downloadAttachments": true,
          "dataPropertyAttachmentsPrefixName": "attachment_"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 1
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "PNLoTfL8jP1YyGjJ",
          "name": "Gmail account 2"
        }
      },
      "notesInFlow": false,
      "typeVersion": 1.2
    },
    {
      "id": "b265f364-b246-4244-ab77-9812b90817e1",
      "name": "Extrahiere aus PDF1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1120,
        -80
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "2ff7ca6c-7ba6-4526-94fc-cb82b052648a",
      "name": "HTTP Request2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1260,
        280
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/drive/v3/files/{{$json[\"id\"]}}/copy\n",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"mimeType\": \"application/vnd.google-apps.document\"\n}\n",
        "sendBody": true,
        "jsonHeaders": "{\n  \"Authorization\": \"Bearer {{$credentials.googleDriveOAuth2.access_token}}\",\n  \"Content-Type\": \"application/json\"\n}\n",
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "specifyHeaders": "json",
        "nodeCredentialType": "googleDocsOAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "INVJ4n7OLXgPI372",
          "name": "Unnamed credential"
        },
        "googleDocsOAuth2Api": {
          "id": "AeVFb8EMLqLEn7Db",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1889bbb3-287b-4105-aea9-1b1f31e1bc1b",
      "name": "HTTP Request3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1480,
        280
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/drive/v3/files/{{$json[\"id\"]}}/export?mimeType=text/plain\n",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        },
        "jsonHeaders": "{\n  \"Authorization\": \"Bearer {{$credentials.googleDriveOAuth2.access_token}}\"\n}\n",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "specifyHeaders": "json",
        "nodeCredentialType": "googleDocsOAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "INVJ4n7OLXgPI372",
          "name": "Unnamed credential"
        },
        "googleDocsOAuth2Api": {
          "id": "AeVFb8EMLqLEn7Db",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f6f0d96f-f1c8-4d6a-88c5-bfe86ff6a359",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        660,
        740
      ],
      "parameters": {
        "model": "claude-3-5-sonnet-20241022",
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "id": "51YEx3VTC2IuyUTO",
          "name": "Anthropic account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0f3fee05-3444-4046-96f6-b0978eb9d16e",
      "name": "Anthropic Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        1780,
        500
      ],
      "parameters": {
        "model": "claude-3-5-sonnet-20241022",
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "id": "51YEx3VTC2IuyUTO",
          "name": "Anthropic account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "34321fc9-ecaa-4f4c-a01c-b8cf0cd3df50",
      "name": "Anthropic Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        1400,
        80
      ],
      "parameters": {
        "model": "claude-3-5-sonnet-20241022",
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "id": "51YEx3VTC2IuyUTO",
          "name": "Anthropic account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "86315ae8-f456-4e06-a281-b04f75886232",
      "name": "Code: delete all but pdf and word",
      "type": "n8n-nodes-base.code",
      "position": [
        140,
        360
      ],
      "parameters": {
        "jsCode": "const allItems = $input.all();\nlet data = [];\nallItems.forEach(item => {\n  const binaryData = item.binary;\n  if (binaryData) {\n    Object.keys(binaryData).forEach(key => {\n      // MIME-Types für PDF und Word\n      const allowedMimeTypes = [\n        'application/pdf',\n        'application/msword',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n      ];\n      \n      if (allowedMimeTypes.includes(binaryData[key]?.mimeType)) {\n        data.push({\n          binary: { data: binaryData[key] },\n          json: {\n            fileName: binaryData[key].fileName,\n            mimeType: binaryData[key].mimeType\n          }\n        });\n      }\n    });\n  }\n});\nreturn data;"
      },
      "executeOnce": false,
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "6b95290e-4304-4187-8294-15f32e3227c9",
      "name": "has attachment?",
      "type": "n8n-nodes-base.if",
      "position": [
        380,
        360
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "0cd4c70c-9562-486e-95bd-497ba4816aac",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Object.keys($binary).length }}\n",
              "rightValue": 0
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "59688c51-64aa-47bb-80e3-33185e358122",
      "name": "PDF or WORD?",
      "type": "n8n-nodes-base.if",
      "position": [
        680,
        240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "0cd4c70c-9562-486e-95bd-497ba4816aac",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.mimeType }}",
              "rightValue": "pdf"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "8d767385-4e77-434f-8c47-1e5bbaae807f",
      "name": "OpenAI self assesment",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1020,
        520
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Deine Aufgabe ist es, den gegebenen Input-Text mit dem Output-Artikel zu vergleichen.\nBewerte, ob alle wesentlichen Informationen aus dem Input-Text im Output-Artikel korrekt enthalten sind, ohne dass neue, nicht im Input vorhandene Informationen hinzugefügt wurden.\nVorgehensweise:\n\n    Vollständigkeit prüfen: Sind alle relevanten Informationen aus dem Input im Output enthalten?\n    Genauigkeit bewerten: Wurde der Inhalt korrekt wiedergegeben, ohne Änderungen oder Auslassungen?\n    Zusätzliche Informationen erkennen: Wurden Inhalte hinzugefügt, die nicht im Input vorhanden sind? Falls ja, welche?\n\nAusgabe:\n\n    Bewertung (1 bis 5):\n        1 = Sehr schlecht (viele fehlende oder falsche Informationen, erhebliche neue Inhalte)\n        2 = Unzureichend (mehrere wichtige Auslassungen oder falsche Inhalte)\n        3 = Mittelmäßig (einige kleinere Fehler oder Ergänzungen)\n        4 = Gut (fast alles korrekt, minimale Abweichungen)\n        5 = Sehr gut (vollständige, korrekte Übereinstimmung)\n    Textuelle Begründung: Eine kurze Analyse, warum diese Bewertung vergeben wurde.\n\n\nHier der Input:\n\n{{ $('Gmail Trigger').item.json.text }}\n\nUnd hier der Output:\n{{ $json.output }}"
            },
            {
              "role": "assistant",
              "content": "sei pedantisch"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "DGnxI3xtf5aATUOp",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "f9c7b8a8-2148-49f1-b604-4766deafadd1",
      "name": "OpenAI self-assesment2",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "onError": "continueRegularOutput",
      "position": [
        1740,
        -80
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Deine Aufgabe ist es, den gegebenen Input-Text mit dem Output-Artikel zu vergleichen.\nBewerte, ob alle wesentlichen Informationen aus dem Input-Text im Output-Artikel korrekt enthalten sind, ohne dass neue, nicht im Input vorhandene Informationen hinzugefügt wurden.\nVorgehensweise:\n\n    Vollständigkeit prüfen: Sind alle relevanten Informationen aus dem Input im Output enthalten?\n    Genauigkeit bewerten: Wurde der Inhalt korrekt wiedergegeben, ohne Änderungen oder Auslassungen?\n    Zusätzliche Informationen erkennen: Wurden Inhalte hinzugefügt, die nicht im Input vorhanden sind? Falls ja, welche?\n\nAusgabe:\n\n    Bewertung (1 bis 5):\n        1 = Sehr schlecht (viele fehlende oder falsche Informationen, erhebliche neue Inhalte)\n        2 = Unzureichend (mehrere wichtige Auslassungen oder falsche Inhalte)\n        3 = Mittelmäßig (einige kleinere Fehler oder Ergänzungen)\n        4 = Gut (fast alles korrekt, minimale Abweichungen)\n        5 = Sehr gut (vollständige, korrekte Übereinstimmung)\n    Textuelle Begründung: Eine kurze Analyse, warum diese Bewertung vergeben wurde.\n\n\nHier der Input:\n{{ $('Extrahiere aus PDF1').item.json.text }}\n{{ $('Gmail Trigger').item.json.text }}\n\nUnd hier der Output:\n {{ $json.output }}"
            },
            {
              "role": "assistant",
              "content": "sei pedantisch"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "DGnxI3xtf5aATUOp",
          "name": "OpenAi account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1.8
    },
    {
      "id": "0c2c1c4d-b3ec-4e1d-b663-27c43dddb523",
      "name": "reply to sender (no attachment)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1440,
        520
      ],
      "webhookId": "521f7992-d12c-4485-92d8-41cc5567938b",
      "parameters": {
        "message": "=***REDIGIERTER ARTIKEL***  !!!-CLAUDE-!!!\n\n{{ $('AI Article Writer 3').item.json.output }}\n\n***SELBSTKRITIK***\n\n{{ $json.message.content }}\n\n***ORIGINALNACHRICHT***\n\n{{ $('Gmail Trigger').item.json.text }}",
        "options": {},
        "emailType": "text",
        "messageId": "={{ $('Gmail Trigger').item.json.id }}",
        "operation": "reply"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "BtnmuMmkgyJeYpoZ",
          "name": "Gmail account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "de88f6fb-0e75-41d9-8e0c-7377ca1bdca4",
      "name": "reply to sender (word)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2360,
        280
      ],
      "webhookId": "5767887a-ca7a-41f9-9745-34d49bb79691",
      "parameters": {
        "message": "=***REDIGIERTER ARTIKEL***   !!!! CLAUDE !!!!\n\n\n{{ $('AI Article Writer 2').item.json.output }}\n\n***SELBSTKRITIK***\nBewertung: 1 (schlecht) bis 5 (sehr gut)\n{{ $json.message.content }}\n***ORIGINALNACHRICHT***\n\n{{ $('Gmail Trigger').item.json.text }}\n\n***INHALT ANHANG***\n\n{{ $('HTTP Request3').item.json.data }}",
        "options": {},
        "emailType": "text",
        "messageId": "={{ $('Gmail Trigger').item.json.id }}",
        "operation": "reply"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "BtnmuMmkgyJeYpoZ",
          "name": "Gmail account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0d9c55f9-3c53-44aa-b0d0-09141570b72b",
      "name": "reply to sender (pdf)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2140,
        -80
      ],
      "webhookId": "523f355b-404f-4a60-b393-e2c5d8f29098",
      "parameters": {
        "message": "=*****REDIGIERTE NACHRICHT*****   !!!!- CLAUDE -!!!\n{{ $('AI Article Writer 1').item.json.output }}\n\n*****SELBSTKRITIK****\nBewertung 1 (schlecht) bis 5 (sehr gut):\n{{ $json.message.content }}\n\n*****ORIGINAL-E-MAIL*****\n\n{{ $('Gmail Trigger').item.json.text }}\n\n\n*****TEXT AUS PDF*****\n\n{{ $('Extrahiere aus PDF1').item.json.text }}\n\n\n",
        "options": {},
        "emailType": "text",
        "messageId": "={{ $('Gmail Trigger').item.json.id }}",
        "operation": "reply"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "BtnmuMmkgyJeYpoZ",
          "name": "Gmail account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "695e80d4-dbe2-4476-b680-b90732a6136a",
      "name": "AI Article Writer 1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "maxTries": 5,
      "position": [
        1380,
        -80
      ],
      "parameters": {
        "text": "=Du bist Redakteur*in beim Schweizer Kulturmagazin Terra Grischuna. Erstelle aus den Textinformationen einen publikationsfertigen Artikel mit folgender Struktur und Vorgehensweise:\n\n    Stil und Sprache\n    – Schreibe in einer neutralen, reduzierten und klaren Sprache.\n    – Verwende die Schweizer Rechtschreibung.\n    – Halte dich an ein genderneutrales, aktives und verständliches Wording.\n\n    Form und Aufbau\n    – Nutze die Form der umgekehrten Pyramide (wichtigste Informationen zuerst, abnehmende Wichtigkeit im Verlauf).\n    – Verfasse einen Titel und klare Zwischentitel (keine Bulletpoints).\n    – Bei Veranstaltungshinweisen beginne den Artikel mit einem Satz, der Wer, wann, wo, was beantwortet (z. B. „Franz Tomaschett spricht am 5. Dezember in Chur über das Thema Arbeit.“).\n    – Der Fliesstext sollte zwischen 250 und 500 Wörtern umfassen.\n\n    Inhalte und Daten\n    – Fasse alle relevanten Inhalte verständlich zusammen.\n- halte dich an die Informationen aus der E-Mail. Erfinde nichts! Sei genau!\n- wenn dir Informationen fehlen, konstruiere keine neuen. \n    – Ignoriere alle anderen Dateiformate (z. B. Bilder, Excel-Tabellen).\n    – Verwende keine Aufzählungspunkte im finalen Artikel.\n- wenn subjektive oder streitbare Ansichten formuliert werden, attribuiere diese den Absendern dieser Ansichten. Nenne Quelle/Urheber solcher Äusserungen. Beispiel: \"ZITAT in direkter oder indirekter Rede\", schreibt die Gruppe Wolf in ihrer Mitteilung. \n\n    Zusätzliche Anweisung\n    – Extrahiere zunächst alle wichtigen Daten, Personen und Schlagworte. Liste sie strukturiert (z. B. mit Absätzen oder klarer Trennung) vor dem eigentlichen Artikel auf. Zähle zudem die Anzahl Zeichen und Wörter des Artikels.\n\nBeispielhafte Ausgabe-Struktur\n\nWichtige Daten und Personen\nNennehierknappundstrukturiertallerelevantenNamen,Daten,Orte,Termineetc.NennehierknappundstrukturiertallerelevantenNamen,Daten,Orte,Termineetc.\n\nTitel\nKurzer,pra¨gnanterTitelKurzer,pra¨gnanterTitel\n\n\nEinfu¨hrenderAbsatzmitdenwichtigstenInfos(wer,wann,wo,was)Einfu¨hrenderAbsatzmitdenwichtigstenInfos(wer,wann,wo,was)\n\nZwischentitel 1\nHintergrund,weitereZusammenha¨nge,abnehmendwichtigeDetailsHintergrund,weitereZusammenha¨nge,abnehmendwichtigeDetails\n\nZwischentitel 2\nRestlicheInformationen,kontextualisiertundzusammengefasstRestlicheInformationen,kontextualisiertundzusammengefasst\n\n(Ende des Artikels, maximal 500 Wörter.)\n\nNutze bitte diese Vorgaben, um den Artikel in hochwertiger, schweizkonformer Sprache zu verfassen.\n\nHier die Informationen aus dem E-Mail\n\n {{ $('Gmail Trigger').item.json.text }}\n\n{{ $json.text }}",
        "options": {},
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "1d3988ea-b8ec-450a-a512-f5463953554b",
      "name": "AI Article Writer 2",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1700,
        280
      ],
      "parameters": {
        "text": "=Du bist Redakteur*in beim Schweizer Kulturmagazin Terra Grischuna. Erstelle aus den Textinformationen einen publikationsfertigen Artikel mit folgender Struktur und Vorgehensweise:\n\n    Stil und Sprache\n    – Schreibe in einer neutralen, reduzierten und klaren Sprache.\n    – Verwende die Schweizer Rechtschreibung.\n    – Halte dich an ein genderneutrales, aktives und verständliches Wording.\n\n    Form und Aufbau\n    – Nutze die Form der umgekehrten Pyramide (wichtigste Informationen zuerst, abnehmende Wichtigkeit im Verlauf).\n    – Verfasse einen Titel und klare Zwischentitel (keine Bulletpoints).\n    – Bei Veranstaltungshinweisen beginne den Artikel mit einem Satz, der Wer, wann, wo, was beantwortet (z. B. „Franz Tomaschett spricht am 5. Dezember in Chur über das Thema Arbeit.“).\n    – Der Fliesstext sollte zwischen 250 und 500 Wörtern umfassen.\n\n    Inhalte und Daten\n    – Fasse alle relevanten Inhalte verständlich zusammen.\n- halte dich an die Informationen aus der E-Mail. Erfinde nichts! Sei genau!\n- wenn dir Informationen fehlen, konstruiere keine neuen. \n    – Ignoriere alle anderen Dateiformate (z. B. Bilder, Excel-Tabellen).\n    – Verwende keine Aufzählungspunkte im finalen Artikel.\n- wenn subjektive oder streitbare Ansichten formuliert werden, attribuiere diese den Absendern dieser Ansichten. Nenne Quelle/Urheber solcher Äusserungen. Beispiel: \"ZITAT in direkter oder indirekter Rede\", schreibt die Gruppe Wolf in ihrer Mitteilung. \n\n    Zusätzliche Anweisung\n    – Extrahiere zunächst alle wichtigen Daten, Personen und Schlagworte. Liste sie strukturiert (z. B. mit Absätzen oder klarer Trennung) vor dem eigentlichen Artikel auf. Zähle zudem die Anzahl Zeichen und Wörter des Artikels.\n\nBeispielhafte Ausgabe-Struktur\n\nWichtige Daten und Personen\nNennehierknappundstrukturiertallerelevantenNamen,Daten,Orte,Termineetc.NennehierknappundstrukturiertallerelevantenNamen,Daten,Orte,Termineetc.\n\nTitel\nKurzer,pra¨gnanterTitelKurzer,pra¨gnanterTitel\n\n\nEinfu¨hrenderAbsatzmitdenwichtigstenInfos(wer,wann,wo,was)Einfu¨hrenderAbsatzmitdenwichtigstenInfos(wer,wann,wo,was)\n\nZwischentitel 1\nHintergrund,weitereZusammenha¨nge,abnehmendwichtigeDetailsHintergrund,weitereZusammenha¨nge,abnehmendwichtigeDetails\n\nZwischentitel 2\nRestlicheInformationen,kontextualisiertundzusammengefasstRestlicheInformationen,kontextualisiertundzusammengefasst\n\n(Ende des Artikels, maximal 500 Wörter.)\n\nNutze bitte diese Vorgaben, um den Artikel in hochwertiger, schweizkonformer Sprache zu verfassen.\n\nHier die Informationen aus dem E-Mail\n\n {{ $('Gmail Trigger').item.json.text }}{{ $json.data }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "99b5a06e-5d1b-4797-a934-2c37b49caf47",
      "name": "AI Article Writer 3",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        660,
        520
      ],
      "parameters": {
        "text": "=Du bist Redakteur*in beim Schweizer Kulturmagazin Terra Grischuna. Erstelle aus den Textinformationen einen publikationsfertigen Artikel mit folgender Struktur und Vorgehensweise:\n\n    Stil und Sprache\n    – Schreibe in einer neutralen, reduzierten und klaren Sprache.\n    – Verwende die Schweizer Rechtschreibung.\n    – Halte dich an ein genderneutrales, aktives und verständliches Wording.\n\n    Form und Aufbau\n    – Nutze die Form der umgekehrten Pyramide (wichtigste Informationen zuerst, abnehmende Wichtigkeit im Verlauf).\n    – Verfasse einen Titel und klare Zwischentitel (keine Bulletpoints).\n    – Bei Veranstaltungshinweisen beginne den Artikel mit einem Satz, der Wer, wann, wo, was beantwortet (z. B. „Franz Tomaschett spricht am 5. Dezember in Chur über das Thema Arbeit.“).\n    – Der Fliesstext sollte zwischen 250 und 500 Wörtern umfassen.\n- wenn subjektive oder streitbare Ansichten formuliert werden, attribuiere diese den Absendern dieser Ansichten. Nenne Quelle/Urheber solcher Äusserungen. Beispiel: \"ZITAT in direkter oder indirekter Rede\", schreibt die Gruppe Wolf in ihrer Mitteilung. \n\n    Inhalte und Daten\n    – Fasse alle relevanten Inhalte verständlich zusammen.\n- halte dich an die Informationen aus der E-Mail. Erfinde nichts! Sei genau!\n- wenn dir Informationen fehlen, konstruiere keine neuen. \n    – Ignoriere alle anderen Dateiformate (z. B. Bilder, Excel-Tabellen).\n    – Verwende keine Aufzählungspunkte im finalen Artikel.\n\n    Zusätzliche Anweisung\n    – Extrahiere zunächst alle wichtigen Daten, Personen und Schlagworte. Liste sie strukturiert (z. B. mit Absätzen oder klarer Trennung) vor dem eigentlichen Artikel auf. Zähle zudem die Anzahl Zeichen und Wörter des Artikels.\n\nBeispielhafte Ausgabe-Struktur\n\nWichtige Daten und Personen\nNennehierknappundstrukturiertallerelevantenNamen,Daten,Orte,Termineetc.NennehierknappundstrukturiertallerelevantenNamen,Daten,Orte,Termineetc.\n\nTitel\nKurzer,pra¨gnanterTitelKurzer,pra¨gnanterTitel\n\n\nEinfu¨hrenderAbsatzmitdenwichtigstenInfos(wer,wann,wo,was)Einfu¨hrenderAbsatzmitdenwichtigstenInfos(wer,wann,wo,was)\n\nZwischentitel 1\nHintergrund,weitereZusammenha¨nge,abnehmendwichtigeDetailsHintergrund,weitereZusammenha¨nge,abnehmendwichtigeDetails\n\nZwischentitel 2\nRestlicheInformationen,kontextualisiertundzusammengefasstRestlicheInformationen,kontextualisiertundzusammengefasst\n\n(Ende des Artikels, maximal 500 Wörter.)\n\nNutze bitte diese Vorgaben, um den Artikel in hochwertiger, Schweizkonformer Sprache zu verfassen.\n\nHier die Informationen aus dem E-Mail\n\n {{ $('Gmail Trigger').item.json.text }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "f7280703-4570-4771-8a53-cac3a661f416",
      "name": "Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        960,
        280
      ],
      "parameters": {
        "name": "={{ $json.fileName }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {
          "useContentAsIndexableText": false
        },
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultName": "/ (Root folder)"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "q0vkLLRJ0qE1Wnbo",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a83189ab-027d-4ed7-aa69-82e29270cd7c",
      "name": "OpenAI self-assesment",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2020,
        280
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Deine Aufgabe ist es, den gegebenen Input-Text mit dem Output-Artikel zu vergleichen.\nBewerte, ob alle wesentlichen Informationen aus dem Input-Text im Output-Artikel korrekt enthalten sind, ohne dass neue, nicht im Input vorhandene Informationen hinzugefügt wurden.\nVorgehensweise:\n\n    Vollständigkeit prüfen: Sind alle relevanten Informationen aus dem Input im Output enthalten?\n    Genauigkeit bewerten: Wurde der Inhalt korrekt wiedergegeben, ohne Änderungen oder Auslassungen?\n    Zusätzliche Informationen erkennen: Wurden Inhalte hinzugefügt, die nicht im Input vorhanden sind? Falls ja, welche?\n\nAusgabe:\n\n    Bewertung (1 bis 5):\n        1 = Sehr schlecht (viele fehlende oder falsche Informationen, erhebliche neue Inhalte)\n        2 = Unzureichend (mehrere wichtige Auslassungen oder falsche Inhalte)\n        3 = Mittelmäßig (einige kleinere Fehler oder Ergänzungen)\n        4 = Gut (fast alles korrekt, minimale Abweichungen)\n        5 = Sehr gut (vollständige, korrekte Übereinstimmung)\n    Textuelle Begründung: Eine kurze Analyse, warum diese Bewertung vergeben wurde.\n\n\nHier der Input:\n{{ $('HTTP Request3').item.json.data }}\n{{ $('Gmail Trigger').item.json.text }}\nUnd hier der Output:\n{{ $json.output }}"
            },
            {
              "role": "assistant",
              "content": "sei pedantisch"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "DGnxI3xtf5aATUOp",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "timezone": "Europe/Rome",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "0e0eba57-a154-48ee-a86a-d4c787805456",
  "connections": {
    "Google Drive": {
      "main": [
        [
          {
            "node": "HTTP Request2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PDF or WORD?": {
      "main": [
        [
          {
            "node": "Extrahiere aus PDF1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger": {
      "main": [
        [
          {
            "node": "Code: delete all but pdf and word",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request2": {
      "main": [
        [
          {
            "node": "HTTP Request3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request3": {
      "main": [
        [
          {
            "node": "AI Article Writer 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "has attachment?": {
      "main": [
        [
          {
            "node": "PDF or WORD?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Article Writer 3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Article Writer 1": {
      "main": [
        [
          {
            "node": "OpenAI self-assesment2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Article Writer 2": {
      "main": [
        [
          {
            "node": "OpenAI self-assesment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Article Writer 3": {
      "main": [
        [
          {
            "node": "OpenAI self assesment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extrahiere aus PDF1": {
      "main": [
        [
          {
            "node": "AI Article Writer 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Article Writer 3",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Article Writer 2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Article Writer 1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI self assesment": {
      "main": [
        [
          {
            "node": "reply to sender (no attachment)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI self-assesment": {
      "main": [
        [
          {
            "node": "reply to sender (word)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI self-assesment2": {
      "main": [
        [
          {
            "node": "reply to sender (pdf)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code: delete all but pdf and word": {
      "main": [
        [
          {
            "node": "has attachment?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

相关工作流