Automatisierte Bild-Metadaten-Taggung

Fortgeschritten

Dies ist ein AI-Bereich Automatisierungsworkflow mit 9 Nodes. Hauptsächlich werden Code, Merge, GoogleDrive, ConvertToFile, ExtractFromFile und andere Nodes verwendet, kombiniert mit KI-Technologie für intelligente Automatisierung. Automatisierte KI-Bildmarkierung und Keywords in Bilddateien schreiben

Voraussetzungen
  • Google Drive API-Anmeldedaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "XbawQw3cvClu2wsx",
  "meta": {
    "instanceId": "1acdaec6c8e84424b4715cf41a9f7ec057947452db21cd2e22afbc454c8711cd",
    "templateCredsSetupCompleted": true
  },
  "name": "Automated Image Metadata Tagging",
  "tags": [],
  "nodes": [
    {
      "id": "cd1dba71-345b-45ae-8110-4fb57291f363",
      "name": "Aus Datei extrahieren",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        260,
        180
      ],
      "parameters": {
        "options": {},
        "operation": "binaryToPropery"
      },
      "typeVersion": 1
    },
    {
      "id": "7973b64e-ae92-44c9-aa8e-002c32c25def",
      "name": "In Datei konvertieren",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        920,
        80
      ],
      "parameters": {
        "options": {},
        "operation": "toBinary",
        "sourceProperty": "data"
      },
      "typeVersion": 1.1
    },
    {
      "id": "5fe13d4e-566b-459f-8830-f16829a34284",
      "name": "Bildinhalt analysieren",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        260,
        -40
      ],
      "parameters": {
        "text": "=Deliver a comma seperated list describing the content of this image.",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "resource": "image",
        "inputType": "base64",
        "operation": "analyze"
      },
      "credentials": {
        "openAiApi": {
          "id": "EjchNb5GBqYh0Cqn",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "876db6b5-6615-4e9d-8e1a-2d8220b2019f",
      "name": "Bilddatei herunterladen",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -20,
        60
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "s8l3OOBediUA645k",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "47b32ddb-1929-4855-9131-078b562b3492",
      "name": "Trigger: Neue Datei in Google Drive-Ordner",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        -220,
        60
      ],
      "parameters": {
        "event": "fileCreated",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "list",
          "value": "1WaIRWXcaeNViKmpW5IyQ3YGARWYdMg47",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1WaIRWXcaeNViKmpW5IyQ3YGARWYdMg47",
          "cachedResultName": "EXIF"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "s8l3OOBediUA645k",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "85c6458a-7b2a-4eef-bf28-3b784e45f562",
      "name": "Metadaten in Base64-Code schreiben",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        80
      ],
      "parameters": {
        "jsCode": "const tags = items[0].json.content.split(', ');\n\nconst xmpData = `<?xpacket begin=\"\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"XMP Core 5.1.2\">\n    <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n        <rdf:Description rdf:about=\"\"\n            xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n            xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\"\n            xmlns:photoshop=\"http://ns.adobe.com/photoshop/1.0/\">\n            <dc:creator></dc:creator>\n            <dc:subject>\n                <rdf:Bag>\n                    ${tags.map(tag => `<rdf:li>${tag}</rdf:li>`).join('\\n                    ')}\n                </rdf:Bag>\n            </dc:subject>\n            <xmp:CreateDate>${new Date().toISOString()}</xmp:CreateDate>\n        </rdf:Description>\n    </rdf:RDF>\n</x:xmpmeta>\n<?xpacket end=\"w\"?>`;\n\nconst xmpHeader = Buffer.from([\n    0xFF, 0xE1,\n    0x00, 0x00,\n    0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6E, 0x73, 0x2E,\n    0x61, 0x64, 0x6F, 0x62, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x2F,\n    0x78, 0x61, 0x70, 0x2F, 0x31, 0x2E, 0x30, 0x2F, 0x00\n]);\n\nconst xmpBuffer = Buffer.from(xmpData, 'utf8');\nconst imageBuffer = Buffer.from(items[0].json.data, 'base64');\nconst length = xmpHeader.length + xmpBuffer.length - 2;\nxmpHeader[2] = (length >> 8) & 0xFF;\nxmpHeader[3] = length & 0xFF;\n\nconst newImageData = Buffer.concat([\n    imageBuffer.slice(0, 2),\n    xmpHeader,\n    xmpBuffer,\n    imageBuffer.slice(2)\n]);\n\nitems[0].json.data = newImageData.toString('base64');\n\nreturn items;"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "1b86cadf-9f46-4980-a923-00577bfc59f4",
      "name": "Bilddatei aktualisieren",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1120,
        80
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Download Image File').item.json.id }}"
        },
        "options": {},
        "operation": "update",
        "changeFileContent": true,
        "newUpdatedFileName": "={{ $('Download Image File').item.json.name }}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "s8l3OOBediUA645k",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "10c97623-80b1-4e96-b5c5-243ef106b2e9",
      "name": "Kurznotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        240
      ],
      "parameters": {
        "width": 660,
        "height": 680,
        "content": "# Welcome to my Automated Image Metadata Tagging Workflow!\n\nThis workflow automatically analyzes the image content with the help of AI and writes it directly back into the image file as keywords.\n\n## This workflow has the following sequence:\n\n1. Google Drive trigger (scan for new files added in a specific folder)\n2. Download the added image file\n3. Analyse the content of the image and extract the file as Base64 code\n4. Merge Metadata and Base64 Code\n5. Code Node to write the Keywords into the Metadata (dc:subject)\n6. Convert to file and update the original file in the Google Drive folder\n\n## The following accesses are required for the workflow:\n- Google Drive: [Documentation](https://docs.n8n.io/integrations/builtin/credentials/google)\n- AI API access (e.g. via OpenAI, Anthropic, Google or Ollama)\n\nYou can contact me via LinkedIn, if you have any questions: https://www.linkedin.com/in/friedemann-schuetz"
      },
      "typeVersion": 1
    },
    {
      "id": "d2bb1007-018d-4c6a-a458-ff8e79b6017c",
      "name": "Metadaten und Base64-Code zusammenführen",
      "type": "n8n-nodes-base.merge",
      "position": [
        520,
        80
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "46b58de4-da62-43a2-bb10-fc85ffb75115",
  "connections": {
    "7973b64e-ae92-44c9-aa8e-002c32c25def": {
      "main": [
        [
          {
            "node": "1b86cadf-9f46-4980-a923-00577bfc59f4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cd1dba71-345b-45ae-8110-4fb57291f363": {
      "main": [
        [
          {
            "node": "d2bb1007-018d-4c6a-a458-ff8e79b6017c",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "876db6b5-6615-4e9d-8e1a-2d8220b2019f": {
      "main": [
        [
          {
            "node": "5fe13d4e-566b-459f-8830-f16829a34284",
            "type": "main",
            "index": 0
          },
          {
            "node": "cd1dba71-345b-45ae-8110-4fb57291f363",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5fe13d4e-566b-459f-8830-f16829a34284": {
      "main": [
        [
          {
            "node": "d2bb1007-018d-4c6a-a458-ff8e79b6017c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "85c6458a-7b2a-4eef-bf28-3b784e45f562": {
      "main": [
        [
          {
            "node": "7973b64e-ae92-44c9-aa8e-002c32c25def",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d2bb1007-018d-4c6a-a458-ff8e79b6017c": {
      "main": [
        [
          {
            "node": "85c6458a-7b2a-4eef-bf28-3b784e45f562",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "47b32ddb-1929-4855-9131-078b562b3492": {
      "main": [
        [
          {
            "node": "876db6b5-6615-4e9d-8e1a-2d8220b2019f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

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 - Künstliche Intelligenz

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.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes9
Kategorie1
Node-Typen8
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34