<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mastra.ai 한국 사용자 그룹]]></title><description><![CDATA[Mastra.ai 한국 사용자 그룹]]></description><link>https://mkug.org</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 17:13:44 GMT</lastBuildDate><atom:link href="https://mkug.org/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Webinar: Building Agents with Mastra Templates]]></title><description><![CDATA[일시: 8월 1일 금요일 오전 1:00 - 오전 2:00 GMT+9
도구: Zoom
등록: https://lu.ma/wav8tlek]]></description><link>https://mkug.org/webinar-building-agents-with-mastra-templates</link><guid isPermaLink="true">https://mkug.org/webinar-building-agents-with-mastra-templates</guid><category><![CDATA[MastraAI]]></category><category><![CDATA[webinar]]></category><dc:creator><![CDATA[dongne-lab]]></dc:creator><pubDate>Sun, 27 Jul 2025 15:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/cckf4TsHAuw/upload/d25bdb3b3640aa02abed3920dbc65c42.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>일시: 8월 1일 금요일 오전 1:00 - 오전 2:00 GMT+9</p>
<p>도구: Zoom</p>
<p>등록: <a target="_blank" href="https://lu.ma/wav8tlek">https://lu.ma/wav8tlek</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753979391742/4cdf0964-a8dc-418b-bdb0-1719e9bb3008.webp" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Prompt Hub 구축하기]]></title><description><![CDATA[LangGraph를 사용하면서 편하게 사용했던 기능은 바로 LangSmith hub에서 제공하는 prompt pull 기능이었어요.
github과 같이 hub에서 prompt를 관리할 수 있어서 수정을 해도 재배포 없이 바로 반영이 되고, tag로 관리가 돠어서 환경에 따라 다르게 설정할 수 있었거든요.
Mastra를 사용해서 vercel에 배포를 하며 겪게된 이슈는 prompt 관리가 편하지 않다는거였어요. 코딩을 어떻게 하느냐에에 따라 개발...]]></description><link>https://mkug.org/build-prompt-hub</link><guid isPermaLink="true">https://mkug.org/build-prompt-hub</guid><category><![CDATA[MastraAI]]></category><category><![CDATA[mkug]]></category><category><![CDATA[Use Case]]></category><category><![CDATA[prompt hub]]></category><dc:creator><![CDATA[dongne-lab]]></dc:creator><pubDate>Sat, 26 Jul 2025 15:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753618293542/bb21d76a-75ea-414b-a165-c51100165cb2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>LangGraph를 사용하면서 편하게 사용했던 기능은 바로 LangSmith hub에서 제공하는 prompt pull 기능이었어요.</p>
<p>github과 같이 hub에서 prompt를 관리할 수 있어서 수정을 해도 재배포 없이 바로 반영이 되고, tag로 관리가 돠어서 환경에 따라 다르게 설정할 수 있었거든요.</p>
<p>Mastra를 사용해서 vercel에 배포를 하며 겪게된 이슈는 prompt 관리가 편하지 않다는거였어요. 코딩을 어떻게 하느냐에에 따라 개발자 도구로 확인이 될 수 있다는 것도 있고요. 그래서 나만의 hub를 만들어서 prompt 관리를 하도록 구현을 해봤습니다.</p>
<p>실제로 서비스에 적용하기 위해서는 추가적인 edge case를 비롯하여 다듬어야 하는 부분이 많을 꺼라 생각합니다. 따라서 단지 참고용으로만 활용을 해주세요.</p>
<p>아울러 이 방법보다 더 효율적인 방법은 항상 있다고 생각을 합니다. 새로운 의견은 언제나 환영합니다!</p>
<h2 id="heading-7zw17iusioyvhoydtouuloywta">핵심 아이디어</h2>
<p>Prompt를 데이터베이스에 저장하고 버전별로 관리하는 시스템입니다. Prompt를 코드에서 분리해서 관리할 수 있어, 코드 배포 없이도 Prompt를 수정하고 실험할 수 있습니다.</p>
<p><strong>주요 특징:</strong></p>
<ul>
<li><p>Prompt를 데이터베이스에서 동적으로 load</p>
</li>
<li><p>버전별 관리로 안전한 rollback 가능</p>
</li>
<li><p>Template 변수를 통한 동적 prompt 생성</p>
</li>
</ul>
<h2 id="heading-642w7j207ysw67kg7j207iqkioyepoyglq">데이터베이스 설정</h2>
<p>PostgreSQL을 사용하는 경우 다음 스키마를 생성합니다:</p>
<pre><code class="lang-pgsql"><span class="hljs-comment">-- Prompt Management System Schema</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> prompts (
  id <span class="hljs-type">UUID</span> <span class="hljs-keyword">PRIMARY KEY</span> <span class="hljs-keyword">DEFAULT</span> uuid_generate_v4(),
  <span class="hljs-type">name</span> <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
  content <span class="hljs-type">TEXT</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
  <span class="hljs-keyword">version</span> <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">20</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'1.0.0'</span>,
  is_active <span class="hljs-type">BOOLEAN</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">true</span>,
  created_at <span class="hljs-type">TIMESTAMP</span> <span class="hljs-type">WITH TIME ZONE</span> <span class="hljs-keyword">DEFAULT</span> NOW(),

  <span class="hljs-comment">-- Ensure unique name+version combinations</span>
  <span class="hljs-keyword">CONSTRAINT</span> prompts_name_version_unique <span class="hljs-keyword">UNIQUE</span> (<span class="hljs-type">name</span>, <span class="hljs-keyword">version</span>)
);

