<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>콘텐츠마케팅 &#8211; 투데이즈.kr</title>
	<atom:link href="https://2days.kr/tag/%ec%bd%98%ed%85%90%ec%b8%a0%eb%a7%88%ec%bc%80%ed%8c%85/feed/" rel="self" type="application/rss+xml" />
	<link>https://2days.kr</link>
	<description>투데이즈</description>
	<lastBuildDate>Sun, 16 Nov 2025 13:06:42 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8</generator>

<image>
	<url>https://2days.kr/wp-content/uploads/2025/10/cropped-simbol-1-32x32.png</url>
	<title>콘텐츠마케팅 &#8211; 투데이즈.kr</title>
	<link>https://2days.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)</title>
		<link>https://2days.kr/24/06/17/64194/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Tue, 24 Jun 2025 08:30:07 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI블로그]]></category>
		<category><![CDATA[AI자동화]]></category>
		<category><![CDATA[API연동]]></category>
		<category><![CDATA[GeminiAPI]]></category>
		<category><![CDATA[GoogleGemini]]></category>
		<category><![CDATA[n8n]]></category>
		<category><![CDATA[SEO최적화]]></category>
		<category><![CDATA[UnsplashAPI]]></category>
		<category><![CDATA[개발자도구]]></category>
		<category><![CDATA[노코드]]></category>
		<category><![CDATA[디지털마케팅]]></category>
		<category><![CDATA[로우코드]]></category>
		<category><![CDATA[마케팅자동화]]></category>
		<category><![CDATA[무료이미지]]></category>
		<category><![CDATA[블로그이미지]]></category>
		<category><![CDATA[블로그자동화]]></category>
		<category><![CDATA[블로깅팁]]></category>
		<category><![CDATA[생산성향상]]></category>
		<category><![CDATA[생성형AI]]></category>
		<category><![CDATA[시간절약]]></category>
		<category><![CDATA[워크플로우]]></category>
		<category><![CDATA[웹자동화]]></category>
		<category><![CDATA[이미지생성]]></category>
		<category><![CDATA[이미지추출]]></category>
		<category><![CDATA[인공지능]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[콘텐츠마케팅]]></category>
		<category><![CDATA[콘텐츠전략]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=64194</guid>

					<description><![CDATA[완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 블로그 이미지 생성 및 삽입에 드는 시간을 획기적으로 줄이는 방법이 있을까? 그것도 무료로? 모두 사용할 수 있도록 최종 버전에는 무료로 배포할 생각이예요! N8N, Google Gemini, Unsplash API를 연동하여 AI 기반의 블로그 이미지 자동화 워크플로우를 구축하는 모든 과정을 단계별로 상세히 설명하는 완벽 가이드입니다. 초보자도 쉽게 따라 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="9:1-9:182">완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 블로그 이미지 생성 및 삽입에 드는 시간을 획기적으로 줄이는 방법이 있을까? 그것도 무료로? 모두 사용할 수 있도록 최종 버전에는 무료로 배포할 생각이예요!</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="9:1-9:182">N8N, Google Gemini, Unsplash API를 연동하여 AI 기반의 블로그 이미지 자동화 워크플로우를 구축하는 모든 과정을 단계별로 상세히 설명하는 완벽 가이드입니다. 초보자도 쉽게 따라 할 수 있도록 스크린샷과 설정 예시를 풍부하게 담았습니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="15:1-15:149">디지털 콘텐츠의 홍수 속에서 독자의 시선을 사로잡고 검색 엔진에서 상위 노출되기 위해서는 고품질의 콘텐츠뿐만 아니라, <b>매력적인 시각 자료</b>가 필수적입니다. 하지만 매번 블로그 글에 맞는 이미지를 찾고, 생성하고, 삽입하는 과정은 엄청난 시간과 노력을 요구합니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="17:1-17:213">이러한 반복적인 작업을 자동화할 수 있다면 어떨까요? 여기 그 해답이 있습니다. 이 상세 매뉴얼에서는 <b>N8N이라는 강력한 워크플로우 자동화 도구와 Google의 최신 AI 모델인 Gemini, 그리고 방대한 무료 이미지 라이브러리인 Unsplash API를 연동하여 블로그 이미지를 자동으로 생성하고 게시물에 삽입하는 일련의 과정을 완벽하게 마스터</b>할 수 있도록 도와드립니다.</p>
<h2 data-sourcepos="17:1-17:213"><strong>완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)</strong></h2>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter"><figcaption>
<figure id="attachment_64196" aria-describedby="caption-attachment-64196" style="width: 696px" class="wp-caption aligncenter"><img post-id="64194" fifu-featured="1" fetchpriority="high" decoding="async" class="wp-image-64196 size-large" src="https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1024x1024.jpg" alt="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)" title="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)" width="696" height="696" title="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 1" srcset="https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1024x1024.jpg 1024w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-300x300.jpg 300w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-150x150.jpg 150w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-768x768.jpg 768w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1536x1536.jpg 1536w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-696x696.jpg 696w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1068x1068.jpg 1068w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1920x1920.jpg 1920w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-420x420.jpg 420w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1.jpg 2000w" sizes="(max-width: 696px) 100vw, 696px" /><figcaption id="caption-attachment-64196" class="wp-caption-text">완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)</figcaption></figure>
</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="19:1-19:168">이 가이드는 단순히 &#8216;어떻게&#8217; 하는지뿐만 아니라 &#8216;왜&#8217; 그렇게 하는지, 그리고 각 단계에서 발생할 수 있는 문제와 해결책까지 다루어, 여러분이 이 워크플로우를 성공적으로 구축하고 효율성을 극대화할 수 있도록 지원할 것입니다. 지금부터 AI 기반 블로그 이미지 자동화의 세계로 깊이 들어가 보겠습니다!</p>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="23:1-23:57" data-ke-size="size23"><b>1단계: Google Gemini 노드를 활용한 블로그 이미지 설명 생성 (AI의 상상력 활용) &#8211; </b><b>무료 자동화 블로그</b></h3>
<figure id="attachment_64198" aria-describedby="caption-attachment-64198" style="width: 696px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-64198 size-large" src="https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1024x439.png" alt="1단계: Google Gemini 노드를 활용한 블로그 이미지 설명 생성 (AI의 상상력 활용)" width="696" height="298" title="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 2" srcset="https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1024x439.png 1024w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-300x129.png 300w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-768x329.png 768w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1536x658.png 1536w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-150x64.png 150w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-696x298.png 696w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1068x458.png 1068w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-980x420.png 980w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503.png 1725w" sizes="(max-width: 696px) 100vw, 696px" /><figcaption id="caption-attachment-64198" class="wp-caption-text">1단계: Google Gemini 노드를 활용한 블로그 이미지 설명 생성 (AI의 상상력 활용)</figcaption></figure>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="25:1-25:220">모든 자동화의 시작은 AI에게 어떤 이미지가 필요한지 정확히 알려주는 것입니다. 이 단계에서는 Google Gemini AI의 강력한 텍스트 생성 능력을 활용하여, 블로그 게시물의 특정 섹션에 맞는 상세한 이미지 설명을 얻습니다. 이 설명은 단순히 &#8220;사과&#8221;가 아니라, &#8220;빛이 잘 드는 주방 식탁 위에 놓인 신선하고 붉은 사과, 배경은 블러 처리되고 따뜻한 색감&#8221;과 같이 구체적인 지침이 됩니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="27:1-27:23"><b>1.1. 노드 추가 및 기본 설정:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="29:3-31:0" data-ke-list-type="disc">
<li data-sourcepos="29:3-29:56"><b>노드 유형:</b> N8N 워크플로우 캔버스에 Google Gemini 노드를 추가합니다.</li>
<li data-sourcepos="30:3-31:0"><b>노드 이름:</b> 가독성을 위해 Google Gemini (Generate Image Descriptions) 정도로 이름을 변경하는 것을 권장합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="32:1-32:29"><b>1.2. 인증 (Authentication):</b></p>

<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="34:3-37:0" data-ke-list-type="disc">
<li data-sourcepos="34:3-34:125">Authentication 드롭다운에서 Google OAuth2 API 또는 Google Cloud Service Account를 선택합니다. 대부분의 경우 Google OAuth2 API가 간편합니다.</li>
<li data-sourcepos="35:3-37:0"><b>Google Credential:</b> 아직 설정하지 않았다면 Create New를 클릭하여 Google Cloud Console에서 발급받은 API Key (또는 OAuth 클라이언트 ID)를 설정합니다. Gemini API 사용을 위해서는 generativelanguage.googleapis.com에 대한 접근 권한이 필요합니다.
<ul style="list-style-type: disc;" data-sourcepos="36:7-37:0" data-ke-list-type="disc">
<li data-sourcepos="36:7-37:0"><b>Tip:</b> API Key를 사용하는 경우 x-goog-api-key 헤더를 통해 안전하게 전달됩니다. (사용자가 이전에 제시한 image_5c109c.png에서 이 설정이 보였습니다.)</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="38:1-38:24"><b>1.3. 작업 (Operation):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="40:3-41:0" data-ke-list-type="disc">
<li data-sourcepos="40:3-41:0">Operation을 Generate Content로 설정합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="42:1-42:20"><b>1.4. 모델 (Model):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="44:3-45:0" data-ke-list-type="disc">
<li data-sourcepos="44:3-45:0">Model 드롭다운에서 gemini-pro (텍스트 생성)를 선택합니다. 이미지 생성은 아니므로 gemini-pro-vision은 적합하지 않습니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="46:1-46:26"><b>1.5. 프롬프트 (Prompt) 구성:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="48:3-65:0" data-ke-list-type="disc">
<li data-sourcepos="48:3-48:115">Prompt 필드에 Gemini가 이미지 설명을 생성할 수 있도록 명확하고 구체적인 지시를 내립니다. 이 프롬프트는 이전 노드 (예: 블로그 글을 생성한 노드)에서 받은 데이터를 참조해야 합니다.</li>
<li data-sourcepos="49:3-65:0"><b>예시 (텍스트 기반 블로그 글을 입력으로 받을 때):</b>
<div>
<div style="background-color: #f0f4f9;">
<div>
<pre class="hljs sql" contenteditable="false">You are an AI assistant specialized in generating visual image descriptions for blog posts.
For the following blog section content, provide a concise, vivid, and detailed image description that visually represents the key theme.
The description should be formatted as a numbered list, <span class="hljs-keyword">with</span> <span class="hljs-keyword">each</span> item <span class="hljs-keyword">starting</span> <span class="hljs-keyword">with</span> <span class="hljs-string">"숫자. **설명N: [이미지 설명]**"</span> format.
Focus <span class="hljs-keyword">on</span> elements suitable <span class="hljs-keyword">for</span> image <span class="hljs-keyword">search</span> (e.g., objects, <span class="hljs-keyword">settings</span>, mood, colors, composition).

<span class="hljs-keyword">Content</span>:
{{ $json.blog_section_content }} // 이전 노드의 출력 데이터 (블로그 섹션 내용)

Example <span class="hljs-keyword">Output</span> <span class="hljs-keyword">Format</span>:
<span class="hljs-number">1.</span> **설명<span class="hljs-number">1</span>: AI 편향성을 시각적으로 보여주는 이미지.** 다양한 인종과 성별의 얼굴 이미지가 여러 개의 박스 안에 배치되어 있고, 각 박스는 AI 얼굴 인식 정확도(예: <span class="hljs-number">95</span>%, <span class="hljs-number">70</span>%, <span class="hljs-number">80</span>%)를 나타내는 숫자와 함께, 정확도가 낮은 그룹의 박스는 어둡게 표현된다. 이미지 하단에는 <span class="hljs-string">"AI Bias: Unfair Outcomes"</span> 와 같은 문구를 추가하여 AI 편향성의 부정적 결과를 강조한다. 색상은 차갑고 어두운 색조를 사용하여 불안정함을 시각적으로 표현한다.
<span class="hljs-number">2.</span> **설명<span class="hljs-number">2</span>: 데이터 프라이버시 침해를 묘사하는 이미지.** 한 사람의 실루엣 주변으로 수많은 데이터 포인트(점, 선 등)가 뻗어나가는 모습을 묘사한다. 데이터 포인트들은 다양한 기기(스마트폰, 컴퓨터, CCTV 등)에서 방출되는 것처럼 표현하고, 실루엣의 얼굴은 모자이크 처리하여 익명성을 강조한다. 배경은 어둡고 신비로운 분위기를 연출하며, <span class="hljs-string">"Data Privacy at Risk"</span> 와 같은 문구를 추가하여 위험성을 부각한다.
</pre>
</div>
</div>
</div>
<ul style="list-style-type: disc;" data-sourcepos="63:7-65:0" data-ke-list-type="disc">
<li data-sourcepos="63:7-63:139"><b>{{ $json.blog_section_content }}:</b> 이 부분은 N8N의 표현식(Expression)으로, 이전 노드에서 전달받은 블로그 섹션 내용을 동적으로 가져옵니다. 실제 사용하는 변수명에 맞게 조정해야 합니다.</li>
<li data-sourcepos="64:7-65:0"><b>Gemini에게 출력 형식 가이드 제공:</b> Gemini가 정확히 우리가 원하는 &#8220;숫자. **설명N: [이미지 설명]**&#8221; 형식으로 응답하도록 명시적인 예시를 제공하는 것이 중요합니다. (이전 대화에서 이 형식을 통해 성공적으로 설명을 얻으셨습니다.)</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="66:1-66:16"><b>1.6. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="68:3-70:0" data-ke-list-type="disc">
<li data-sourcepos="68:3-68:41">노드를 저장하고, Test Node 버튼을 클릭하여 실행합니다.</li>
<li data-sourcepos="69:3-70:0">Output 탭에서 Gemini가 생성한 이미지 설명이 예상한 JSON 형식으로 출력되는지 확인합니다. 이 출력은 보통 output 필드 내에 문자열로 포함됩니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="73:1-73:59"><b>2단계: Function 노드를 활용한 이미지 키워드 추출 및 정제 (Unsplash 검색 최적화) </b><b>무료 자동화 블로그</b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="75:1-75:160">Gemini가 생성한 상세 설명은 훌륭하지만, Unsplash와 같은 이미지 검색 엔진은 주로 간결하고 핵심적인 키워드에 최적화되어 있습니다. 이 단계에서는 N8N의 Function 노드를 사용하여 자바스크립트 코드로 이미지 설명 텍스트에서 검색 가능한 키워드를 추출하고 정제합니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="77:1-77:20"><b>2.1. 노드 추가 및 연결:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="79:3-81:0" data-ke-list-type="disc">
<li data-sourcepos="79:3-79:77">Google Gemini (Generate Image Descriptions) 노드 뒤에 Function 노드를 추가합니다.</li>
<li data-sourcepos="80:3-81:0"><b>노드 이름:</b> Function (Extract Image Descriptions &amp; Keywords)로 이름을 변경합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="82:1-82:37"><b>2.2. Function 노드 코드 (JavaScript):</b></p>
<div>
<div style="background-color: #f0f4f9;">
<div>
<pre class="hljs javascript" contenteditable="false"><span class="hljs-keyword">const</span> outputItems = [];

<span class="hljs-comment">// --- 입력 데이터 유효성 검사 및 텍스트 추출 ---</span>
<span class="hljs-keyword">let</span> rawInputText = <span class="hljs-string">''</span>;

<span class="hljs-comment">// 첫 번째 아이템이 유효한지 확인하고, 'output' 속성에서 텍스트를 가져옵니다.</span>
<span class="hljs-keyword">if</span> (items &amp;&amp; items.length &gt; <span class="hljs-number">0</span> &amp;&amp; items[<span class="hljs-number">0</span>].json &amp;&amp; items[<span class="hljs-number">0</span>].json.output) {
    rawInputText = items[<span class="hljs-number">0</span>].json.output;
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Function Node - Successfully extracted text from items[0].json.output.'</span>);
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Function Node - Raw Input Text (first 200 chars):'</span>, rawInputText.substring(<span class="hljs-number">0</span>, <span class="hljs-built_in">Math</span>.min(rawInputText.length, <span class="hljs-number">200</span>)) + <span class="hljs-string">'...'</span>);
}
<span class="hljs-comment">// 잘못된 입력 (이미 파싱된 데이터가 들어온 경우 등)</span>
<span class="hljs-keyword">else</span> {
    <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'Function Node - No valid text found in expected input path (items[0].json.output).'</span>);
    <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'Function Node - Input JSON:'</span>, <span class="hljs-built_in">JSON</span>.stringify(items, <span class="hljs-literal">null</span>, <span class="hljs-number">2</span>)); <span class="hljs-comment">// 입력 JSON 전체를 로그에 출력하여 확인</span>
    <span class="hljs-keyword">return</span> []; <span class="hljs-comment">// 잘못된 입력이므로 빈 배열 반환</span>
}

