Lightroom 사진 Instagram 자동 게시기(AI 자막)
고급
이것은Social Media, Multimodal AI분야의자동화 워크플로우로, 17개의 노드를 포함합니다.주로 Set, Sort, Limit, DataTable, HttpRequest 등의 노드를 사용하며. Lightroom 사진 Instagram 자동 게시기(AI 자막)
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "57636d705a86a73b059f5900e8853e2c306d74773d27ee7f6c0fae07093009ef"
},
"nodes": [
{
"id": "c5c56fa4-6410-45eb-bc41-c61363f538e5",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
48
],
"parameters": {
"width": 464,
"height": 576,
"content": "### Instagram Auto-Publisher (Lightroom → IG)\n\n**Purpose** \nPick the next unposted photo from **Photos**, build a caption from **ALT + EXIF**, publish via **Instagram Graph API**, then mark it as posted.\n\n**Must-configure**\n- **IG setup:** Instagram **Business/Creator** linked to a **Facebook Page** (Graph API **v23.0**, **long-lived** token).\n- **n8n domain:** Publicly reachable base URL for the Lightroom image webhook.\n- **Lightroom IDs:** Your **LR catalog ID** and asset IDs available in the data table.\n- **Data Table (Photos) columns:** `lr_asset_id`, `alt`, `lr_asset`, `ig_posted_at`, `ig_id`, `ig_caption`.\n- **LLM credentials:** Anthropic (or equivalent) for caption generation.\n- **Selection rule:** Filter rows where **`ig_posted_at` is empty** (only unposted).\n- **Posting cap:** Set your **max posts per run** (the Limit node value).\n- **Schedule:** Your preferred **times/cron** for auto-publishing.\n- **Params node**"
},
"typeVersion": 1
},
{
"id": "1ca855b3-27be-4a12-8c76-dffaef453109",
"name": "행 가져오기",
"type": "n8n-nodes-base.dataTable",
"position": [
-448,
912
],
"parameters": {
"filters": {
"conditions": [
{
"keyName": "ig_posted_at",
"condition": "isEmpty"
}
]
},
"matchType": "allConditions",
"operation": "get",
"returnAll": true,
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "Z4VvX6MjrmHmlAiY",
"cachedResultUrl": "/projects/wrMsdivh0K45jnU5/datatables/Z4VvX6MjrmHmlAiY",
"cachedResultName": "Photos"
}
},
"typeVersion": 1
},
{
"id": "4f8f87b3-7105-4799-96b7-1efcea307fba",
"name": "정렬",
"type": "n8n-nodes-base.sort",
"position": [
-224,
912
],
"parameters": {
"options": {},
"sortFieldsUi": {
"sortField": [
{
"fieldName": "createdAt"
}
]
}
},
"typeVersion": 1
},
{
"id": "e19763a7-714c-4de8-8259-544313f3eb95",
"name": "제한",
"type": "n8n-nodes-base.limit",
"position": [
0,
912
],
"parameters": {},
"typeVersion": 1
},
{
"id": "92b9bb0a-98eb-4e47-94d9-51ff3ed79af5",
"name": "모델에 메시지",
"type": "@n8n/n8n-nodes-langchain.anthropic",
"position": [
432,
912
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "claude-sonnet-4-5-20250929"
},
"options": {},
"messages": {
"values": [
{
"content": "=**ROLE** \nYou write an Instagram caption from ALT text and EXIF metadata. Optimize for search and engagement **without inventing** anything.\n\n**INPUTS** \n- `ALT`: {{ $('Limit').item.json.alt }} \n- `EXIF (JSON or text)`: {{ JSON.stringify(JSON.parse($json.lr_asset).payload) }}\n\n**GOAL** \nProduce **exactly 3 lines** under **220 total characters** (line breaks included): \n1) **Action phrase (-ing) + brief outcome**; include **1–2 intent terms** from ALT if present (e.g., “portrait”, “long exposure”). **Max 12 words.** \n2) **Gear & settings** on one line with an en dash: \n `<CameraModel> + <Lens> — <Shutter> · f/<Aperture> · ISO <ISO> · WB <KelvinIfKnown>` \n - Use EXIF fields **only if present**: make/cameraModel, lensModel, focalLength and FocalLengthIn35mmFilm, fNumber, exposureTime, iso, whiteBalance (Kelvin or “Auto”). \n - If focal length exists but not in lens name, **prefix it** (e.g., `35/1.8`). Display FocalLengthIn35mmFilm too (format: \"(28 mm eq. 35 mm)\")\n - Format shutter `1/250s`; aperture `f/1.8`. \n - Missing field? **Omit** it. **No inference.**\n3) **5–10 hashtags** (lowercase, **deduped**) using layered strategy: \n - **Broad:** always `#photography` + **one** brand/lens tag if present (e.g., `#fujifilm #fujifilmxseries\n #fujilove`, `#xe5`). \n - **Mid-tail:** 1–3 subject/genre from ALT (e.g., `#portrait`, `#streetphotography`). \n - **Niche:** 1–2 specific technique/gear terms from ALT/EXIF. \n - **Location:** add 1–2 only if GPS/city exists in EXIF (e.g., `#paris`, `#montmartre`).\n - **Mentions:** if the EXIF description/caption/title/userComment contains Instagram-style mentions (e.g., `@name`), **append them verbatim at the end of line 3 after the hashtags**. Deduplicate; do not invent; preserve exact handles. If the 220-character limit is exceeded, **remove niche hashtags first**, then mid-tail if needed, but keep mentions.\n\n\n**STYLE & SEO RULES** \n- English only. Human, concise, non-salesy. \n- No emojis unless clearly in ALT. No quotes. **No trailing spaces.** \n- **Zero inference:** do not assert people/brands/places/conditions not in ALT/EXIF. \n- **Deduplicate intelligently:** avoid repeating the exact same keyword in line 1 and hashtags if it reduces variety; keep the most useful mix for search. \n- Keep line 2 compact and readable (models/settings aid search without spam).\n\n**OUTPUT (exact format)** \n<action + outcome with intent terms>\n<gear & settings>\n<hashtags>"
}
]
}
},
"credentials": {
"anthropicApi": {
"id": "9xU4CUFgJLLaeCNB",
"name": "Anthropic account"
}
},
"typeVersion": 1
},
{
"id": "be2362e2-965e-4dcb-a6fe-f7ef89b8937a",
"name": "이미지 게시",
"type": "n8n-nodes-base.httpRequest",
"position": [
1824,
912
],
"parameters": {
"url": "=https://graph.facebook.com/v23.0/{{ $('Get instagram id').item.json.instagram_business_account.id }}/media_publish?access_token={{ $('get access_token').item.json.access_token }}",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "creation_id",
"value": "={{ $json.id }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "HSch2E1Drk2LTOp0",
"name": "Instagram @camillerouxphoto"
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"waitBetweenTries": 3000
},
{
"id": "4fe1ae6a-ef49-4b3e-9007-fcf0c4b3f279",
"name": "컨테이너 생성",
"type": "n8n-nodes-base.httpRequest",
"position": [
1616,
912
],
"parameters": {
"url": "=https://graph.facebook.com/v23.0/{{ $json.instagram_business_account.id }}/media?access_token={{ $('get access_token').item.json.access_token }}",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "image_url",
"value": "={{ $('Params').item.json[\"n8n instance domain\"] }}/webhook/lr-image?catalogId={{ $('Params').item.json[\"LR catalog ID\"] }}&assetId={{ $('Limit').item.json.lr_asset_id }}"
},
{
"name": "caption",
"value": "={{ $('Message a model').item.json.content[0].text }}"
},
{
"name": "alt_text",
"value": "={{ $('Limit').item.json.alt }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "HSch2E1Drk2LTOp0",
"name": "Instagram @camillerouxphoto"
}
},
"typeVersion": 4.2
},
{
"id": "7ed0076c-bd55-438e-97ed-6ff81c93a29f",
"name": "instagram ID 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
1328,
912
],
"parameters": {
"url": "=https://graph.facebook.com/v23.0/{{ $('Params').item.json[\"FB id\"] }}?fields=instagram_business_account{id,username}&access_token={{ $json.access_token }}",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "HSch2E1Drk2LTOp0",
"name": "Instagram @camillerouxphoto"
}
},
"typeVersion": 4.2
},
{
"id": "3a5068e2-e585-49c8-91e2-f5d0cb69e087",
"name": "액세스 토큰 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
1136,
912
],
"parameters": {
"url": "=https://graph.facebook.com/v23.0/{{ $json[\"FB id\"] }}?fields=access_token ",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "HSch2E1Drk2LTOp0",
"name": "Instagram @camillerouxphoto"
}
},
"typeVersion": 4.2
},
{
"id": "282ad7a6-f6d7-4bc7-9440-cba5f63f2631",
"name": "행 업데이트",
"type": "n8n-nodes-base.dataTable",
"position": [
2240,
912
],
"parameters": {
"columns": {
"value": {
"ig_id": "={{ $json.id }}",
"ig_caption": "={{ $('Message a model').item.json.content[0].text }}",
"ig_posted_at": "={{ $now }}"
},
"schema": [
{
"id": "lr_asset_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "lr_asset_id",
"defaultMatch": false
},
{
"id": "lr_album_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "lr_album_id",
"defaultMatch": false
},
{
"id": "ig_posted_at",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "ig_posted_at",
"defaultMatch": false
},
{
"id": "ig_caption",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "ig_caption",
"defaultMatch": false
},
{
"id": "lr_asset",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "lr_asset",
"defaultMatch": false
},
{
"id": "alt",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "alt",
"defaultMatch": false
},
{
"id": "ig_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "ig_id",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyValue": "={{ $('Limit').item.json.id }}"
}
]
},
"options": {},
"matchType": "allConditions",
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "Z4VvX6MjrmHmlAiY",
"cachedResultUrl": "/projects/wrMsdivh0K45jnU5/datatables/Z4VvX6MjrmHmlAiY",
"cachedResultName": "Photos"
}
},
"typeVersion": 1
},
{
"id": "eae2db29-c107-4502-8f19-103d0f02c64f",
"name": "일정 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-656,
912
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 14,
"triggerAtMinute": 10
},
{
"triggerAtHour": 18,
"triggerAtMinute": 10
},
{
"triggerAtHour": 20,
"triggerAtMinute": 10
},
{
"triggerAtHour": 11,
"triggerAtMinute": 40
}
]
}
},
"typeVersion": 1.2
},
{
"id": "f414301b-84f8-46b0-bb60-8f3dd5622484",
"name": "매개변수",
"type": "n8n-nodes-base.set",
"position": [
944,
912
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1e380c14-e908-4eeb-90e0-957a422829d0",
"name": "instagram_business_account_id",
"type": "string",
"value": "..."
},
{
"id": "1e28c4bb-7381-4e75-9eb9-8d0fac288595",
"name": "FB id",
"type": "string",
"value": "..."
},
{
"id": "882e6776-0340-4f75-87ac-8396aba9104e",
"name": "n8n instance domain",
"type": "string",
"value": "..."
},
{
"id": "e50f6946-392a-4e5f-ab41-c6c24774d814",
"name": "LR catalog ID",
"type": "string",
"value": "..."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fa55bb79-7bb0-44ca-bdfc-665adf10f820",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
752
],
"parameters": {
"color": 5,
"width": 672,
"height": 416,
"content": "## STEP1 - Select the next image to publish"
},
"typeVersion": 1
},
{
"id": "564e8e3c-41eb-451e-9e18-bc9284baee08",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
752
],
"parameters": {
"color": 5,
"width": 672,
"height": 416,
"content": "## STEP2 - Generate the description with AI"
},
"typeVersion": 1
},
{
"id": "a3e90617-d77e-46e0-84d3-eecd3bf5d1d5",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
752
],
"parameters": {
"color": 4,
"width": 608,
"height": 416,
"content": "## STEP3 - Instagram auth\n"
},
"typeVersion": 1
},
{
"id": "362685f6-2692-47a6-a178-66d084640f74",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1504,
752
],
"parameters": {
"color": 4,
"width": 528,
"height": 416,
"content": "## STEP4 - Publish the image\n\n"
},
"typeVersion": 1
},
{
"id": "2055e870-14e5-436d-a674-720a9197b520",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2048,
752
],
"parameters": {
"color": 6,
"width": 528,
"height": 416,
"content": "## STEP5 - Update Data Table\n\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"4f8f87b3-7105-4799-96b7-1efcea307fba": {
"main": [
[
{
"node": "e19763a7-714c-4de8-8259-544313f3eb95",
"type": "main",
"index": 0
}
]
]
},
"e19763a7-714c-4de8-8259-544313f3eb95": {
"main": [
[
{
"node": "92b9bb0a-98eb-4e47-94d9-51ff3ed79af5",
"type": "main",
"index": 0
}
]
]
},
"f414301b-84f8-46b0-bb60-8f3dd5622484": {
"main": [
[
{
"node": "3a5068e2-e585-49c8-91e2-f5d0cb69e087",
"type": "main",
"index": 0
}
]
]
},
"1ca855b3-27be-4a12-8c76-dffaef453109": {
"main": [
[
{
"node": "4f8f87b3-7105-4799-96b7-1efcea307fba",
"type": "main",
"index": 0
}
]
]
},
"be2362e2-965e-4dcb-a6fe-f7ef89b8937a": {
"main": [
[
{
"node": "282ad7a6-f6d7-4bc7-9440-cba5f63f2631",
"type": "main",
"index": 0
}
]
]
},
"92b9bb0a-98eb-4e47-94d9-51ff3ed79af5": {
"main": [
[
{
"node": "f414301b-84f8-46b0-bb60-8f3dd5622484",
"type": "main",
"index": 0
}
]
]
},
"4fe1ae6a-ef49-4b3e-9007-fcf0c4b3f279": {
"main": [
[
{
"node": "be2362e2-965e-4dcb-a6fe-f7ef89b8937a",
"type": "main",
"index": 0
}
]
]
},
"7ed0076c-bd55-438e-97ed-6ff81c93a29f": {
"main": [
[
{
"node": "4fe1ae6a-ef49-4b3e-9007-fcf0c4b3f279",
"type": "main",
"index": 0
}
]
]
},
"eae2db29-c107-4502-8f19-103d0f02c64f": {
"main": [
[
{
"node": "1ca855b3-27be-4a12-8c76-dffaef453109",
"type": "main",
"index": 0
}
]
]
},
"3a5068e2-e585-49c8-91e2-f5d0cb69e087": {
"main": [
[
{
"node": "7ed0076c-bd55-438e-97ed-6ff81c93a29f",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 소셜 미디어, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Claude AI 텍스트 생성기를 사용하여 Lightroom에서 Instagram까지 자동화
Claude AI를 대체 텍스트 생성기로 사용하여 Lightroom에서 Instagram까지 자동화
Set
Code
Sort
+
Set
Code
Sort
14 노드Camille Roux
소셜 미디어
AI 분석을 사용하여 바이러스적 YouTube 비디오를 검출하고 이메일 보고서를 전송
AI를 사용하여 바이러스성 YouTube 비디오를 검출하고 이메일 보고서를 전송
Set
Code
Sort
+
Set
Code
Sort
26 노드gclbck
기타
18. HeyGen, GPT-4 및 가상 인물을 기반으로 한 YouTube 비디오 종합적인 자동화
사용HeyGen、GPT-4및虚拟形象视频实现YouTube视频端로端자동화
Set
Code
Sort
+
Set
Code
Sort
33 노드Amjid Ali
콘텐츠 제작
Arunava의 다중 에이전트 지능형 Reddit 자동화
AI 브랜드 언급 및 Baserow 추적으로 Reddit 게시물 자동 댓글 작성
If
Set
Code
+
If
Set
Code
35 노드Arunava
소셜 미디어
X 트윗 및 Meta Threads 게시器
Late API 및 Google Sheets를 사용하여 플랫폼 최적화 콘텐츠를 X 및 Threads에 자동 게시
If
Set
Code
+
If
Set
Code
20 노드Fariez
소셜 미디어
Claude, OpenAI 및 Perplexity를 사용하여 브랜드 LinkedIn 콘텐츠 자동 생성 및 예약
Claude, OpenAI 및 Perplexity를 사용하여 브랜드 LinkedIn 콘텐츠 자동 생성 및 예약
Code
Limit
Linked In
+
Code
Limit
Linked In
23 노드Abdul Mir
소셜 미디어