8
n8n 中文网amn8n.com

🤖 AI Instagram 表情包生成器

中级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 11 个节点。主要使用 If, Wait, HttpRequest, StopAndError, ScheduleTrigger 等节点。 使用 MagicHour AI 和 GPT-4 生成病毒式表情包并发布到 Instagram

前置要求
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "YOUR_WORKFLOW_ID",
  "meta": {
    "instanceId": "YOUR_INSTANCE_ID",
    "templateId": "ai-instagram-meme-generator",
    "templateCredsSetupCompleted": false
  },
  "name": "🤖 AI Instagram 表情包生成器",
  "tags": [
    "social-media",
    "instagram",
    "ai",
    "automation",
    "memes",
    "content-creation",
    "late-api",
    "viral-content"
  ],
  "nodes": [
    {
      "id": "wait-for-generation",
      "name": "⏳ 等待生成",
      "type": "n8n-nodes-base.wait",
      "notes": "Allows time for AI meme generation to complete",
      "position": [
        680,
        240
      ],
      "webhookId": "YOUR_WEBHOOK_ID",
      "parameters": {
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "schedule-trigger",
      "name": "📅 定时触发器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Runs every 12 hours - customize the interval as needed",
      "position": [
        240,
        240
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 12
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "get-generated-image",
      "name": "🖼️ 获取生成图片",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Retrieves the completed meme from MagicHour API",
      "position": [
        920,
        240
      ],
      "parameters": {
        "url": "=https://api.magichour.ai/v1/image-projects/{{ $('🎨 Generate Meme').item.json.id }}",
        "options": {
          "retry": {
            "enabled": true,
            "maxAttempts": 3,
            "waitBetween": 1000
          },
          "timeout": 30000
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_MAGICHOUR_API_KEY"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_MAGICHOUR_CREDENTIAL_ID",
          "name": "MagicHour API"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "generate-meme",
      "name": "🎨 生成表情包",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Creates AI-generated meme using MagicHour API - customize the topic prompt for your niche",
      "position": [
        460,
        240
      ],
      "parameters": {
        "url": "https://api.magichour.ai/v1/ai-meme-generator",
        "method": "POST",
        "options": {
          "retry": {
            "enabled": true,
            "maxAttempts": 2,
            "waitBetween": 2000
          },
          "timeout": 30000
        },
        "jsonBody": "{\n  \"name\": \"AI Generated Meme - {{ new Date().toISOString() }}\",\n  \"style\": {\n    \"topic\": \"Create a funny, relatable meme that would go viral on Instagram. Focus on everyday situations, trending topics, or universal experiences that people can relate to. Keep it light-hearted and shareable. Avoid controversial topics.\",\n    \"template\": \"Random\",\n    \"searchWeb\": true\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_MAGICHOUR_API_KEY"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_MAGICHOUR_CREDENTIAL_ID",
          "name": "MagicHour API"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "check-image-ready",
      "name": "✅ 检查图片就绪状态",
      "type": "n8n-nodes-base.if",
      "notes": "Validates that the meme was generated successfully before proceeding",
      "position": [
        1160,
        240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "image-check",
              "operator": {
                "type": "boolean",
                "operation": "equal"
              },
              "leftValue": "={{ $json.downloads && $json.downloads.length > 0 }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "generate-caption",
      "name": "📝 生成AI标题",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "Creates engaging Instagram caption with hashtags using GPT-4",
      "position": [
        1400,
        160
      ],
      "parameters": {
        "text": "Analyze this meme image and write a viral Instagram caption that will maximize engagement. Requirements:\n\n1. Write 1-2 sentences that are funny, relatable, and encourage interaction\n2. Include 5-8 relevant hashtags that match the meme content\n3. Add a call-to-action (like 'Tag someone who...', 'Double tap if...', or 'Comment if...')\n4. Keep the total caption under 150 characters for better mobile viewing\n5. Use emojis strategically but don't overuse them\n6. Make it shareable - something people want to repost\n\nDO NOT include quotation marks, intro text, or explanations. Write ONLY the final caption ready to post.",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "resource": "image",
        "imageUrls": "={{ $json.downloads[0].url }}",
        "operation": "analyze"
      },
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI Account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "post-to-instagram",
      "name": "📱 发布到Instagram",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Schedules the meme post to Instagram via Late API - posts 5 minutes after generation",
      "position": [
        1880,
        160
      ],
      "parameters": {
        "url": "https://getlate.dev/api/v1/posts",
        "method": "POST",
        "options": {
          "retry": {
            "enabled": true,
            "maxAttempts": 3,
            "waitBetween": 2000
          },
          "timeout": 15000
        },
        "jsonBody": "={\n  \"content\": \"{{ $('📝 Generate AI Caption').item.json.content }}\",\n  \"scheduledFor\": \"{{ new Date(Date.now() + 5*60*1000).toISOString() }}\",\n  \"timezone\": \"America/New_York\",\n  \"platforms\": [\n    {\n      \"platform\": \"instagram\",\n      \"accountId\": \"YOUR_INSTAGRAM_ACCOUNT_ID\"\n    }\n  ],\n  \"mediaItems\": [\n    {\n      \"type\": \"image\",\n      \"url\": \"{{ $('🖼️ Get Generated Image').item.json.downloads[0].url }}\",\n      \"altText\": \"AI-generated meme for Instagram engagement\"\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_LATE_API_CREDENTIAL_ID",
          "name": "Late API"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "get-profiles",
      "name": "👤 获取最新个人资料",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Retrieves your Late account profiles - used for account validation",
      "position": [
        1400,
        320
      ],
      "parameters": {
        "url": "https://getlate.dev/api/v1/profiles",
        "options": {
          "timeout": 10000
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_LATE_API_CREDENTIAL_ID",
          "name": "Late API"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "get-accounts",
      "name": "🔗 获取已连接账户",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Gets your connected social media accounts from Late",
      "position": [
        1640,
        320
      ],
      "parameters": {
        "url": "https://getlate.dev/api/v1/accounts",
        "options": {
          "timeout": 10000
        },
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "profileId",
              "value": "YOUR_LATE_PROFILE_ID"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_LATE_API_CREDENTIAL_ID",
          "name": "Late API"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "handle-generation-error",
      "name": "❌ 处理生成错误",
      "type": "n8n-nodes-base.stopAndError",
      "notes": "Gracefully handles cases where meme generation fails",
      "position": [
        1160,
        400
      ],
      "parameters": {
        "content": "🚨 Meme generation failed! \n\nThe AI couldn't create a meme this time. This might be due to:\n- API rate limits\n- Temporary service issues\n- Network connectivity problems\n\nThe workflow will try again in the next scheduled run (12 hours).\n\nNo action needed - this is automatically handled! ✅",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "log-success",
      "name": "📊 记录成功",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Optional: Logs successful workflow execution - replace URL with your logging service",
      "position": [
        2120,
        160
      ],
      "parameters": {
        "url": "https://httpbin.org/post",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"workflow_run\": {\n    \"timestamp\": \"{{ new Date().toISOString() }}\",\n    \"status\": \"success\",\n    \"meme_generated\": true,\n    \"caption_created\": true,\n    \"instagram_scheduled\": true,\n    \"image_url\": \"{{ $('🖼️ Get Generated Image').item.json.downloads[0].url }}\",\n    \"caption_preview\": \"{{ $('📝 Generate AI Caption').item.json.content.substring(0, 50) }}...\",\n    \"next_run\": \"{{ new Date(Date.now() + 12*60*60*1000).toISOString() }}\"\n  }\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": {
      "errorWorkflow": "",
      "continueOnFail": false
    },
    "executionOrder": "v1",
    "saveManualExecutions": true
  },
  "versionId": "YOUR_VERSION_ID",
  "connections": {
    "generate-meme": {
      "main": [
        [
          {
            "node": "wait-for-generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "check-image-ready": {
      "main": [
        [
          {
            "node": "generate-caption",
            "type": "main",
            "index": 0
          },
          {
            "node": "get-profiles",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "handle-generation-error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "schedule-trigger": {
      "main": [
        [
          {
            "node": "generate-meme",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get-profiles": {
      "main": [
        [
          {
            "node": "get-accounts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "post-to-instagram": {
      "main": [
        [
          {
            "node": "log-success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "wait-for-generation": {
      "main": [
        [
          {
            "node": "get-generated-image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "generate-caption": {
      "main": [
        [
          {
            "node": "post-to-instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get-accounts": {
      "main": [
        [
          {
            "node": "post-to-instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get-generated-image": {
      "main": [
        [
          {
            "node": "check-image-ready",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - 内容创作, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量11
分类2
节点类型6
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

外部链接
在 n8n.io 查看

分享此工作流

分类

分类: 34