251 lines
6.8 KiB
JSON
251 lines
6.8 KiB
JSON
{
|
|
"id": "4nBQyhwqDqmXY2AL",
|
|
"meta": {
|
|
"instanceId": "558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a",
|
|
"templateCredsSetupCompleted": true
|
|
},
|
|
"name": "Automated Image Metadata Tagging (Community Node)",
|
|
"tags": [],
|
|
"nodes": [
|
|
{
|
|
"id": "b0b030f5-8a8c-4254-bc18-a2790748248e",
|
|
"name": "Trigger: New file added to Google Drive Folder",
|
|
"type": "n8n-nodes-base.googleDriveTrigger",
|
|
"position": [
|
|
-760,
|
|
120
|
|
],
|
|
"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": "L47XiMFzcjUgBp2i",
|
|
"name": "Google Drive account"
|
|
}
|
|
},
|
|
"typeVersion": 1
|
|
},
|
|
{
|
|
"id": "1df51279-b3bd-49bd-9711-951eb4164290",
|
|
"name": "Download Image File",
|
|
"type": "n8n-nodes-base.googleDrive",
|
|
"position": [
|
|
-540,
|
|
120
|
|
],
|
|
"parameters": {
|
|
"fileId": {
|
|
"__rl": true,
|
|
"mode": "id",
|
|
"value": "={{ $json.id }}"
|
|
},
|
|
"options": {},
|
|
"operation": "download"
|
|
},
|
|
"credentials": {
|
|
"googleDriveOAuth2Api": {
|
|
"id": "L47XiMFzcjUgBp2i",
|
|
"name": "Google Drive account"
|
|
}
|
|
},
|
|
"typeVersion": 3
|
|
},
|
|
{
|
|
"id": "50a59e8e-ca95-4594-b8a9-0ba709795d42",
|
|
"name": "Analyze Image Content",
|
|
"type": "@n8n/n8n-nodes-langchain.openAi",
|
|
"position": [
|
|
-340,
|
|
200
|
|
],
|
|
"parameters": {
|
|
"text": "=Deliver a comma separated 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": "niikB3HA4fT5WAqt",
|
|
"name": "OpenAi account"
|
|
}
|
|
},
|
|
"typeVersion": 1.8
|
|
},
|
|
{
|
|
"id": "456164cc-ed41-4482-adb4-4ed00682153d",
|
|
"name": "Merge Metadata and Image File",
|
|
"type": "n8n-nodes-base.merge",
|
|
"position": [
|
|
-140,
|
|
120
|
|
],
|
|
"parameters": {
|
|
"mode": "combine",
|
|
"options": {},
|
|
"combineBy": "combineByPosition"
|
|
},
|
|
"typeVersion": 3
|
|
},
|
|
{
|
|
"id": "ddd6aef5-4dae-48e3-a806-3c58adea6552",
|
|
"name": "Write Metadata into Image",
|
|
"type": "n8n-nodes-exif-data.exifData",
|
|
"position": [
|
|
40,
|
|
120
|
|
],
|
|
"parameters": {
|
|
"options": {},
|
|
"operation": "write",
|
|
"exifMetadata": {
|
|
"metadataValues": [
|
|
{
|
|
"name": "Subject",
|
|
"value": "={{$json.content}}"
|
|
},
|
|
{
|
|
"name": "Keywords",
|
|
"value": "={{$json.content}}"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"typeVersion": 1
|
|
},
|
|
{
|
|
"id": "9c531288-7fca-4cca-9717-6dd059266f47",
|
|
"name": "Update Image File",
|
|
"type": "n8n-nodes-base.googleDrive",
|
|
"position": [
|
|
220,
|
|
120
|
|
],
|
|
"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": "L47XiMFzcjUgBp2i",
|
|
"name": "Google Drive account"
|
|
}
|
|
},
|
|
"typeVersion": 3
|
|
},
|
|
{
|
|
"id": "70b6bb63-fedf-42eb-a6a0-30faae883f2c",
|
|
"name": "Sticky Note1",
|
|
"type": "n8n-nodes-base.stickyNote",
|
|
"position": [
|
|
-1080,
|
|
320
|
|
],
|
|
"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\n4. Merge Metadata and image file\n5. Write the Keywords into the Metadata (dc:subject/keywords) and create new image file\n6. Update the original file in the Google Drive folder\n\n## The following accesses are required for the workflow:\n- You have to install the [n8n-nodes-exif-data Community Node](https://www.npmjs.com/package/n8n-nodes-exif-data)\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
|
|
}
|
|
],
|
|
"active": false,
|
|
"pinData": {},
|
|
"settings": {
|
|
"executionOrder": "v1"
|
|
},
|
|
"versionId": "c4d1520b-6df4-4e76-98ba-4d7555aec35d",
|
|
"connections": {
|
|
"Download Image File": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Analyze Image Content",
|
|
"type": "main",
|
|
"index": 0
|
|
},
|
|
{
|
|
"node": "Merge Metadata and Image File",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Analyze Image Content": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Merge Metadata and Image File",
|
|
"type": "main",
|
|
"index": 1
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Write Metadata into Image": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Update Image File",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Merge Metadata and Image File": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Write Metadata into Image",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Trigger: New file added to Google Drive Folder": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Download Image File",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
}
|
|
}
|
|
} |