<span class="hljs-comment">// --- 이미지 설명 블록 분리 ---</span>
<span class="hljs-comment">// 정규식을 사용하여 '숫자. **제목: 내용**' 패턴으로 시작하는 각 설명 블록을 분리합니다.</span>
<span class="hljs-keyword">const</span> descriptionBlockRegex = <span class="hljs-regexp">/(\d+\.\s*\*\*[^*]+?\*\*:\s*.*?)((?=\d+\.\s*\*\*)|$)/g</span>s;
<span class="hljs-keyword">let</span> match;
<span class="hljs-keyword">let</span> imageIndex = <span class="hljs-number">0</span>;
<span class="hljs-keyword">const</span> processedItems = [];

<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Function Node - Starting description block parsing...'</span>);

<span class="hljs-keyword">while</span> ((match = descriptionBlockRegex.exec(rawInputText)) !== <span class="hljs-literal">null</span>) {
    <span class="hljs-keyword">const</span> fullDescription = match[<span class="hljs-number">1</span>].trim(); <span class="hljs-comment">// 예: "1. **설명1: AI 편향성...**"</span>
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`  Debug - Found fullDescription (Index <span class="hljs-subst">${imageIndex + <span class="hljs-number">1</span>}</span>):`</span>, fullDescription.substring(<span class="hljs-number">0</span>, <span class="hljs-built_in">Math</span>.min(fullDescription.length, <span class="hljs-number">150</span>)) + <span class="hljs-string">'...'</span>);

    <span class="hljs-keyword">if</span> (fullDescription) {
        imageIndex++;
        <span class="hljs-keyword">const</span> imagePrompt = fullDescription; <span class="hljs-comment">// 전체 설명을 image_prompt로 사용</span>

        <span class="hljs-comment">// --- 키워드 추출 및 정제 로직 ---</span>
        <span class="hljs-keyword">let</span> imageKeywords = <span class="hljs-string">''</span>;
        <span class="hljs-keyword">const</span> keywordCaptureRegex = <span class="hljs-regexp">/\*\*(.+?)\*\*:/</span>; <span class="hljs-comment">// ** 와 **: 사이의 텍스트를 추출</span>
        <span class="hljs-keyword">const</span> keywordMatch = fullDescription.match(keywordCaptureRegex);

        <span class="hljs-keyword">if</span> (keywordMatch &amp;&amp; keywordMatch[<span class="hljs-number">1</span>]) {
            imageKeywords = keywordMatch[<span class="hljs-number">1</span>].trim();
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - Raw extracted keywords from bold (Step 1):'</span>, imageKeywords);

            <span class="hljs-comment">// "설명N: " 패턴이 있다면 제거 (예: "설명1: AI 편향성 시각적 이미지" -&gt; "AI 편향성 시각적 이미지")</span>
            <span class="hljs-keyword">const</span> parts = imageKeywords.split(<span class="hljs-string">':'</span>);
            <span class="hljs-keyword">if</span> (parts.length &gt; <span class="hljs-number">1</span> &amp;&amp; parts[<span class="hljs-number">0</span>].startsWith(<span class="hljs-string">'설명'</span>)) {
                imageKeywords = parts.slice(<span class="hljs-number">1</span>).join(<span class="hljs-string">':'</span>).trim();
            }
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After "설명N:" removal (Step 2):'</span>, imageKeywords);

            <span class="hljs-comment">// 불필요한 구두점 및 추가 공백 제거</span>
            imageKeywords = imageKeywords
                .replace(<span class="hljs-regexp">/[.!?,"'()]/g</span>, <span class="hljs-string">''</span>) <span class="hljs-comment">// 마침표, 물음표, 느낌표, 쉼표, 따옴표, 괄호 제거</span>
                .replace(<span class="hljs-regexp">/\s+/g</span>, <span class="hljs-string">' '</span>) <span class="hljs-comment">// 여러 공백을 하나의 공백으로</span>
                .trim();
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After punctuation/space cleanup (Step 3):'</span>, imageKeywords);

            <span class="hljs-comment">// 불필요한 한국어 조사, 어미, 불용어 제거 (정규식 사용)</span>
            <span class="hljs-comment">// '인한' 등 불필요한 단어 추가</span>
            imageKeywords = imageKeywords.replace(<span class="hljs-regexp">/을|를|이|가|은|는|도|만|에|에서|와|과|랑|하고|으로써|으로|에게|께|한테|부터|까지|마저|조차|처럼|만큼|듯이|하고는|거나|든지|다시|모두|같이|인한|시각적|보여주|묘사하|나타내/g</span>, <span class="hljs-string">''</span>).trim();
            imageKeywords = imageKeywords.replace(<span class="hljs-regexp">/\s+/g</span>, <span class="hljs-string">' '</span>).trim(); <span class="hljs-comment">// 조사 제거 후 남은 불필요 공백 제거</span>
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After Korean suffix/particle removal (Step 4):'</span>, imageKeywords);

            <span class="hljs-comment">// Unsplash 검색에 불필요한 일반적인 단어 제거 (소문자로 비교)</span>
            <span class="hljs-keyword">const</span> commonWordsToRemove = [
                <span class="hljs-string">'시각적으로'</span>, <span class="hljs-string">'보여주는'</span>, <span class="hljs-string">'나타내는'</span>, <span class="hljs-string">'묘사하는'</span>, <span class="hljs-string">'상징적으로'</span>, <span class="hljs-string">'표현한'</span>, <span class="hljs-string">'이미지'</span>, <span class="hljs-string">'사진'</span>, <span class="hljs-string">'개념'</span>, <span class="hljs-string">'상징'</span>, <span class="hljs-string">'표현'</span>,
                <span class="hljs-string">'대한'</span>, <span class="hljs-string">'관련된'</span>, <span class="hljs-string">'모습'</span>, <span class="hljs-string">'그림'</span>, <span class="hljs-string">'일러스트'</span>, <span class="hljs-string">'상세'</span>, <span class="hljs-string">'설명'</span>, <span class="hljs-string">'주제'</span>, <span class="hljs-string">'내용'</span>, <span class="hljs-string">'위한'</span>
            ];
            imageKeywords = imageKeywords.split(<span class="hljs-string">' '</span>).filter(<span class="hljs-function"><span class="hljs-params">word</span> =&gt;</span> {
                <span class="hljs-keyword">const</span> lowerWord = word.toLowerCase();
                <span class="hljs-keyword">return</span> !commonWordsToRemove.includes(lowerWord) &amp;&amp; lowerWord.length &gt; <span class="hljs-number">1</span>; <span class="hljs-comment">// 1글자 키워드도 제거</span>
            }).join(<span class="hljs-string">' '</span>);
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After common word removal (Step 5):'</span>, imageKeywords);

            <span class="hljs-comment">// 최종적으로 공백을 쉼표로 변환 (Unsplash 검색을 위해)</span>
            imageKeywords = imageKeywords.replace(<span class="hljs-regexp">/\s+/g</span>, <span class="hljs-string">', '</span>);
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - Final image_keywords for Unsplash (Step 6):'</span>, imageKeywords);

        } <span class="hljs-keyword">else</span> {
            <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">`    Debug - Could not find bold text (**...**:) for keywords in: <span class="hljs-subst">${fullDescription.substring(<span class="hljs-number">0</span>, <span class="hljs-built_in">Math</span>.min(fullDescription.length, <span class="hljs-number">50</span>))}</span>...`</span>);
            imageKeywords = <span class="hljs-string">''</span>; <span class="hljs-comment">// 추출 실패 시 빈 문자열</span>
        }
        <span class="hljs-comment">// --- 키워드 추출 및 정제 로직 끝 ---</span>

        processedItems.push({
            <span class="hljs-attr">json</span>: {
                <span class="hljs-attr">image_prompt</span>: imagePrompt,
                <span class="hljs-attr">image_keywords</span>: imageKeywords,
                <span class="hljs-attr">image_index</span>: imageIndex <span class="hljs-comment">// 이미지 순서 (선택 사항)</span>
            }
        });
        <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`  Function Node - Added item (Index <span class="hljs-subst">${imageIndex}</span>): Prompt [<span class="hljs-subst">${imagePrompt.substring(<span class="hljs-number">0</span>, <span class="hljs-number">30</span>)}</span>...], Keywords [<span class="hljs-subst">${imageKeywords || 'EMPTY'}</span>]`</span>);
    } <span class="hljs-keyword">else</span> {
        <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'  Debug - fullDescription was empty after match, skipping item.'</span>);
    }
}