<span class="hljs-comment">-- Indexes for efficient querying</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">INDEX</span> idx_prompts_name_created_at <span class="hljs-keyword">ON</span> prompts (<span class="hljs-type">name</span>, created_at <span class="hljs-keyword">DESC</span>);
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">INDEX</span> idx_prompts_active <span class="hljs-keyword">ON</span> prompts (is_active) <span class="hljs-keyword">WHERE</span> is_active = <span class="hljs-keyword">true</span>;
</code></pre>
<h2 id="heading-promptmanager">PromptManager 구현</h2>
<p>이제 prompt manager 클래스를 구현해보겠습니다:</p>
<pre><code class="lang-typescript"><span class="hljs-keyword">export</span> <span class="hljs-keyword">class</span> PromptManager {
  <span class="hljs-keyword">private</span> promptTemplate: <span class="hljs-built_in">string</span> = <span class="hljs-string">''</span>;
  <span class="hljs-keyword">private</span> isLoaded: <span class="hljs-built_in">boolean</span> = <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">private</span> templateVersion: <span class="hljs-built_in">string</span> = <span class="hljs-string">'1.0.0'</span>;
  <span class="hljs-keyword">private</span> templateId: <span class="hljs-built_in">string</span> = <span class="hljs-string">''</span>;
  <span class="hljs-keyword">private</span> promptName: <span class="hljs-built_in">string</span> = <span class="hljs-string">'default_prompt'</span>;
  <span class="hljs-keyword">private</span> db: <span class="hljs-built_in">any</span>; <span class="hljs-comment">// Database client</span>

  <span class="hljs-keyword">constructor</span>(<span class="hljs-params">dbClient: <span class="hljs-built_in">any</span>, promptName?: <span class="hljs-built_in">string</span></span>) {
    <span class="hljs-built_in">this</span>.db = dbClient;
    <span class="hljs-built_in">this</span>.promptName = promptName || process.env.PROMPT_NAME || <span class="hljs-string">'default_prompt'</span>;
  }

  <span class="hljs-comment">/**
   * Load prompt template from database
   * Supports: 'prompt_name' (latest) or 'prompt_name:uuid' (specific version)
   */</span>
  <span class="hljs-keyword">async</span> loadPromptTemplate(): <span class="hljs-built_in">Promise</span>&lt;<span class="hljs-built_in">void</span>&gt; {
    <span class="hljs-keyword">if</span> (<span class="hljs-built_in">this</span>.isLoaded) <span class="hljs-keyword">return</span>;

    <span class="hljs-keyword">try</span> {
      <span class="hljs-keyword">let</span> query = <span class="hljs-built_in">this</span>.db
        .from(<span class="hljs-string">'prompts'</span>)
        .select(<span class="hljs-string">'id, content, version, name'</span>)
        .eq(<span class="hljs-string">'is_active'</span>, <span class="hljs-literal">true</span>);

      <span class="hljs-comment">// Parse name:uuid format for specific version</span>
      <span class="hljs-keyword">if</span> (<span class="hljs-built_in">this</span>.promptName.includes(<span class="hljs-string">':'</span>)) {
        <span class="hljs-keyword">const</span> [name, uuid] = <span class="hljs-built_in">this</span>.promptName.split(<span class="hljs-string">':'</span>);
        query = query.eq(<span class="hljs-string">'name'</span>, name).eq(<span class="hljs-string">'id'</span>, uuid);
      } <span class="hljs-keyword">else</span> {
        <span class="hljs-comment">// Get latest version</span>
        query = query
          .eq(<span class="hljs-string">'name'</span>, <span class="hljs-built_in">this</span>.promptName)
          .order(<span class="hljs-string">'created_at'</span>, { ascending: <span class="hljs-literal">false</span> })
          .limit(<span class="hljs-number">1</span>);
      }

      <span class="hljs-keyword">const</span> { data, error } = <span class="hljs-keyword">await</span> query.single();

      <span class="hljs-keyword">if</span> (error || !data) {
        <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">`Prompt not found: <span class="hljs-subst">${<span class="hljs-built_in">this</span>.promptName}</span>`</span>);
      }

      <span class="hljs-built_in">this</span>.promptTemplate = data.content;
      <span class="hljs-built_in">this</span>.templateVersion = data.version;
      <span class="hljs-built_in">this</span>.templateId = data.id;
      <span class="hljs-built_in">this</span>.promptName = data.name;
      <span class="hljs-built_in">this</span>.isLoaded = <span class="hljs-literal">true</span>;

    } <span class="hljs-keyword">catch</span> (error) {
      <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">`Failed to load prompt: <span class="hljs-subst">${error}</span>`</span>);
    }
  }

  <span class="hljs-comment">/**
   * Generate complete prompt with user input
   */</span>
  <span class="hljs-keyword">async</span> generatePrompt(userInput: <span class="hljs-built_in">any</span>): <span class="hljs-built_in">Promise</span>&lt;<span class="hljs-built_in">string</span>&gt; {
    <span class="hljs-keyword">if</span> (!<span class="hljs-built_in">this</span>.isLoaded) {
      <span class="hljs-keyword">await</span> <span class="hljs-built_in">this</span>.loadPromptTemplate();
    }

    <span class="hljs-comment">// Simple input processing</span>
    <span class="hljs-keyword">const</span> inputText = <span class="hljs-keyword">typeof</span> userInput === <span class="hljs-string">'string'</span> 
      ? userInput 
      : <span class="hljs-built_in">JSON</span>.stringify(userInput);

    <span class="hljs-keyword">return</span> <span class="hljs-built_in">this</span>.promptTemplate.replace(<span class="hljs-string">'{user_input}'</span>, inputText);
  }

  <span class="hljs-comment">/**
   * Get template information
   */</span>
  getTemplateInfo() {
    <span class="hljs-keyword">return</span> {
      name: <span class="hljs-built_in">this</span>.promptName,
      version: <span class="hljs-built_in">this</span>.templateVersion,
      id: <span class="hljs-built_in">this</span>.templateId,
      isLoaded: <span class="hljs-built_in">this</span>.isLoaded
    };
  }
}
</code></pre>
<h2 id="heading-67ke7kceioq0goumrcdrsknsi50">버전 관리 방식</h2>
<p>두 가지 방식으로 prompt를 load할 수 있습니다:</p>
<h3 id="heading-7lwc7iugiouyhoyghcdsgqzsmqk">최신 버전 사용</h3>
<pre><code class="lang-typescript"><span class="hljs-comment">// 'analysis_prompt'의 최신 버전을 자동으로 로드</span>
<span class="hljs-keyword">const</span> manager = <span class="hljs-keyword">new</span> PromptManager(dbClient, <span class="hljs-string">'analysis_prompt'</span>);
</code></pre>
<p>데이터베이스에서 <code>created_at</code> 기준으로 가장 최근에 생성된 버전을 가져옵니다.</p>
<h3 id="heading-7yq57kcviouyhoyghcdqs6dsoju">특정 버전 고정</h3>
<pre><code class="lang-typescript"><span class="hljs-comment">// 특정 UUID 버전을 고정해서 사용</span>
<span class="hljs-keyword">const</span> manager = <span class="hljs-keyword">new</span> PromptManager(
  dbClient, 
  <span class="hljs-string">'analysis_prompt:550e8400-e29b-41d4-a716-446655440000'</span>
);
</code></pre>
<p><code>name:uuid</code> 형태로 지정하면 특정 버전을 고정해서 사용할 수 있습니다. 이는 <strong>Production 환경에서 안정성을 보장</strong>할 때 유용합니다.</p>
<h2 id="heading-64z7j6rioqzvoyglq">동작 과정</h2>
<h3 id="heading-1-lazy-loading">1. 지연 로딩 (Lazy Loading)</h3>
<p>PromptManager는 생성 시점에는 데이터베이스 연결만 설정하고, 실제 프롬프트 로딩은 <code>generatePrompt()</code> 호출 시까지 지연합니다. 이를 통해 불필요한 데이터베이스 호출을 방지합니다.</p>
<h3 id="heading-2">2. 템플릿 변수 치환</h3>
<p>Load된 prompt에서 <code>{user_input}</code> 같은 template 변수를 실제 사용자 입력으로 치환합니다:</p>
<pre><code class="lang-typescript"><span class="hljs-comment">// 데이터베이스의 템플릿</span>
<span class="hljs-string">"다음 데이터를 분석해주세요: {user_input}"</span>

