NanoBanana 🍌と Telegram を使用した UGC 画像生成のフォーム提交ツール

中級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、15個のノードを含みます。主にSet, Code, Merge, Telegram, FormTriggerなどのノードを使用。 Google Formsの送信からGoogle GeminiとTelegramでUGC画像生成

前提条件
  • Telegram Bot Token
  • ターゲットAPIの認証情報が必要な場合あり
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "UM5yN01ZX3V2f256",
  "meta": {
    "instanceId": "237139412ba2bdccb5393d058ace6ee50c6bb809e4f130ea2f9b24f70a336b94",
    "templateCredsSetupCompleted": true
  },
  "name": "UGC Image Generator from Form Submission using NanoBanana 🍌 and Telegram",
  "tags": [],
  "nodes": [
    {
      "id": "15aee33e-9193-4bb2-9f9a-cc4ed5cd8eb5",
      "name": "Google gemini",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1168,
        0
      ],
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"google/gemini-2.5-flash-image-preview\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        {\n          \"type\": \"text\",\n          \"text\": \"Create a realistic and engaging UGC image highlighting this Character product. : {{ $json.personnage }}. Style: lifestyle photo, taken on a smartphone, natural, authentic, and spontaneous atmosphere. Context: the subject holds/uses the product in a simple and natural way: natural light, simple background (living room, office, or urban outdoor setting), soft colors, mid-body framing. Objective: to give the impression that it is a real person recommending the product in UGC content.\"\n        },\n        {\n          \"type\": \"image_url\",\n          \"image_url\": {\n            \"url\": \"{{ $json.image }}\"\n          }\n        }\n      ]\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "openRouterApi"
      },
      "credentials": {
        "openRouterApi": {
          "id": "JGTQZSwkY8TvDVDW",
          "name": "OpenRouter account 2"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4d644794-edfa-411e-950e-2a35aee608bf",
      "name": "マッピング",
      "type": "n8n-nodes-base.set",
      "position": [
        976,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5ba24889-ccd2-4b28-be4e-ba85eb4a1827",
              "name": "image",
              "type": "string",
              "value": "={{ $json.image_url }}"
            },
            {
              "id": "cd52d79a-16b7-41ad-8673-e8a01fc0bd28",
              "name": "personnage",
              "type": "string",
              "value": "={{ $json.modele_personnage }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "813f07a4-a764-4284-9388-cc3a46b50c13",
      "name": "写真メッセージ送信",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1808,
        0
      ],
      "webhookId": "441e3c91-85fd-4b25-bf68-0f28b0d6d697",
      "parameters": {
        "chatId": "@assistantjaures",
        "operation": "sendPhoto",
        "binaryData": true,
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "LPcm8lL2x487aGuB",
          "name": "Test"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1a80e40a-b565-4a94-8d50-18ed5a12f2ff",
      "name": "キャラクタータイプと画像付きフォーム送信",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -144,
        -16
      ],
      "webhookId": "251cf601-cb55-403d-86f7-f64f8f52e45a",
      "parameters": {
        "options": {
          "appendAttribution": false
        },
        "formTitle": "Advertising image generator",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Product image",
              "multipleFiles": false,
              "requiredField": true,
              "acceptFileTypes": ".jpg, .png, .jpeg"
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Character model",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Homme"
                  },
                  {
                    "option": "Femme"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "Turn simple product images into high-quality advertising images"
      },
      "typeVersion": 2.2
    },
    {
      "id": "76f275ec-0500-4df8-a533-1afd5e5ccf7a",
      "name": "フォームファイル抽出",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        256,
        64
      ],
      "parameters": {
        "options": {},
        "operation": "binaryToPropery",
        "destinationKey": "image_base64",
        "binaryPropertyName": "Image_du_produit"
      },
      "typeVersion": 1
    },
    {
      "id": "68788867-9960-4c5e-a08c-802ce0604215",
      "name": "2つのデータセット統合",
      "type": "n8n-nodes-base.merge",
      "position": [
        528,
        0
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "b95becf0-1bdd-4e55-9040-a428cd6eb3e3",
      "name": "データURL作成",
      "type": "n8n-nodes-base.code",
      "position": [
        752,
        0
      ],
      "parameters": {
        "jsCode": "// We take the first item.\nconst item = $input.item.json;\n\n// Character model retrieval\nconst modele = item[\"Modèle de personnage\"];\n\n// Base64 recovery\nconst imageBase64 = item[\"image_base64\"];\n\n// Creating a Data URL that can be used in an API\n// ⚡ Change “image/jpeg” if your image is PNG.\nconst imageUrl = `data:image/jpeg;base64,${imageBase64}`;\n\n// Turn everything over\nreturn [\n  {\n    json: {\n      modele_personnage: modele,\n      image_url: imageUrl\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "80f40071-4c24-4dd5-bc6a-9cab0fcfa7e6",
      "name": "URLデータ変換",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        0
      ],
      "parameters": {
        "jsCode": "const output = items[0].json;\n\n// Extraire le base64 depuis choices[0].message.images[0].image_url.url\nlet base64Data = output.choices[0].message.images[0].image_url.url;\n\n// Enlever le préfixe \"data:image/png;base64,\"\nbase64Data = base64Data.replace(/^data:image\\/\\w+;base64,/, \"\");\n\n// Retourner dans un champ \"data\" → Convert to File va l'utiliser\nreturn [\n  {\n    json: {\n      data: base64Data\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ef8c6191-80bf-40fb-ad4d-f7d9ad0d3978",
      "name": "ファイルダウンロード",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1584,
        0
      ],
      "parameters": {
        "options": {},
        "operation": "toBinary",
        "sourceProperty": "data"
      },
      "typeVersion": 1.1
    },
    {
      "id": "23860a70-7beb-494d-a49b-bb7f83febb7d",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -224,
        -128
      ],
      "parameters": {
        "color": 6,
        "width": 288,
        "height": 368,
        "content": "## Form Submission with Character Type and Image"
      },
      "typeVersion": 1
    },
    {
      "id": "e9f831db-eeb7-4780-8a96-6b237b6637f8",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -128
      ],
      "parameters": {
        "color": 6,
        "width": 560,
        "height": 368,
        "content": "## Extract the Form File & Merge the Two Data Sets"
      },
      "typeVersion": 1
    },
    {
      "id": "b8431775-7a92-4174-a6aa-9da3ccb55ff3",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -128
      ],
      "parameters": {
        "color": 6,
        "width": 592,
        "height": 368,
        "content": "## NanoBanana UGC image generator   "
      },
      "typeVersion": 1
    },
    {
      "id": "48eb75e1-ed81-471a-a774-d4caf3d52bbd",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        -128
      ],
      "parameters": {
        "color": 6,
        "width": 496,
        "height": 368,
        "content": "## UGCImage generated sent to Telegram"
      },
      "typeVersion": 1
    },
    {
      "id": "1cb6780e-468d-4b9e-87d2-dd5d0152db53",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -352
      ],
      "parameters": {
        "color": 7,
        "width": 2400,
        "height": 752,
        "content": "## This workflow automates the creation of UGC (User-Generated Content) images by allowing users to submit a form containing:\n\nA character type selection (e.g., male or female)\n\nAn uploaded image (e.g., a photo or artwork)\n\nIt then processes the input, sends it to an AI model (Google Gemini via OpenRouter) to generate a creative response or description, and finally posts the image + AI-generated content to a Telegram channel."
      },
      "typeVersion": 1
    },
    {
      "id": "fd1e5d7b-bbcb-4478-aa8e-18d85503c8e9",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        -352
      ],
      "parameters": {
        "width": 720,
        "height": 1344,
        "content": "## This workflow automates the process of generating personalized UGC (User-Generated Content) images based on form submissions.\n\nIt accepts a form with a character type (e.g., male/female) and an uploaded image, merges them, sends them to an AI model (Google Gemini via OpenRouter) for creative generation, and posts the resulting content as a Telegram photo message.\n\n## Who’s it for\n\nThis automation template is designed for marketers, AI creators, content teams, or interactive community platforms that want to let users submit content (image + character type), enrich it with AI-generated descriptions, and instantly publish results to Telegram — without writing a single line of code.\n\n## How it works\n\n- Trigger: Workflow starts when a form is submitted by a user.\n\n- Extract file: The uploaded image file is converted to a Base64 string.\n\n- Merge data: The character type and image data are combined into one payload.\n\n- Format to Data URL: The image is wrapped as a proper data:image/... format for API use.\n\n- Prepare payload: The text and image are mapped into a structure compatible with Gemini API.\n\n- Generate AI content: Sends the input to Google Gemini (via OpenRouter) to generate a UGC description.\n\n- Transform response: Cleans and extracts the result from Gemini’s response.\n\n- Convert back to file: Transforms the Base64 image back into a real image file.\n\n- Send to Telegram: The image and its AI-generated description are sent as a photo message to your Telegram channel.\n\n## How to use\n\n- Set up a form with a dropdown for character type (e.g., Male/Female) and an image upload field.\n\n- Configure the Gemini API access through OpenRouter.\n\n- Connect your Telegram bot and channel to receive the final result.\n\n- Start the workflow → users submit the form, and their data is processed and shared as AI-enhanced UGC.\n\n## Requirements\n\n- OpenRouter API key to access Google Gemini.\n\n- A Telegram Bot connected to your Telegram channel.\n\n## ❓ Need help\n\n**Contact me for consulting and support:** [LinkedIn](https://www.linkedin.com/in/jaures-nya-83a033270/) / [YouTube](https://www.youtube.com/@jauresnya) / [Skool](https://www.skool.com/gaia-4903/about?ref=e0430e4c35b645ac8976b952768e9d55)  "
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "45583225-c701-4d95-8ca6-6f650fdd08ad",
  "connections": {
    "4d644794-edfa-411e-950e-2a35aee608bf": {
      "main": [
        [
          {
            "node": "15aee33e-9193-4bb2-9f9a-cc4ed5cd8eb5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "15aee33e-9193-4bb2-9f9a-cc4ed5cd8eb5": {
      "main": [
        [
          {
            "node": "80f40071-4c24-4dd5-bc6a-9cab0fcfa7e6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ef8c6191-80bf-40fb-ad4d-f7d9ad0d3978": {
      "main": [
        [
          {
            "node": "813f07a4-a764-4284-9388-cc3a46b50c13",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "80f40071-4c24-4dd5-bc6a-9cab0fcfa7e6": {
      "main": [
        [
          {
            "node": "ef8c6191-80bf-40fb-ad4d-f7d9ad0d3978",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b95becf0-1bdd-4e55-9040-a428cd6eb3e3": {
      "main": [
        [
          {
            "node": "4d644794-edfa-411e-950e-2a35aee608bf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "76f275ec-0500-4df8-a533-1afd5e5ccf7a": {
      "main": [
        [
          {
            "node": "68788867-9960-4c5e-a08c-802ce0604215",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "68788867-9960-4c5e-a08c-802ce0604215": {
      "main": [
        [
          {
            "node": "b95becf0-1bdd-4e55-9040-a428cd6eb3e3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1a80e40a-b565-4a94-8d50-18ed5a12f2ff": {
      "main": [
        [
          {
            "node": "68788867-9960-4c5e-a08c-802ce0604215",
            "type": "main",
            "index": 0
          },
          {
            "node": "76f275ec-0500-4df8-a533-1afd5e5ccf7a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

中級 - コンテンツ作成, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

家居装饰AI(Google Nano Banana)- Santhej Kallada
Google Geminiを基盤としたAI画像生成・編集およびTelegramボット
If
Set
Code
+
If
Set
Code
28 ノードSanthej Kallada
コンテンツ作成
✨🩷自動化ソーシャルメディアコンテンツ公開工厂 + 系统提示组合
基于动态系统提示とGPT-4oのAI驱动多平台ソーシャルメディアコンテンツ工厂
If
Set
Code
+
If
Set
Code
100 ノードAmit Mehta
コンテンツ作成
Instagramの趨勢電卓ブックからSEOコンテンツを生成して保存(SharePoint/Drive/Dropbox)
GPT-4o、FAL AI、複数ストレージによるトレンドの自動SEOコンテンツ生成
If
Set
Code
+
If
Set
Code
47 ノードplemeo
コンテンツ作成
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
OpenAI、ElevenLabs、Fal.ai を使用した動画・パ odcast・ASM R向けのウイルス性コンテンツ自動作成
OpenAI、ElevenLabs、そして Fal.ai を使って動画、ポッドキャスト、ASMR に向けたウイルスのコンテンツ作成を自動化
Set
Code
Wait
+
Set
Code
Wait
97 ノードAdam Crafts
コンテンツ作成
WooCommerce_テンプレートに自動投稿
Telegram チャンネル投稿を WooCommerce 製品に自動変換する
If
Set
Code
+
If
Set
Code
26 ノードShohani
コンテンツ作成
ワークフロー情報
難易度
中級
ノード数15
カテゴリー2
ノードタイプ9
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

作成者
Jaures NYA

Jaures NYA

@jauresnya

Je rends l’IA claire et pratique même pour ceux qui débutent

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34