<span class="hljs-keyword">if</span> (processedItems.length === <span class="hljs-number">0</span>) {
    <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'Function Node - No output items generated. Please review input text format and regex patterns.'</span>);
}

<span class="hljs-keyword">return</span> processedItems;
</pre>
</div>
</div>
</div>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="190:1-190:22"><b>2.3. 코드 상세 설명 및 팁:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="192:3-202:0" data-ke-list-type="disc">
<li data-sourcepos="192:3-192:124"><b>items 배열 처리:</b> N8N의 Function 노드는 이전 노드의 데이터를 items라는 전역 변수에 배열 형태로 전달받습니다. 각 아이템은 json 속성 내에 실제 데이터를 가지고 있습니다.</li>
<li data-sourcepos="193:3-195:101"><b>정규식 (Regex)의 중요성:</b>
<ul style="list-style-type: disc;" data-sourcepos="194:7-195:101" data-ke-list-type="disc">
<li data-sourcepos="194:7-194:226">descriptionBlockRegex: Gemini의 출력 형식에 맞춰 각 이미지 설명을 개별적인 블록으로 분리하는 데 사용됩니다. (\d+\.\s*\*\*[^*]+?\*\*:\s*.*?)((?=\d+\.\s*\*\*)|$) 패턴은 &#8220;숫자. **제목:** 내용&#8221;으로 시작하는 부분을 정확히 잡아내고, 다음 숫자 시작 지점까지 또는 문자열 끝까지를 하나의 블록으로 인식합니다.</li>
<li data-sourcepos="195:7-195:101">keywordCaptureRegex: /\*\*(.+?)\*\*:/ 이 정규식은 **와 **: 사이의 텍스트를 추출하여 이미지의 핵심 키워드를 얻습니다.</li>
</ul>
</li>
<li data-sourcepos="196:3-198:80"><b>한국어 조사/어미 제거 (Step 4):</b> 이 부분은 한국어 특성상 중요한 정제 과정입니다.
<ul style="list-style-type: disc;" data-sourcepos="197:7-198:80" data-ke-list-type="disc">
<li data-sourcepos="197:7-197:151">imageKeywords.replace(/을|를|이|가|은|는|도|만|에|에서|와|과|랑|하고|으로써|으로|에게|께|한테|부터|까지|마저|조차|처럼|만큼|듯이|하고는|거나|든지|다시|모두|같이|인한|시각적|보여주|묘사하|나타내/g, &#8221;).trim();</li>
<li data-sourcepos="198:7-198:80">여기에 <b>시각적|보여주|묘사하|나타내</b> 등 실제 추출 결과에서 나타났던 어미나 형태들을 추가하여 더욱 정교하게 제거합니다.</li>
</ul>
</li>
<li data-sourcepos="199:3-199:123"><b>불용어(Stop Words) 제거 (Step 5):</b> commonWordsToRemove 배열에 &#8220;이미지&#8221;, &#8220;사진&#8221;, &#8220;묘사하는&#8221; 등 검색에 불필요한 일반적인 단어들을 추가하여 검색 효율을 높입니다.</li>
<li data-sourcepos="200:3-200:169"><b>console.log 디버깅:</b> 코드에 포함된 수많은 console.log 문은 N8N의 Execution Log 탭에서 실행 과정을 단계별로 추적할 수 있게 해줍니다. 키워드 추출이 제대로 되지 않을 때 이 로그를 통해 어느 단계에서 문제가 발생하는지 쉽게 파악할 수 있습니다.</li>
<li data-sourcepos="201:3-202:0"><b>출력 형식:</b> 각 이미지 설명에 대해 { json: { image_prompt: &#8220;&#8230;&#8221;, image_keywords: &#8220;&#8230;&#8221;, image_index: N } } 형태의 개별 아이템을 생성하여 다음 노드로 전달합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="203:1-203:16"><b>2.4. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="205:3-208:0" data-ke-list-type="disc">
<li data-sourcepos="205:3-205:106">Google Gemini (Generate Image Descriptions) 노드를 먼저 Test Node로 실행하여 Function 노드에 올바른 입력이 오도록 합니다.</li>
<li data-sourcepos="206:3-206:88">그 다음, Function (Extract Image Descriptions &amp; Keywords) 노드를 Test Node로 실행합니다.</li>
<li data-sourcepos="207:3-208:0">Output 탭과 Execution Log 탭을 면밀히 확인하여, 각 아이템마다 image_prompt와 image_keywords가 의도대로 추출되었는지 검토합니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="211:1-211:59" data-ke-size="size23"><b>3단계: HTTP Request 노드를 통한 Unsplash 이미지 검색 (방대한 라이브러리 활용) 무료 자동화 블로그</b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="213:1-213:110">이제 잘 정제된 키워드를 사용하여 Unsplash의 방대한 이미지 라이브러리에서 블로그에 적합한 이미지를 검색할 차례입니다. HTTP Request 노드는 외부 API와 통신하는 데 사용됩니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="215:1-215:20"><b>3.1. 노드 추가 및 연결:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="217:3-219:0" data-ke-list-type="disc">
<li data-sourcepos="217:3-217:90">Function (Extract Image Descriptions &amp; Keywords) 노드 뒤에 HTTP Request 노드를 추가합니다.</li>
<li data-sourcepos="218:3-219:0"><b>노드 이름:</b> HTTP Request (Unsplash Search)로 이름을 변경합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="220:1-220:29"><b>3.2. 인증 (Authentication):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="222:3-223:0" data-ke-list-type="disc">
<li data-sourcepos="222:3-223:0">Authentication: None으로 설정합니다. Unsplash API는 Client ID를 URL 파라미터로 받기 때문에 별도의 인증 헤더가 필요하지 않습니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="224:1-224:32"><b>3.3. 요청 방식 (Request Method):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="226:3-227:0" data-ke-list-type="disc">
<li data-sourcepos="226:3-227:0">Method: GET으로 설정합니다. 이미지를 검색하는 것은 데이터를 조회하는 것이므로 GET 요청이 적합합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="228:1-228:18"><b>3.4. URL (경로):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="230:3-231:0" data-ke-list-type="disc">
<li data-sourcepos="230:3-231:0">URL: <a href="https://api.unsplash.com/search/photos" target="_blank" rel="noopener">https://api.unsplash.com/search/photos</a> 를 입력합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="232:1-232:47"><b>3.5. 쿼리 파라미터 (Query Parameters) 설정 (매우 중요):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="234:3-257:0" data-ke-list-type="disc">
<li data-sourcepos="234:3-257:0">Query Parameters 섹션에서 Add Parameter 버튼을 클릭하여 필요한 파라미터들을 추가합니다.
<ul style="list-style-type: disc;" data-sourcepos="235:7-257:0" data-ke-list-type="disc">
<li data-sourcepos="235:7-238:167"><b>Parameter 1 (검색어):</b>
<ul style="list-style-type: disc;" data-sourcepos="236:11-238:167" data-ke-list-type="disc">
<li data-sourcepos="236:11-236:27">Name: query</li>
<li data-sourcepos="237:11-238:167">Value: {{ $json.image_keywords }}
<ul style="list-style-type: disc;" data-sourcepos="238:15-238:167" data-ke-list-type="disc">
<li data-sourcepos="238:15-238:167"><b>Explanation:</b> {{ $json.image_keywords }}는 이전 Function 노드에서 추출한 각 아이템의 image_keywords 값을 동적으로 가져와 query 파라미터로 사용합니다. 이 부분이 정확한 이미지 검색의 핵심입니다.</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="239:7-248:76"><b>Parameter 2 (Client ID):</b>
<ul style="list-style-type: disc;" data-sourcepos="240:11-248:76" data-ke-list-type="disc">
<li data-sourcepos="240:11-240:31">Name: client_id</li>
<li data-sourcepos="241:11-248:76">Value: [당신의 Unsplash Access Key]
<ul style="list-style-type: disc;" data-sourcepos="242:15-248:76" data-ke-list-type="disc">
<li data-sourcepos="242:15-242:159"><b>Explanation:</b> Unsplash 개발자 계정에서 발급받은 고유한 Access Key를 여기에 직접 붙여넣습니다. 이 키는 Unsplash API를 호출할 수 있는 권한을 부여합니다. <b>이 키는 외부에 노출되지 않도록 주의해야 합니다.</b></li>
<li data-sourcepos="243:15-248:76"><b>Unsplash Access Key 얻는 방법 (재차 강조):</b>
<ol style="list-style-type: decimal;" data-sourcepos="244:17-248:76" data-ke-list-type="decimal">
<li data-sourcepos="244:17-244:117">Unsplash Developers 웹사이트 (<a href="https://unsplash.com/developers" target="_blank" rel="noopener">https://unsplash.com/developers</a>) 방문.</li>
<li data-sourcepos="245:17-245:32">로그인 또는 회원가입.</li>
<li data-sourcepos="246:17-246:70">&#8220;Your apps&#8221; 또는 &#8220;New Application&#8221; 클릭하여 새 애플리케이션 생성.</li>
<li data-sourcepos="247:17-247:69">약관 동의 및 앱 설명 작성 (예: &#8220;N8N Blog Image Automation&#8221;).</li>
<li data-sourcepos="248:17-248:76">생성된 앱 페이지에서 <b>&#8220;Access Key&#8221;</b> (또는 Client ID)를 확인하고 복사합니다.</li>
</ol>
</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="249:7-252:216"><b>Parameter 3 (페이지당 결과 수 &#8211; 권장 1개):</b>
<ul style="list-style-type: disc;" data-sourcepos="250:11-252:216" data-ke-list-type="disc">
<li data-sourcepos="250:11-250:30">Name: per_page</li>
<li data-sourcepos="251:11-252:216">Value: 1
<ul style="list-style-type: disc;" data-sourcepos="252:15-252:216" data-ke-list-type="disc">
<li data-sourcepos="252:15-252:216"><b>Explanation:</b> 블로그 게시물 각 섹션에 대해 하나의 대표 이미지만 필요한 경우가 많으므로 1로 설정하는 것이 효율적입니다. Unsplash API는 per_page의 최대값을 30으로 제한합니다. 240을 입력하셨더라도 실제로는 30개까지만 반환됩니다. 한 번에 여러 이미지를 가져와 선택하고 싶다면 더 높은 값을 설정할 수 있습니다.</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="253:7-257:0"><b>Parameter 4 (이미지 방향 &#8211; 선택 사항):</b>
<ul style="list-style-type: disc;" data-sourcepos="254:11-257:0" data-ke-list-type="disc">
<li data-sourcepos="254:11-254:33">Name: orientation</li>
<li data-sourcepos="255:11-257:0">Value: landscape (가로형 이미지를 선호하는 경우) 또는 portrait (세로형), squarish (정사각형) 등
<ul style="list-style-type: disc;" data-sourcepos="256:15-257:0" data-ke-list-type="disc">
<li data-sourcepos="256:15-257:0"><b>Explanation:</b> 블로그 레이아웃에 맞춰 이미지의 방향을 지정하여 검색 결과를 필터링할 수 있습니다.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="258:1-258:33"><b>3.6. 응답 형식 (Response Format):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="260:3-261:0" data-ke-list-type="disc">
<li data-sourcepos="260:3-261:0">Response Format: JSON (기본값)으로 설정되어 있는지 확인합니다. Unsplash API는 JSON 형식으로 결과를 반환합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="262:1-262:16"><b>3.7. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="264:3-266:0" data-ke-list-type="disc">
<li data-sourcepos="264:3-264:73">HTTP Request (Unsplash Search) 노드를 클릭하고 Test Node 버튼을 클릭하여 실행합니다.</li>
<li data-sourcepos="265:3-266:0">Output 탭에서 Unsplash API로부터 받은 JSON 응답을 확인합니다. results 배열 안에 검색된 이미지들의 정보가 잘 들어있는지 확인하는 것이 중요합니다. total, total_pages, results 배열이 정상적으로 보이는지 확인하세요.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="269:1-269:46" data-ke-size="size23"><b>4단계: Set 노드를 활용한 최종 이미지 URL 추출 (게시물 삽입 준비) </b><b>무료 자동화 블로그</b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="271:1-271:152">Unsplash API 응답은 이미지의 ID, 설명, 사용자 정보, 다양한 크기의 URL 등 복잡한 정보를 담고 있습니다. 최종적으로 블로그에 사용할 특정 이미지 URL만을 추출하여 다음 단계에서 쉽게 사용할 수 있도록 image_url이라는 새로운 필드를 생성합니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="273:1-273:20"><b>4.1. 노드 추가 및 연결:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="275:3-277:0" data-ke-list-type="disc">
<li data-sourcepos="275:3-275:59">HTTP Request (Unsplash Search) 노드 뒤에 Set 노드를 추가합니다.</li>
<li data-sourcepos="276:3-277:0"><b>노드 이름:</b> Set (Extract Image URL)로 이름을 변경합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="278:1-278:23"><b>4.2. 값 (Values) 설정:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="280:3-296:0" data-ke-list-type="disc">
<li data-sourcepos="280:3-280:40">Values 섹션에서 Add Value 버튼을 클릭합니다.</li>
<li data-sourcepos="281:3-282:27"><b>새로운 필드 이름:</b>
<ul style="list-style-type: disc;" data-sourcepos="282:7-282:27" data-ke-list-type="disc">
<li data-sourcepos="282:7-282:27">Name: image_url</li>
</ul>
</li>
<li data-sourcepos="283:3-296:0"><b>추출할 URL 경로 설정:</b>
<ul style="list-style-type: disc;" data-sourcepos="284:7-296:0" data-ke-list-type="disc">
<li data-sourcepos="284:7-284:67">Value 필드 옆의 <b>톱니바퀴 아이콘</b> (Expression)을 클릭하여 표현식 편집기를 엽니다.</li>
<li data-sourcepos="285:7-294:81">다음과 같은 표현식을 입력합니다: {{ $json.results[0].urls.regular }}
<ul style="list-style-type: disc;" data-sourcepos="286:11-294:81" data-ke-list-type="disc">
<li data-sourcepos="286:11-286:49"><b>$json:</b> 현재 노드의 입력 데이터 전체를 나타냅니다.</li>
<li data-sourcepos="287:11-287:124"><b>results[0]:</b> Unsplash API 검색 결과는 results라는 배열 안에 이미지 객체들을 담고 있습니다. [0]은 그중 첫 번째(가장 관련성이 높은) 이미지를 의미합니다.</li>
<li data-sourcepos="288:11-294:81"><b>urls.regular:</b> 이미지 객체 안의 urls 필드는 다양한 크기의 이미지 URL을 제공합니다.
<ul style="list-style-type: disc;" data-sourcepos="289:15-294:81" data-ke-list-type="disc">
<li data-sourcepos="289:15-289:40">raw: 원본 이미지 URL (매우 큼)</li>
<li data-sourcepos="290:15-290:37">full: 원본에 가까운 큰 이미지</li>
<li data-sourcepos="291:15-291:47">regular: 블로그 게시물에 적합한 일반적인 크기</li>
<li data-sourcepos="292:15-292:30">small: 작은 크기</li>
<li data-sourcepos="293:15-293:31">thumb: 썸네일 크기</li>
<li data-sourcepos="294:15-294:81"><b>권장:</b> 대부분의 블로그 게시물에는 regular 또는 small이 적합합니다. 필요에 따라 선택하세요.</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="295:7-296:0">Add 버튼을 클릭하여 표현식을 적용합니다.</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="297:1-297:16"><b>4.3. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="299:3-301:0" data-ke-list-type="disc">
<li data-sourcepos="299:3-299:66">Set (Extract Image URL) 노드를 클릭하고 Test Node 버튼을 클릭하여 실행합니다.</li>
<li data-sourcepos="300:3-301:0">Output 탭을 확인합니다. 이제 각 블로그 섹션에 해당하는 아이템에 image_prompt, image_keywords와 더불어 <b>image_url 필드가 추가되고 Unsplash에서 가져온 이미지 URL이 포함</b>되어 있어야 합니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="304:1-304:39"><b>무료 자동화 블로그 이미지 워크플로우, 이제 시작입니다! </b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="306:1-306:125">이 상세 매뉴얼을 통해 N8N, Google Gemini, Unsplash API를 연동하여 블로그 이미지 자동화 워크플로우를 성공적으로 구축하셨기를 바랍니다. 여러분은 이제 다음과 같은 혁신적인 시스템을 갖추게 되었습니다:</p>
<ol style="list-style-type: decimal; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="308:1-311:0" data-ke-list-type="decimal">
<li data-sourcepos="308:1-308:63"><b>AI 기반 이미지 설명 생성:</b> 블로그 내용에 맞춰 AI가 자동으로 시각적인 이미지를 구상해 줍니다.</li>
<li data-sourcepos="309:1-309:60"><b>스마트 키워드 추출:</b> 복잡한 설명을 Unsplash 검색에 최적화된 핵심 키워드로 변환합니다.</li>
<li data-sourcepos="310:1-311:0"><b>자동 이미지 검색 및 연결:</b> 생성된 키워드를 바탕으로 방대한 Unsplash 라이브러리에서 적절한 이미지를 찾아 매칭합니다.</li>
</ol>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="312:1-312:161">이 워크플로우는 여러분의 콘텐츠 제작 시간을 획기적으로 단축시켜 줄 뿐만 아니라, 각 글에 맞는 고품질의 이미지를 일관성 있게 제공하여 블로그의 시각적 매력과 전문성을 높여줄 것입니다. 이는 궁극적으로 독자의 참여율을 높이고, Google SEO 측면에서도 긍정적인 영향을 미칠 것입니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="314:1-314:17"><b>다음 단계는 무엇인가요?</b></p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="316:1-316:41">이제 여러분은 image_url을 확보했습니다. 이 URL을 활용하여</p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="318:3-321:0" data-ke-list-type="disc">
<li data-sourcepos="318:3-318:160"><b>블로그 플랫폼 연동:</b> WordPress, Notion, Medium, Ghost 등 여러분이 사용하는 블로그 플랫폼의 API를 N8N의 HTTP Request 또는 특정 노드 (예: WordPress 노드)와 연동하여 자동으로 게시물에 이미지를 삽입할 수 있습니다.</li>
<li data-sourcepos="319:3-319:78"><b>HTML 생성:</b> 블로그 글의 최종 HTML을 만들 때 &lt;img&gt; 태그 안에 이 URL을 동적으로 넣어줄 수 있습니다.</li>
<li data-sourcepos="320:3-321:0"><b>이미지 다운로드 및 업로드:</b> 경우에 따라 이미지를 직접 다운로드하여 서버나 CDN에 업로드하는 워크플로우를 추가할 수도 있습니다.</li>
</ul>
<p>n8n을 아직 잘 모르신다면 이 글을 먼저 읽어보세요!</p>
<p><a href="https://aboda.kr/entry/n8n-%EC%8B%9C%EB%86%80%EB%A1%9C%EC%A7%80-%EB%A1%9C%EC%BB%AC-%EC%84%A4%EC%B9%98-%EC%89%BD%EA%B2%8C-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95" target="_blank" rel="noopener">2024.12.15 &#8211; [제품추천/소프트웨어] &#8211; n8n 시놀로지 로컬 설치 쉽게 하는 방법</a></p>
<p><a href="https://2days.kr/23/06/15/64144/industry/it/">Google Veo3 와 MusicGPT 콜라보로 만드는 AI 영상</a></p>
<!-- CONTENT END 2 -->
]]></content:encoded>
					
		
		
		<media:content url="https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1024x1024.jpg" medium="image"></media:content>
            	</item>
	</channel>
</rss>