<span class="hljs-comment">// 치환 후 결과  </span>
<span class="hljs-string">"다음 데이터를 분석해주세요: 2024년 매출 데이터"</span>
</code></pre>
<h3 id="heading-3">3. 캐싱</h3>
<p>한 번 load된 prompt는 <code>isLoaded</code> flag로 관리되어 중복 loading을 방지합니다.</p>
<h2 id="heading-7iks7jqpioyyioylna">사용 예시</h2>
<h3 id="heading-6riw67o4ioycroyaqeuylq">기본 사용법</h3>
<pre><code class="lang-typescript"><span class="hljs-keyword">const</span> manager = <span class="hljs-keyword">new</span> PromptManager(dbClient, <span class="hljs-string">'analysis_prompt'</span>);

<span class="hljs-comment">// 프롬프트 생성 (자동으로 DB에서 로드)</span>
<span class="hljs-keyword">const</span> completedPrompt = <span class="hljs-keyword">await</span> manager.generatePrompt({
  query: <span class="hljs-string">"분기별 매출 분석"</span>,
  context: <span class="hljs-string">"전년 대비 성장률 포함"</span>
});
</code></pre>
<h3 id="heading-67ke7kceioygleuztcdtmzxsnbg">버전 정보 확인</h3>
<pre><code class="lang-typescript"><span class="hljs-keyword">await</span> manager.loadPromptTemplate();
<span class="hljs-keyword">const</span> info = manager.getTemplateInfo();

