JinaAI および Gemini-GPT を使用して記事を Bluesky スレッド投稿に変換

上級

これはAI Summarization, Multimodal AI分野の自動化ワークフローで、21個のノードを含みます。主にIf, Set, Code, Wait, JinaAiなどのノードを使用。 Articel を JinaAI および Gemini/GPT で Bluesky スレッド投稿へ変換

前提条件
  • Telegram Bot Token
  • OpenAI API Key
  • Google Gemini API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "a5fd400c6ce3e6fce31bb31916a9cfa04e30e08115d80423a7e69507457fa5bb",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "3209ae09-810e-4b97-84fa-7a6a55c2bc51",
      "name": "Gemini",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        672,
        448
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "1j4LpZni96FuQhiY",
          "name": "DevUratelier"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9ab04e86-e205-4771-ade5-854fa6f1aa07",
      "name": "投稿を作成",
      "type": "n8n-nodes-bluesky-enhanced.bluesky",
      "position": [
        2144,
        128
      ],
      "parameters": {
        "postText": "={{ $json.data }}"
      },
      "credentials": {
        "blueskyApi": {
          "id": "wMptX8gmJ4XyHZcj",
          "name": "khaisastudio"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "388e2b67-29a7-449d-9adf-3efb4040d4f3",
      "name": "Telegram Input Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        0,
        0
      ],
      "webhookId": "0356d21b-18e9-4b55-88b5-e417446d7a7d",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "9Dco5JlAC7OO3zas",
          "name": "Khaisa Develompen Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ffd5f23b-9692-46f8-bbbf-3d636541a3c6",
      "name": "RSSフィード - AI Trends",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        0,
        576
      ],
      "parameters": {
        "feedUrl": "https://www.aitrends.com/feed/",
        "pollTimes": {
          "item": [
            {
              "hour": 0
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c83fb2d3-d1e9-4adf-b194-0c0fcb33c698",
      "name": "RSSフィード - Machine Learning Mastery",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        0,
        384
      ],
      "parameters": {
        "feedUrl": "https://machinelearningmastery.com/blog/feed/",
        "pollTimes": {
          "item": [
            {
              "hour": 18
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2ca69e66-0349-48c5-a631-148a1852c831",
      "name": "RSSフィード - Technology Review",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        0,
        192
      ],
      "parameters": {
        "feedUrl": "https://www.technologyreview.com/feed/",
        "pollTimes": {
          "item": [
            {
              "hour": 22
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
      "name": "入力URLを準備",
      "type": "n8n-nodes-base.set",
      "position": [
        224,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5f28758b-5440-44da-af94-0a3c7f53db32",
              "name": "inputUrl",
              "type": "string",
              "value": "={{ $json.link || $json.message.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b168e57e-5af2-48dd-8442-8bf09b46a2fa",
      "name": "Webコンテンツを抽出 (JinaAI)",
      "type": "n8n-nodes-base.jinaAi",
      "position": [
        448,
        288
      ],
      "parameters": {
        "url": "={{ $json.inputUrl }}",
        "options": {},
        "requestOptions": {}
      },
      "credentials": {
        "jinaAiApi": {
          "id": "2WpVyhvkXlQ9CB1x",
          "name": "AI for Motu"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e",
      "name": "コンテンツをスレッドに変換",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        672,
        288
      ],
      "parameters": {
        "text": "=Title: {{ $json.title }}\nDescription: {{ $json.description }}\n\nContent: {{ $json.content }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=You are a social media strategist crafting high-performing Threads posts.\nYour mission: take the input content and turn it into a captivating, scroll-stopping Threads thread. Follow these principles:\n\n1. Hook Like a Pro\nOpen with a post that makes people stop scrolling—create intrigue without lying.\n\nUse curiosity-driven hooks such as:\n\n\"This changes everything about…\"\n\n\"Most people don’t realize that…\"\n\nA bold but truthful statement.\n\nPose questions or statements that leave a knowledge gap people want to fill.\n\nKeep it authentic—never trick your audience.\n\n2. Make It Flow\nBreak the content into short, clear, and connected posts.\n\nEvery post should push the reader to the next one.\n\nKeep language simple and conversational (unless technical accuracy is critical).\n\n3. Engage Without Overdoing It\nUse humor lightly—only if it fits naturally.\n\nAvoid emojis unless they genuinely enhance the point.\n\nKeep the core message intact while optimizing for retention and shareability.\n\n4. Exact Output Rules\nFormat:\nNever use a dash or em dash, consider substituting it with other punctuation like commas or rephrase the sentence to eliminate the interruption entirely\n\nWrap the entire thread in [THREADSTART] and [THREADEND].\n\nSeparate each post with -cutthread-.\nA post is maximum of 300 character\n\n\nExample:\n\n[THREADSTART]\nFirst post content here\n-cutthread-\nSecond post content here\n-cutthread-\nThird post content here\n-cutthread-\nlastpost must be:\n\"Read more on: {{ $('Prepare Input URL').item.json.inputUrl }}\n\nGet AI automation to make life easier on https://khaisa.studio\"\n[THREADEND]\n\n\n\nOutput only the transformed thread. No greetings, explanations, or meta-notes.\n"
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "a7846af1-bfd9-480d-bfcf-822b1b0c3954",
      "name": "次の投稿で返信",
      "type": "n8n-nodes-bluesky-enhanced.bluesky",
      "position": [
        2144,
        320
      ],
      "parameters": {
        "cid": "={{ $('Store Post URI and CID').first(0, $runIndex).json.cid }}",
        "uri": "={{ $('Store Post URI and CID').first(0, $runIndex).json.uri }}",
        "operation": "reply",
        "replyText": "={{ $json.data }}"
      },
      "credentials": {
        "blueskyApi": {
          "id": "wMptX8gmJ4XyHZcj",
          "name": "khaisastudio"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d19235e2-1afb-432d-a67c-54e2be4b4196",
      "name": "次の返信前に待機",
      "type": "n8n-nodes-base.wait",
      "position": [
        2368,
        320
      ],
      "webhookId": "7eedbf8e-f9d5-4e57-9460-731adb238217",
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "f25c81e6-e51d-49c0-88b5-8a6b5c05c549",
      "name": "次の投稿前に待機 (初回)",
      "type": "n8n-nodes-base.wait",
      "position": [
        2368,
        128
      ],
      "webhookId": "7eedbf8e-f9d5-4e57-9460-731adb238217",
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "42f0a200-6ab7-4b14-a106-96d3cd5c53d6",
      "name": "投稿URIとCIDを保存",
      "type": "n8n-nodes-base.set",
      "position": [
        2592,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "917b7937-db3d-4cc8-974d-d294e99f6b2f",
              "name": "uri",
              "type": "string",
              "value": "={{ $json.uri }}"
            },
            {
              "id": "94914b8d-8def-4bcf-8882-6423c878b347",
              "name": "cid",
              "type": "string",
              "value": "={{ $json.cid }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "daa3032f-45c7-425f-87b8-5e9f813152c2",
      "name": "初回投稿条件のチェック",
      "type": "n8n-nodes-base.if",
      "position": [
        1920,
        224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "233a4b45-8983-42a1-9c18-5922cebc69ee",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $runIndex }}",
              "rightValue": 1
            }
          ]
        }
      },
      "executeOnce": false,
      "typeVersion": 2.2,
      "alwaysOutputData": false
    },
    {
      "id": "696904d2-25f1-4ae2-9a30-c97ee39109dd",
      "name": "スレッドを投稿に分割",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1472,
        288
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "a291587b-eb4d-43e6-b167-37249a0d9fc1",
      "name": "スレッドテキストをクリーンアップ",
      "type": "n8n-nodes-base.code",
      "position": [
        1248,
        288
      ],
      "parameters": {
        "jsCode": "// Mengambil teks dari input menggunakan sintaks yang Anda tentukan.\nconst fullText = $input.first().json.data\n\n// Regex untuk mengekstrak blok thread.\nconst regex = /\\[THREADSTART\\]([\\s\\S]*?)\\[THREADEND\\]/;\nconst match = fullText.match(regex);\n\n// Variabel untuk menampung hasil akhir.\nlet finalArray = [];\n\n// Jika blok thread ditemukan, proses isinya.\nif (match && match[1]) {\n  const contentBlock = match[1];\n\n  // Pisahkan string menjadi array, lalu bersihkan setiap elemen.\n  finalArray = contentBlock\n    .split('-cutthread-')\n    .map(thread => thread.trim())\n    .filter(thread => thread.length > 0);\n}\n\n// Kembalikan satu item baru dengan format yang Anda inginkan.\n// Stuktur { json: { ... } } adalah format standar n8n untuk item.\nreturn [{\n  json: {\n    data: finalArray\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "7bb36ded-ac68-4b04-803d-de3606a01bd1",
      "name": "スレッドデータを準備",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4b70d452-77d7-4880-86a1-efa589defdec",
              "name": "data",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ccfde7ea-492e-4e60-8512-99a9975d08a2",
      "name": "投稿をループ処理",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1696,
        288
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "e45bae01-92bb-492d-b57d-5cd946bb39b3",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        608
      ],
      "parameters": {
        "width": 528,
        "height": 208,
        "content": "## 📌 How to Get Credentials\n\n- **Telegram Bot** → Create a bot via [@BotFather](https://t.me/botfather), copy the *API Token*.  \n- **JinaAI** → Sign up at [jina.ai](https://jina.ai), get your *API Key* from the dashboard.  \n- **Google Gemini** → Enable the API at [Google AI Studio](https://makersuite.google.com/), generate an *API Key*.  \n- **Bluesky** → Log in at [Bluesky](https://bsky.app), create an *App Password* in settings.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "ce910a82-f680-4712-be9b-430dfffafb7b",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        608
      ],
      "parameters": {
        "width": 528,
        "height": 208,
        "content": "## Error Handling\n\n- If JinaAI fails → check URL is valid & accessible.  \n- If Gemini times out → reduce prompt size or simplify input.  \n- If Bluesky rejects post → check App Password validity or rate limits.  \n- Always test with a small sample before running full automation.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "d7bb0bac-1edc-4e23-aa24-0bd58624aa43",
      "name": "Alt",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        816,
        448
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "4CbQgQZVTRffRYMp",
          "name": "Khaisa: aiformotu"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "pinData": {},
  "connections": {
    "3209ae09-810e-4b97-84fa-7a6a55c2bc51": {
      "ai_languageModel": [
        [
          {
            "node": "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "9ab04e86-e205-4771-ade5-854fa6f1aa07": {
      "main": [
        [
          {
            "node": "f25c81e6-e51d-49c0-88b5-8a6b5c05c549",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a291587b-eb4d-43e6-b167-37249a0d9fc1": {
      "main": [
        [
          {
            "node": "696904d2-25f1-4ae2-9a30-c97ee39109dd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "64fe0144-f553-442a-9c74-e61fcb0e2a0c": {
      "main": [
        [
          {
            "node": "b168e57e-5af2-48dd-8442-8bf09b46a2fa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7bb36ded-ac68-4b04-803d-de3606a01bd1": {
      "main": [
        [
          {
            "node": "a291587b-eb4d-43e6-b167-37249a0d9fc1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ffd5f23b-9692-46f8-bbbf-3d636541a3c6": {
      "main": [
        [
          {
            "node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a7846af1-bfd9-480d-bfcf-822b1b0c3954": {
      "main": [
        [
          {
            "node": "d19235e2-1afb-432d-a67c-54e2be4b4196",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "42f0a200-6ab7-4b14-a106-96d3cd5c53d6": {
      "main": [
        [
          {
            "node": "ccfde7ea-492e-4e60-8512-99a9975d08a2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "388e2b67-29a7-449d-9adf-3efb4040d4f3": {
      "main": [
        [
          {
            "node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d19235e2-1afb-432d-a67c-54e2be4b4196": {
      "main": [
        [
          {
            "node": "42f0a200-6ab7-4b14-a106-96d3cd5c53d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "696904d2-25f1-4ae2-9a30-c97ee39109dd": {
      "main": [
        [
          {
            "node": "ccfde7ea-492e-4e60-8512-99a9975d08a2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ccfde7ea-492e-4e60-8512-99a9975d08a2": {
      "main": [
        [],
        [
          {
            "node": "daa3032f-45c7-425f-87b8-5e9f813152c2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "daa3032f-45c7-425f-87b8-5e9f813152c2": {
      "main": [
        [
          {
            "node": "9ab04e86-e205-4771-ade5-854fa6f1aa07",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "a7846af1-bfd9-480d-bfcf-822b1b0c3954",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e": {
      "main": [
        [
          {
            "node": "7bb36ded-ac68-4b04-803d-de3606a01bd1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b168e57e-5af2-48dd-8442-8bf09b46a2fa": {
      "main": [
        [
          {
            "node": "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2ca69e66-0349-48c5-a631-148a1852c831": {
      "main": [
        [
          {
            "node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f25c81e6-e51d-49c0-88b5-8a6b5c05c549": {
      "main": [
        [
          {
            "node": "42f0a200-6ab7-4b14-a106-96d3cd5c53d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c83fb2d3-d1e9-4adf-b194-0c0fcb33c698": {
      "main": [
        [
          {
            "node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

上級 - AI要約, マルチモーダルAI

有料ですか?

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

ワークフロー情報
難易度
上級
ノード数21
カテゴリー2
ノードタイプ14
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34