RSS から LinkedIn への自動投稿機能
上級
これはSocial Media, Multimodal AI分野の自動化ワークフローで、19個のノードを含みます。主にIf, Code, LinkedIn, Aggregate, HttpRequestなどのノードを使用。 RSS + Gemini AI + Templated.ioを使用してLinkedInの企業ページに自動のに企画立案し公開
前提条件
- •LinkedIn API認証情報
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Gemini API Key
使用ノード (19)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"templateCredsSetupCompleted": false
},
"name": "RSS to LinkedIn Auto-Poster",
"nodes": [
{
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
-360
],
"parameters": {
"width": 384,
"height": 704,
"content": "## 🧠 Workflow Overview \n\nThis workflow automatically curates articles from an RSS feed and turns them into short, ready-to-post LinkedIn updates using **Gemini AI**.\n\n### 🔁 What it does \n- Fetches fresh articles twice a week \n- Uses AI to pick the most relevant one for your audience \n- Summarizes it into a crisp LinkedIn-style post \n- Checks post quality → only publishes if score ≥ 7/10 \n- Creates a graphic using Templated\n- Auto-posts to your LinkedIn Page \n\n### ⚙️ What you need \n- Gemini API credentials \n- LinkedIn OAuth2 connection \n- Any RSS feed URL (replace the default)\n- Templated API\n"
},
"typeVersion": 1,
"id": "--0"
},
{
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
176
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Curator\nRSS Read curates articles and sends to Article Finder"
},
"typeVersion": 1,
"id": "-1-1"
},
{
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1264,
16
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Creator & Optimizer\nCreates Content & Optimizes"
},
"typeVersion": 1,
"id": "-2-2"
},
{
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2176,
160
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Designer & Poster\nCreates Design & Posts on LinkedIn"
},
"typeVersion": 1,
"id": "-3-3"
},
{
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 11 * * TUE"
},
{
"field": "cronExpression",
"expression": "0 11 * * THU"
}
]
}
},
"typeVersion": 1.2,
"id": "--4"
},
{
"name": "RSS読み取り",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
224,
300
],
"parameters": {
"url": "https://blog.hubspot.com/marketing/rss.xml",
"options": {}
},
"retryOnFail": true,
"typeVersion": 1.2,
"id": "RSS--5"
},
{
"name": "集約",
"type": "n8n-nodes-base.aggregate",
"position": [
448,
300
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "title"
},
{
"fieldToAggregate": "content"
},
{
"fieldToAggregate": "link"
}
]
}
},
"typeVersion": 1,
"id": "--6"
},
{
"name": "ニュースを1つのアイテムにまとめる",
"type": "n8n-nodes-base.code",
"position": [
672,
300
],
"parameters": {
"jsCode": "// Inputs expected from Aggregate/RSS: arrays: title[], content[], link[]\nconst all = items[0].json; // aggregated item\nconst titles = all.title || [];\nconst contents = all.content || [];\nconst links = all.link || [];\n\nconst articles = [];\nconst lines = [];\n\nconst maxLen = Math.max(titles.length, contents.length, links.length);\nfor (let i = 0; i < maxLen; i++) {\n const obj = {\n id: i + 1, // stable ID (1..N). Use guid if you have one.\n title: titles[i] ?? \"\",\n content: contents[i] ?? \"\",\n link: links[i] ?? \"\"\n };\n articles.push(obj);\n // Short preview for the AI to choose from:\n const preview = (obj.content || \"\").replace(/\\s+/g, \" \").slice(0, 220);\n lines.push(`${obj.id}. ${obj.title}\\n${preview}${preview.length === 220 ? \"…\" : \"\"}`);\n}\n\nreturn [\n {\n json: {\n articles, // keep the structured mapping\n forAI: lines.join(\"\\n\\n\") // human-readable list for the model\n }\n }\n];"
},
"typeVersion": 2,
"id": "-1--7"
},
{
"name": "ベスト記事ファインダー",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
896,
300
],
"parameters": {
"text": "=You are (company name) content curator. Select the BEST article for our audience.\n\nCOMPANY AUDIENCE:\n\n\nSELECTION CRITERIA:\nCHECK:\n- Can someone practically apply this TODAY or is it just knowledge?\n- Will they want to save this?\n\nSKIP ARTICLES ABOUT:\n- Pure theory without practical steps\n\nPick only 1 and give only {{ $json.articles[0].link }} as output\n\n{{ $json.forAI }}\n\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2,
"id": "--8"
},
{
"name": "Google Gemini チャットモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
968,
524
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"id": "Google-Gemini--9"
},
{
"name": "Google Gemini チャットモデル1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1320,
400
],
"parameters": {
"options": {}
},
"typeVersion": 1,
"id": "Google-Gemini-1-10"
},
{
"name": "コンテンツ作成",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1248,
176
],
"parameters": {
"text": "=Turn blog into quick byte below 200 words. \n\nCOMPANY AUDIENCE:\n\n\nWRITING RULES:\n- Write for the audience keeping in mind that they need opinion/insights, they don't have time to spare so be very on point and crisp and profound\n- Include specific numbers/time when possible\n- Keep it to the point like in news/bulletin \n- Always use bullets/classified structure, no extra output needed\n\nHere is the blog to use: {{ $json.output }}",
"options": {},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 2.2,
"id": "--11"
},
{
"name": "投稿の最適化",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1600,
176
],
"parameters": {
"text": "=Analyze this post deeply\n\nPost = {{ $json.output }}\n\nCHECK & OPTIMIZE FOR:\n- Can someone practically apply this TODAY or is it just knowledge?\n- Will THEY want to save this?\n- Does this have fluff/filler words that inflate sentences? Keep sentences small and easy to read.\n- Does it look AI Generated? Prefer human sentence construction\n- No emoji, use → or other symbols for bullets, don't use * or em dash in post, space after every bullet\n- Analyze First line: should not be in text:text format, only mention crux like \"loop marketing strategy\", or use title like \"here's why you need loop marketing\"\n\nAlso create a headline for image for this post, keep it crisp and catchy\n\nOUTPUT:\n{\n \"final_post\": \"[LinkedIn-ready post]\",\n\"image_text\": \"[Headline for image= what the post is about]\"\n \"confidence_score\": [1-10],\n \"post_now\": [true if score >= 7]\n} ",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 2.2,
"id": "--12"
},
{
"name": "Google Gemini チャットモデル2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1608,
400
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-pro"
},
"typeVersion": 1,
"id": "Google-Gemini-2-13"
},
{
"name": "構造化出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1736,
400
],
"parameters": {
"jsonSchemaExample": "{\n \"final_post\": \"[LinkedIn-ready post]\",\n \"image_text\": \"[Image Title Catcy]\",\n \"confidence_score\": [10],\n \"post_now\": [true]\n} "
},
"typeVersion": 1.3,
"id": "--14"
},
{
"name": "If (条件分岐)",
"type": "n8n-nodes-base.if",
"position": [
1952,
300
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.output.post_now[0] }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2.2,
"id": "If--15"
},
{
"name": "Templated",
"type": "n8n-nodes-templated.templated",
"position": [
2176,
300
],
"parameters": {
"layers": {
"layer": [
{
"text": "={{ $json.output.image_text }}",
"layerName": "paragraph-text"
}
]
},
"template": "",
"requestOptions": {}
},
"retryOnFail": true,
"typeVersion": 1,
"id": "Templated-16"
},
{
"name": "投稿を作成",
"type": "n8n-nodes-base.linkedIn",
"position": [
2624,
300
],
"parameters": {
"text": "={{ $('Post optimizer').item.json.output.final_post }}",
"postAs": "organization",
"organization": "",
"additionalFields": {},
"shareMediaCategory": "IMAGE"
},
"typeVersion": 1,
"id": "--17"
},
{
"name": "HTTP リクエスト",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
300
],
"parameters": {
"url": "={{ $json.render_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2,
"id": "HTTP--18"
}
],
"pinData": {},
"connections": {
"If--15": {
"main": [
[
{
"node": "Templated-16",
"type": "main",
"index": 0
}
],
[
{
"node": "--8",
"type": "main",
"index": 0
}
]
]
},
"RSS--5": {
"main": [
[
{
"node": "--6",
"type": "main",
"index": 0
}
]
]
},
"--6": {
"main": [
[
{
"node": "-1--7",
"type": "main",
"index": 0
}
]
]
},
"Templated-16": {
"main": [
[
{
"node": "HTTP--18",
"type": "main",
"index": 0
}
]
]
},
"HTTP--18": {
"main": [
[
{
"node": "--17",
"type": "main",
"index": 0
}
]
]
},
"--12": {
"main": [
[
{
"node": "If--15",
"type": "main",
"index": 0
}
]
]
},
"--11": {
"main": [
[
{
"node": "--12",
"type": "main",
"index": 0
}
]
]
},
"--4": {
"main": [
[
{
"node": "RSS--5",
"type": "main",
"index": 0
}
]
]
},
"--8": {
"main": [
[
{
"node": "--11",
"type": "main",
"index": 0
}
]
]
},
"Google-Gemini--9": {
"ai_languageModel": [
[
{
"node": "--8",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"--14": {
"ai_outputParser": [
[
{
"node": "--12",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Google-Gemini-1-10": {
"ai_languageModel": [
[
{
"node": "--11",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google-Gemini-2-13": {
"ai_languageModel": [
[
{
"node": "--12",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"-1--7": {
"main": [
[
{
"node": "--8",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - ソーシャルメディア, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
コンテンツ集約
Gemini AIを使ってウェブ記事からLinkedInとX/Twitterへのソーシャルメディア投稿を自動化する
If
Set
Xml
+
If
Set
Xml
34 ノードVadim
コンテンツ作成
ArunavaのマルチエージェントインタリジャエントReddit自動化
AIによるブランドメンションとBaserowを使用してRedditの投稿に自動のにコメントを投稿
If
Set
Code
+
If
Set
Code
35 ノードArunava
ソーシャルメディア
コンテンツジェネレーター v3
AI驱动ブログ自動化:使用GPT-4生成并公開SEO記事至WordPressとTwitter
If
Set
Code
+
If
Set
Code
144 ノードJay Emp0
コンテンツ作成
Gemini AI と Flux 画像生成で人気投稿分析から LinkedIn コンテンツを自動作成
人気の投稿分析を通じて Gemini AI と Flux 画像生成による LinkedIn コンテンツの自動作成
Code
Wait
Filter
+
Code
Wait
Filter
20 ノードRoshan Ramani
コンテンツ作成
LinkedInおよびXウイルスのなコンテンツ自動エンジン
AIを使ってLinkedInとXにウイルスのなコンテンツを自動生成して公開する
If
Set
Wait
+
If
Set
Wait
156 ノードDiptamoy Barman
コンテンツ作成
Claude、OpenAI、およびPerplexityを使用して品牌のなLinkedInコンテンツを自動生成・スケジュール
Claude、OpenAI、Perplexityを使ってブランド向けLinkedInコンテンツを自動生成してスケジュール
Code
Limit
Linked In
+
Code
Limit
Linked In
23 ノードAbdul Mir
ソーシャルメディア