<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`Using <span class="hljs-subst">${info.name}</span> v<span class="hljs-subst">${info.version}</span> (<span class="hljs-subst">${info.id}</span>)`</span>);
<span class="hljs-comment">// Output: Using analysis_prompt v2.1.0 (550e8400-e29b-41d4-a716-446655440000)</span>
</code></pre>
<p>..</p>
]]></content:encoded></item><item><title><![CDATA[Mastra.ai KUG에 오신 것을 환영합니다!]]></title><description><![CDATA[MKUG(Mastra.ai Korean Users Group)는 Mastra.ai에 관심 있는 한국 개발자들을 위한 공간입니다.
왜 Mastra.ai인가요?
LangChain에서 LangGraph로 넘어오면서 매번 Python으로 개발해야 하는 불편함을 겪어보셨나요? 저도 마찬가지였습니다. 그러던 중 TypeScript 기반의 Mastra.ai를 발견하게 되었고, 이는 정말 게임 체인저였습니다.
Mastra.ai는 LangGraph의 모든 기능...]]></description><link>https://mkug.org/welcome</link><guid isPermaLink="true">https://mkug.org/welcome</guid><category><![CDATA[MistralAI]]></category><category><![CDATA[mkug]]></category><category><![CDATA[korean user group]]></category><dc:creator><![CDATA[dongne-lab]]></dc:creator><pubDate>Fri, 25 Jul 2025 15:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753617921443/55d6ff76-53ca-4952-94b5-d2a20d200555.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>MKUG(Mastra.ai Korean Users Group)는 Mastra.ai에 관심 있는 한국 개발자들을 위한 공간입니다.</p>
<h2 id="heading-mastraai">왜 Mastra.ai인가요?</h2>
<p>LangChain에서 LangGraph로 넘어오면서 매번 Python으로 개발해야 하는 불편함을 겪어보셨나요? 저도 마찬가지였습니다. 그러던 중 <strong>TypeScript 기반의 Mastra.ai</strong>를 발견하게 되었고, 이는 정말 게임 체인저였습니다.</p>
<p>Mastra.ai는 LangGraph의 모든 기능을 대체하지는 못하지만, 실제 서비스 개발에 필요한 핵심 기능들을 우아하게 제공합니다:</p>
<ul>
<li><p><strong>🔄 워크플로우</strong>: 그래프 기반의 직관적인 LLM 호출 체인</p>
</li>
<li><p><strong>🤖 에이전트</strong>: 메모리와 도구 호출이 가능한 스마트 AI 에이전트</p>
</li>
<li><p><strong>📚 RAG</strong>: 문서 처리부터 벡터 검색까지 완벽한 RAG 파이프라인</p>
</li>
<li><p><strong>🔧 개발 환경</strong>: 로컬에서 에이전트와 실시간 채팅하며 디버깅</p>
</li>
<li><p><strong>☁️ 배포</strong>: Vercel, Cloudflare Workers 등 서버리스 플랫폼 완벽 지원</p>
</li>
<li><p><strong>📊 평가</strong>: 내장된 Evals로 AI 결과물의 품질 자동 측정</p>
</li>
</ul>
<h2 id="heading-mkug">MKUG를 시작하는 이유</h2>
<p>현재 Mastra에 대한 한국어 자료는 매우 제한적입니다. 공식 문서는 영어와 일본어만 제공되고, 한국 개발자 커뮤니티에서 관련 정보를 찾기가 어려운 실정입니다.</p>
<p>하지만 이 혁신적인 프레임워크가 가진 잠재력은 너무나 매력적입니다. TypeScript로 AI 애플리케이션을 빠르고 안정적으로 개발할 수 있다는 것, 복잡한 Python 환경 설정 없이도 강력한 AI 기능을 구현할 수 있다는 것은 분명 많은 한국 개발자들에게도 큰 도움이 될 것입니다.</p>
<h2 id="heading-6roe7zqn7zwy6rogioyeiouklcdqsoprk6q">계획하고 있는 것들</h2>
<p>MKUG를 통해 다음과 같은 가치 있는 콘텐츠를 지속적으로 제공하려고 합니다:</p>
<ul>
<li><p><strong>📖 완전한 한글 문서화</strong>: Mastra 공식 문서의 한글화</p>
</li>
<li><p><strong>💡 실전 사용법</strong>: 단계별 tutorial과 best practice</p>
</li>
<li><p><strong>📰 최신 소식</strong>: Mastra 업데이트와 생태계 동향</p>
</li>
<li><p><strong>🎯 Use case</strong>: 실제 프로젝트에 적용 가능한 구체적인 예시들</p>
</li>
</ul>
<h2 id="heading-kirtlajqu5gg7isx7j6l7zwy64quioqzteqwhoydhcdqv4jqvrjrqbaqkg"><strong>함께 성장하는 공간을 꿈꾸며</strong></h2>
<p>지금은 작게 시작하는 프로젝트이지만 언젠가는 Mastra에 관심 있는 한국 개발자들이 모여 함께 배우고 성장하는 커뮤니티로 발전하기를 희망합니다.</p>
<p>여러분의 관심과 참여가 이 작은 시작을 의미 있는 공간으로 만들어갈 것입니다.</p>
<p>Mastra와 함께 새로운 AI 개발의 여정을 시작해보세요! 🌟</p>
]]></content:encoded></item><item><title><![CDATA[첫 번째 여정: Docs 한글화 프로젝트]]></title><description><![CDATA[첫 번째로 계획하고 있는 대형 프로젝트는 Mastra 공식 문서의 완전한 한글화입니다.
우선 단순 번역을 시작으로 한국 개발자들의 개발 환경과 니즈에 맞는 실용적인 가이드로 재탄생시킬 생각입니다.
비정기적인 활동을 통해 점진적으로 번역이 진행될 예정입니다만 지속적인 관심과 피드백 부탁드립니다.
한글화 프로젝트

번역 시작일: 2025년 7월 26일

진행 방식: 비정기적 개인 활동을 통한 점진적 번역


Mastra.ai Docs 한글

Doc...]]></description><link>https://mkug.org/about-first-journey</link><guid isPermaLink="true">https://mkug.org/about-first-journey</guid><category><![CDATA[MastraAI]]></category><category><![CDATA[mkug]]></category><dc:creator><![CDATA[dongne-lab]]></dc:creator><pubDate>Fri, 25 Jul 2025 15:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753618208471/6baed159-f6ce-402c-bfca-305bbfdea2cf.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>첫 번째로 계획하고 있는 대형 프로젝트는 Mastra 공식 문서의 완전한 한글화입니다.</p>
<p>우선 단순 번역을 시작으로 한국 개발자들의 개발 환경과 니즈에 맞는 실용적인 가이드로 재탄생시킬 생각입니다.</p>
<p>비정기적인 활동을 통해 점진적으로 번역이 진행될 예정입니다만 지속적인 관심과 피드백 부탁드립니다.</p>
<h2 id="heading-7zwc6ria7zmuio2uhouhnoygne2kua">한글화 프로젝트</h2>
<ul>
<li><p><strong>번역 시작일</strong>: 2025년 7월 26일</p>
</li>
<li><p><strong>진행 방식</strong>: 비정기적 개인 활동을 통한 점진적 번역</p>
</li>
</ul>
<h2 id="heading-mastraai-docs">Mastra.ai Docs 한글</h2>
<ul>
<li><a target="_blank" href="https://mastra-korean.hashnode.space/">Docs 보러가기</a></li>
</ul>
]]></content:encoded></item></channel></rss>