<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Reasonofmoon</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://devlog.moonlang.com/</id>
  <link href="https://devlog.moonlang.com/" rel="alternate"/>
  <link href="https://devlog.moonlang.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Reasonofmoon</rights>
  <subtitle>AI agent lab notes, learning workflows, PKM systems, and blog operations.</subtitle>
  <title>Reasonofmoon Devlog</title>
  <updated>2026-09-30T09:28:01.621Z</updated>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI Agent Lab" scheme="https://devlog.moonlang.com/categories/AI-Agent-Lab/"/>
    <category term="Firebase" scheme="https://devlog.moonlang.com/tags/Firebase/"/>
    <category term="App Check" scheme="https://devlog.moonlang.com/tags/App-Check/"/>
    <category term="reCAPTCHA Enterprise" scheme="https://devlog.moonlang.com/tags/reCAPTCHA-Enterprise/"/>
    <category term="Firebase AI Logic" scheme="https://devlog.moonlang.com/tags/Firebase-AI-Logic/"/>
    <category term="API 키" scheme="https://devlog.moonlang.com/tags/API-%ED%82%A4/"/>
    <category term="403 오류" scheme="https://devlog.moonlang.com/tags/403-%EC%98%A4%EB%A5%98/"/>
    <category term="트러블슈팅" scheme="https://devlog.moonlang.com/tags/%ED%8A%B8%EB%9F%AC%EB%B8%94%EC%8A%88%ED%8C%85/"/>
    <content>
      <![CDATA[<p>App Check를 붙인 뒤 사이트가 비어 보이고 콘솔에 <code>API_KEY_HTTP_REFERRER_BLOCKED</code> 403이 뜬다면, 원인은 App Check가 아니라 Browser key 웹사이트 목록에 새 도메인이 빠진 경우가 많아요. Google Cloud 사용자 인증 정보에서 Browser key에 내 도메인을 추가하고 5분쯤 기다리세요. AI Logic이 “deactivated” 오류를 내면 App Check 기준 보호를 적용하고, 반영된 뒤 다시 시도하세요.</p><p>아래는 App Check를 켜고 다시 배포했더니 사이트가 텅 비어 보이고, 나중에는 AI 생성까지 멈췄던 실제 경험을 순서대로 정리한 기록이에요. 화면을 하나씩 따라 하면 같은 문제를 스스로 풀 수 있습니다.</p><blockquote><p><strong>가이드 정보</strong></p><ul><li>난이도: 초보자</li><li>예상 시간: 약 1시간 (설정 반영을 기다리는 시간 약 20분 포함)</li><li>준비물: 4개</li><li>확인 날짜: 2026-09-29</li><li>예시 환경: 프로젝트 <code>내-프로젝트-id</code>(여러분의 Firebase 프로젝트 ID로 바꿔 읽으세요), 사이트 <code>bluel.moonlang.com</code>, React + Vite + Firebase</li></ul></blockquote><h2 id="목차"><a href="#목차" class="headerlink" title="목차"></a>목차</h2><ul><li><a href="#quick">증상별 빠른 찾기</a></li><li><a href="#s0">0. 이 튜토리얼로 할 수 있는 것</a></li><li><a href="#s1">1. App Check가 뭔가요?</a></li><li><a href="#s2">2. reCAPTCHA Enterprise 키는 어떻게 만드나요?</a></li><li><a href="#s3">3. Firebase 콘솔에서 App Check 등록</a></li><li><a href="#s4">4. 코드에 App Check 연결하기</a></li><li><a href="#s5">5. 403 API_KEY_HTTP_REFERRER_BLOCKED는 왜 뜨나요?</a></li><li><a href="#s6">6. Browser key에 도메인은 어떻게 추가하나요?</a></li><li><a href="#s7">7. 확인하기</a></li><li><a href="#s8">8. AI Logic “deactivated” 오류는 어떻게 고치나요?</a></li><li><a href="#s9">9. 적용 뒤 localhost 개발은 어떻게 하나요? (주의할 점)</a></li><li><a href="#s10">10. 체크리스트, 자주 막히는 곳</a></li><li><a href="#sources">공식 문서</a></li></ul><p><a id="quick"></a></p><h2 id="증상별-빠른-찾기"><a href="#증상별-빠른-찾기" class="headerlink" title="증상별 빠른 찾기"></a>증상별 빠른 찾기</h2><p>이미 문제가 생겼다면 여기서 내 증상을 찾고, 오른쪽 링크로 바로 가세요.</p><table><thead><tr><th>증상</th><th>원인</th><th>바로 가기</th></tr></thead><tbody><tr><td>배포 후 공개 목록이 비고 “로그인 필요”만 보임, 콘솔에 <code>API_KEY_HTTP_REFERRER_BLOCKED</code> 403</td><td>Browser key 웹사이트 제한에 새 도메인이 없음</td><td><a href="#s6">6단계</a></td></tr><tr><td>키 저장 시 API 제한 제거 경고, UPDATE 입력 요구</td><td>다른 키(예: Gemini Developer API key)를 고치는 중일 가능성(제 경우)</td><td><a href="#s6-wrong-key">6단계 흔한 실수</a></td></tr><tr><td>콘솔에 <code>API_KEY_SERVICE_BLOCKED</code> 403</td><td>Browser key의 API 제한 목록에 필요한 API가 빠짐</td><td><a href="#s6-api">6단계 API 제한</a></td></tr><tr><td>App Check를 설정했는데 메트릭에 확인된 요청이 0</td><td>코드 미반영(빌드·배포 안 함) 또는 환경변수 누락</td><td><a href="#s4">4단계</a></td></tr><tr><td>“Firebase AI Logic has been deactivated … you must enforce Firebase App Check”</td><td>AI Logic에 App Check 적용이 필수로 바뀌는 중</td><td><a href="#s8">8단계</a></td></tr><tr><td>적용 후에도 “오래된 클라이언트 요청”만 늘어남</td><td>옛 캐시 번들, 또는 토큰을 붙이지 않는 코드</td><td><a href="#s8-after">8단계 저장한 뒤에</a></td></tr><tr><td>재생 보호 적용 후 AI 요청이 전부 막힘</td><td>limited-use 토큰을 쓰는 코드가 없음</td><td><a href="#s8-replay">8단계 틀리면</a></td></tr><tr><td>적용 후 localhost 개발이 막힘</td><td>localhost는 유효한 기기로 인정되지 않음. 디버그 제공자가 필요</td><td><a href="#s9-debug">9단계 1번</a></td></tr><tr><td>fetch로 부른 내 함수·백엔드가 토큰 검사에서 거부함</td><td><code>X-Firebase-AppCheck</code> 헤더를 직접 붙이지 않음</td><td><a href="#s9-fetch">9단계 3번</a></td></tr></tbody></table><p><a id="s0"></a></p><h2 id="0-이-튜토리얼로-할-수-있는-것"><a href="#0-이-튜토리얼로-할-수-있는-것" class="headerlink" title="0. 이 튜토리얼로 할 수 있는 것"></a>0. 이 튜토리얼로 할 수 있는 것</h2><p>다 읽고 따라 하면 이런 걸 할 수 있어요.</p><ul><li>내 Firebase 웹앱에 App Check(출입증 확인)를 처음부터 붙이기</li><li>배포 뒤 사이트가 비어 보이는 <code>API_KEY_HTTP_REFERRER_BLOCKED</code> 403 오류 고치기</li><li>“Firebase AI Logic has been deactivated” 오류가 났을 때 AI Logic에 App Check 적용하기</li></ul><p><a id="flow"></a></p><h3 id="전체-흐름-한눈에-보기"><a href="#전체-흐름-한눈에-보기" class="headerlink" title="전체 흐름 한눈에 보기"></a>전체 흐름 한눈에 보기</h3><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/00-flow-diagram.png" alt="Firebase 복구 전체 흐름 다이어그램: reCAPTCHA 키, App Check 등록, 코드 연결, 빌드와 배포, 403이면 Browser key 도메인 추가, 사이트 확인, AI 실패면 AI Logic 적용 후 다시 시도"></p><p><em>상자 앞 숫자가 이 글의 단계 번호예요. 위에서 아래로 따라가면 되고, 빨간 점선과 EX 구역은 “막혔을 때” 가는 길이에요. 왼쪽 위 구역 번호(01·02·04)와 범례는 그림 도구가 붙인 분류라 신경 쓰지 않아도 돼요.</em></p><h3 id="준비물"><a href="#준비물" class="headerlink" title="준비물"></a>준비물</h3><ul><li>Firebase 프로젝트와, 거기에 등록된 웹 앱 1개</li><li>Google Cloud 콘솔에 들어갈 수 있는 같은 구글 계정 (Firebase 프로젝트는 Google Cloud 프로젝트이기도 해요)</li><li>React + Vite 같은 웹앱 코드와, 다시 빌드해서 배포할 수 있는 환경</li><li>내 사이트 주소 (예: <code>bluel.moonlang.com</code>)</li></ul><p>시간은 넉넉히 1시간쯤 잡으세요. 설정이 반영되기를 기다리는 구간(5분, 15분)이 있어요. 403만 고치면 되는 분은 5–7단계만 보면 돼서 훨씬 짧아요.</p><p><a id="s1"></a></p><h2 id="1-App-Check가-뭔가요"><a href="#1-App-Check가-뭔가요" class="headerlink" title="1. App Check가 뭔가요?"></a>1. App Check가 뭔가요?</h2><p><strong>목표</strong>: App Check가 무엇을 막아 주는지, 왜 순서가 “키 → 등록 → 코드”인지 설명할 수 있어요.</p><p>App Check는 <strong>건물 출입증</strong>이라고 생각하면 쉬워요. Firebase(데이터베이스, 로그인, AI 같은 서비스)는 건물이고, 내 웹앱은 직원이에요. 출입증이 없던 시절엔 누구든 “저 직원이에요” 하고 들어올 수 있었죠. App Check를 켜면, 요청할 때마다 “진짜 우리 앱에서 온 요청”이라는 출입증(토큰)을 같이 보여줘야 해요.</p><ol><li><strong>내 웹앱</strong>: 사람이 쓰는 진짜 앱</li><li><strong>reCAPTCHA Enterprise</strong>: “진짜 내 사이트에서 온 요청 맞아요” 신원 확인만 맡아요</li><li><strong>App Check</strong>: 그 확인 결과를 보고 출입증(App Check 토큰, 기본 유효시간 1시간)을 발급해요</li><li><strong>Firebase 서비스</strong>: 출입증 확인 후 통과</li></ol><p>정리하면 reCAPTCHA Enterprise는 신원을 확인하는 경비원이고, 출입증은 App Check가 발급해요. 그래서 순서가 <strong>reCAPTCHA 키 만들기 → App Check에 등록 → 코드에서 출입증 받기</strong>가 됩니다.</p><blockquote><p><strong>알아두면 좋은 말 2가지</strong></p><p><strong>모니터링</strong>(콘솔 표기: 적용되지 않음(모니터링만)): 출입증을 검사만 하고 막지는 않는 상태. 누가 출입증 없이 오는지 숫자로만 봐요.</p><p><strong>적용(Enforce)</strong>: 출입증 없으면 실제로 막는 상태. 이미 사용자가 있는 앱에서 바로 적용하면 옛 버전 앱이 막힐 수 있어서, 보통은 모니터링으로 먼저 지켜봐요.</p></blockquote><blockquote><p><strong>✅ 이해했다면</strong> “모니터링은 세기만, 적용은 실제로 막기”를 내 말로 말할 수 있어요.</p><p><strong>↩️ 헷갈리면</strong> 위 목록을 위에서부터 다시 읽고, 2단계로 넘어가도 괜찮아요. 해 보면 더 잘 보여요.</p></blockquote><p><a id="s2"></a></p><h2 id="2-reCAPTCHA-Enterprise-키는-어떻게-만드나요"><a href="#2-reCAPTCHA-Enterprise-키는-어떻게-만드나요" class="headerlink" title="2. reCAPTCHA Enterprise 키는 어떻게 만드나요?"></a>2. reCAPTCHA Enterprise 키는 어떻게 만드나요?</h2><p><strong>목표</strong>: 내 사이트 주소가 들어간 reCAPTCHA 웹 키를 만들고 <strong>사이트 키</strong>를 복사해 둡니다.</p><p>App Check가 “진짜 내 사이트”인지 판정하려면 이 키가 먼저 있어야 해요.</p><p>Google Cloud 콘솔에서 reCAPTCHA 메뉴로 가서 <strong>키 만들기</strong>를 누릅니다. 화면에 “Fraud Defense”라고 보일 수 있는데, 공식 문서에 따르면 reCAPTCHA Enterprise는 Google Cloud Fraud Defense에 포함된 기능이에요. 화면 위쪽 프로젝트 선택기에서 올바른 프로젝트인지 먼저 확인하세요.</p><ol><li><strong>표시 이름</strong>: 알아보기 쉬운 이름을 넣어요. 예: <code>web-app-check-key</code></li><li><strong>애플리케이션 유형</strong>: <strong>웹</strong>을 고릅니다. 화면 안내대로, 만든 뒤에는 바꿀 수 없어요.</li><li><strong>도메인 목록</strong>: 옆의 <strong>도메인 확인 사용 중지</strong> 토글은 켜지 말고 꺼 둔 채로 둡니다. Google Cloud 문서는 이 토글을 켜면 사이트 제한이 사라져 누구나 키를 쓸 수 있는 보안 위험이 생긴다고 설명해요. 그다음 이 키를 쓸 실제 서비스 주소를 하나씩 추가해요.<ul><li>내 도메인: <code>bluel.moonlang.com</code></li><li>Firebase 기본 주소(쓰고 있다면): <code>내-프로젝트-id.web.app</code>, <code>내-프로젝트-id.firebaseapp.com</code></li></ul></li><li><strong>체크박스 문제(Use checkbox challenge)는 선택하지 않고</strong> 점수 기반(score-based) 키로 둡니다. App Check는 점수 기반 키만 쓰기 때문에 사용자가 퍼즐을 풀 필요가 없어요. (아래 화면에는 이 칸이 보이지 않아요.)</li><li><strong>Create key</strong>를 누르고, 생성된 <strong>사이트 키</strong>를 복사해 둡니다.</li></ol><blockquote><p><strong>localhost는 reCAPTCHA 키에 넣지 마세요</strong></p><p>Firebase 공식 문서는 배포용 reCAPTCHA 키의 도메인에 <code>localhost</code>를 추가하지 말라고 경고해요. 그렇게 하면 누구든 자기 컴퓨터에서 내 앱을 돌려 통과할 수 있기 때문이에요. 내 컴퓨터에서 개발할 때는 <a href="#s9-debug">9단계의 디버그 토큰</a>을 쓰세요.</p></blockquote><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/02-recaptcha-key-create.png" alt="Google Cloud reCAPTCHA 키 만들기 화면. 표시 이름 web-app-check-key, 애플리케이션 유형 웹, 도메인 bluel.moonlang.com 추가 중"></p><p><em>화면에서 볼 곳: 맨 위 표시 이름 → 애플리케이션 유형 “웹” → “도메인 확인 사용 중지” 토글은 꺼진 상태 그대로 → 도메인 목록에 도메인 추가 → 맨 아래 Create key. 오른쪽 요약에서 자물쇠 표시된 값은 나중에 못 바꿔요.</em></p><blockquote><p><strong>비용 참고</strong></p><p>Firebase 문서에 따르면 reCAPTCHA Enterprise는 매월 평가 1만 건까지 무료이고, 그 뒤로는 비용이 나와요. App Check 라이브러리는 토큰 유효시간(TTL)의 절반쯤마다 토큰을 새로 받으니, 기본 TTL 1시간이면 사용자 한 명이 사이트를 계속 쓰는 동안 시간당 2번쯤 갱신해요. 무료 Spark 요금제에서는 쓸 수 있는 reCAPTCHA 점수 단계가 일부로 제한돼요.</p></blockquote><blockquote><p><strong>사이트 키는 공개돼도 괜찮아요</strong></p><p>reCAPTCHA 사이트 키는 원래 브라우저 코드에 들어가는 값이에요. 다만 서버용 비밀 키나 서비스 계정 파일은 절대 프런트엔드 코드에 넣으면 안 됩니다.</p></blockquote><blockquote><p><strong>✅ 이렇게 보이면 성공</strong> 키 목록에 새 키가 생기고, 사이트 키를 복사해 뒀어요.</p><p><strong>↩️ 아니면</strong> 유형을 “웹”으로 골랐는지 보세요. 잘못 만들었다면 새로 만드는 게 빨라요.</p></blockquote><p><a id="s3"></a></p><h2 id="3-Firebase-콘솔에서-App-Check에-웹-앱-등록"><a href="#3-Firebase-콘솔에서-App-Check에-웹-앱-등록" class="headerlink" title="3. Firebase 콘솔에서 App Check에 웹 앱 등록"></a>3. Firebase 콘솔에서 App Check에 웹 앱 등록</h2><p><strong>목표</strong>: 내 웹 앱의 App Check 상태를 “등록됨”으로 만들어요.</p><p>Firebase가 2단계에서 만든 키를 알아야 출입증을 확인할 수 있어요.</p><ol><li>Firebase 콘솔에서 <strong>보안(Security) → App Check</strong>로 들어가 <strong>앱</strong> 탭을 엽니다.</li><li>내 웹 앱 줄을 펼쳐서 <strong>증명 제공업체</strong>로 <strong>reCAPTCHA Enterprise</strong>(화면에는 “Fraud Defense(이전 명칭: reCAPTCHA Enterprise)”)를 고릅니다.</li><li>2단계에서 복사한 <strong>사이트 키</strong>를 붙여넣어요.</li><li><strong>토큰 TTL</strong>(출입증 유효시간)은 기본값 <strong>1시간</strong> 그대로 둡니다. 공식 문서는 30분에서 7일 사이로 바꿀 수 있지만 대부분의 앱에는 1시간이 적당하다고 안내해요.</li><li>저장하면 상태가 “등록됨”으로 바뀝니다.</li></ol><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/03-appcheck-register.png" alt="Firebase App Check 앱 탭. 웹 앱에 Fraud Defense(reCAPTCHA Enterprise) 제공자를 고르고 사이트 키 입력칸과 토큰 TTL 1시간이 보이는 화면. 프로젝트 이름은 가림 처리"></p><p><em>화면에서 볼 곳: 앱 탭 → 증명 제공업체(Fraud Defense) → 사이트 키 입력칸 → 토큰 TTL 1시간 → 오른쪽 상태. 등록 전이라 상태가 “등록되지 않음”으로 보여요. (프로젝트 이름은 가렸어요.)</em></p><blockquote><p><strong>처음엔 적용(Enforce)을 서두르지 마세요</strong></p><p>등록만 하고 API 탭의 각 서비스(Firestore, Authentication 등)는 <strong>모니터링</strong> 상태로 둡니다. 코드가 출입증을 제대로 붙이는지 숫자로 확인한 다음에 적용해도 늦지 않아요. 단, 아직 출시하지 않은 앱이라면 공식 문서는 바로 적용하는 것을 권해요(막힐 옛 버전 사용자가 없으니까요).</p></blockquote><blockquote><p><strong>✅ 이렇게 보이면 성공</strong> 웹 앱 줄의 상태가 “등록됨”이에요.</p><p><strong>↩️ 아니면</strong> 사이트 키 칸의 빨간 안내를 보세요. 키를 앞뒤 공백 없이 다시 붙여넣어요.</p></blockquote><p><a id="s4"></a></p><h2 id="4-코드에-App-Check-연결하기"><a href="#4-코드에-App-Check-연결하기" class="headerlink" title="4. 코드에 App Check 연결하기"></a>4. 코드에 App Check 연결하기</h2><p><strong>목표</strong>: 앱이 실제로 출입증을 받아 오도록 코드와 환경변수를 넣고, 다시 빌드·배포해요.</p><p>콘솔 설정만으로는 아무 일도 안 일어나요. 앱이 실제로 출입증을 받아 오도록 코드에 몇 줄 넣어야 합니다. Firebase를 초기화하는 파일(예: <code>src/firebase.ts</code>)에 추가해요.</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> &#123; initializeApp &#125; <span class="keyword">from</span> <span class="string">&quot;firebase/app&quot;</span>;</span><br><span class="line"><span class="keyword">import</span> &#123; initializeAppCheck, <span class="title class_">ReCaptchaEnterpriseProvider</span> &#125; <span class="keyword">from</span> <span class="string">&quot;firebase/app-check&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> app = <span class="title function_">initializeApp</span>(firebaseConfig);</span><br><span class="line"></span><br><span class="line"><span class="comment">// Firestore, Auth, AI 같은 다른 Firebase 기능을 쓰기 전에 실행되게 두세요</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">const</span> appCheck = <span class="title function_">initializeAppCheck</span>(app, &#123;</span><br><span class="line">  <span class="attr">provider</span>: <span class="keyword">new</span> <span class="title class_">ReCaptchaEnterpriseProvider</span>(<span class="keyword">import</span>.<span class="property">meta</span>.<span class="property">env</span>.<span class="property">VITE_RECAPTCHA_SITE_KEY</span>),</span><br><span class="line">  <span class="attr">isTokenAutoRefreshEnabled</span>: <span class="literal">true</span>, <span class="comment">// 출입증을 알아서 새로 받아요 (기본값은 꺼짐)</span></span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>공식 문서도 App Check 초기화 코드를 다른 Firebase 서비스에 접근하기 전에 실행하라고 안내하고, 토큰 자동 갱신은 <code>isTokenAutoRefreshEnabled: true</code>로 직접 켜야 한다고 적고 있어요. 사이트 키는 코드에 직접 쓰지 않고 <strong>환경변수</strong>로 넣어요.</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 내 컴퓨터: 프로젝트 폴더의 .env.local</span></span><br><span class="line">VITE_RECAPTCHA_SITE_KEY=(복사한 사이트 키)</span><br></pre></td></tr></table></figure><ul><li>Vite는 이름이 <code>VITE_</code>로 시작하는 변수만 브라우저 코드에 넣어 줘요.</li><li>GitHub Actions 같은 CI로 배포한다면 저장소 Secret에 <code>VITE_RECAPTCHA_SITE_KEY</code>를 추가하고, 빌드 단계에서 환경변수로 넘겨주세요.</li></ul><p>반영 순서는 <strong>코드 수정(initializeAppCheck) → 환경변수(.env.local &#x2F; CI Secret) → 다시 빌드(npm run build) → 다시 배포</strong>예요.</p><blockquote><p><strong>빌드와 배포를 꼭 다시 하세요</strong></p><p>Vite는 빌드할 때 <code>import.meta.env</code> 값을 코드에 그대로 바꿔 넣어요. 그래서 키를 바꾸거나 새로 넣었다면 반드시 다시 빌드하고 배포해야 사이트에 반영됩니다.</p></blockquote><blockquote><p><strong>✅ 이렇게 보이면 성공</strong> 배포 뒤 App Check API 탭 메트릭에 <strong>확인된 요청</strong>이 생기기 시작해요.</p><p><strong>↩️ 아니면</strong> 확인된 요청이 0이면 환경변수 이름과 재빌드·재배포를 다시 보세요. 사이트가 비어 보이면 <a href="#s5">5단계</a>로.</p></blockquote><p><a id="s5"></a></p><h2 id="5-403-API-KEY-HTTP-REFERRER-BLOCKED는-왜-뜨나요"><a href="#5-403-API-KEY-HTTP-REFERRER-BLOCKED는-왜-뜨나요" class="headerlink" title="5. 403 API_KEY_HTTP_REFERRER_BLOCKED는 왜 뜨나요?"></a>5. 403 API_KEY_HTTP_REFERRER_BLOCKED는 왜 뜨나요?</h2><p><strong>목표</strong>: 내 문제가 “API 키 웹사이트 제한” 때문인지 콘솔 오류로 확인해요.</p><p>원인을 잘못 짚으면 App Check를 끄는 것처럼 엉뚱한 곳을 고치게 돼요.</p><p>App Check를 붙여 새 도메인으로 배포했더니, 로그아웃 상태에서 공개 강의 목록이 안 나오고 “로그인이 필요해요”만 보였어요. 강의 페이지도 자물쇠만 떴습니다.</p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/05-site-blocked-public-list.png" alt="홈 화면 공개 강의 영역에 공개 강의를 보려면 로그인이 필요해요, 익명 접속에 실패했습니다 메시지가 보이는 막힌 화면"></p><p><em>막힌 상태 1: 공개 강의 자리에 “익명 접속에 실패했습니다” 안내만 보여요.</em></p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/05-site-blocked-course.png" alt="강의 페이지에 자물쇠 아이콘과 로그인하면 바로 이어서 볼 수 있어요 문구만 보이는 막힌 화면"></p><p><em>막힌 상태 2: 강의 페이지가 자물쇠 화면으로만 나와요.</em></p><p>브라우저에서 <strong>F12</strong>를 눌러 개발자도구 <strong>Console</strong> 탭을 보면 이런 오류가 있었어요.</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">403</span> <span class="variable constant_">PERMISSION_DENIED</span></span><br><span class="line"><span class="variable constant_">API_KEY_HTTP_REFERRER_BLOCKED</span></span><br><span class="line"><span class="title class_">Requests</span> <span class="keyword">from</span> referer <span class="attr">https</span>:<span class="comment">//bluel.moonlang.com/ are blocked.</span></span><br></pre></td></tr></table></figure><h3 id="원인"><a href="#원인" class="headerlink" title="원인"></a>원인</h3><p>App Check 문제가 아니었어요. Firebase 웹앱이 쓰는 <strong>API 키</strong>에 “이 웹사이트에서만 쓸 수 있음” 제한(웹사이트 제한)이 걸려 있는데, 그 목록에 새 도메인이 없었던 거예요. 그래서 익명 로그인이 403으로 막혀서, 로그인이 필요한 데이터도 못 불러왔어요.</p><p>이 API 키는 Google Cloud 콘솔 <strong>API 및 서비스 → 사용자 인증 정보(Credentials)</strong>에 있어요. Firebase 공식 문서에 따르면 웹앱용 키는 보통 <strong>Browser key (auto created by Firebase)</strong>라는 이름으로 자동 생성됩니다.</p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/05-credentials-two-keys.png" alt="Google Cloud 사용자 인증 정보 화면. API 키에 Gemini Developer API key와 Browser key 두 개가 보임. 프로젝트 이름, 클라이언트 ID, 서비스 계정 이메일은 가림 처리"></p><p><em>고칠 키는 아래쪽 <strong>Browser key</strong>이고, 위쪽 Gemini Developer API key는 이번 문제와 상관없어요. (개인정보 보호를 위해 프로젝트 이름, 클라이언트 ID, 계정 정보는 검게 가렸어요.)</em></p><blockquote><p><strong>✅ 같은 증상이면</strong> Console에 <code>API_KEY_HTTP_REFERRER_BLOCKED</code>가 보여요. <a href="#s6">6단계</a>로 가세요.</p><p><strong>↩️ 다른 오류라면</strong> <a href="#quick">증상별 빠른 찾기</a> 표에서 비슷한 줄을 찾아보세요.</p></blockquote><p><a id="s6"></a></p><h2 id="6-Browser-key에-도메인은-어떻게-추가하나요"><a href="#6-Browser-key에-도메인은-어떻게-추가하나요" class="headerlink" title="6. Browser key에 도메인은 어떻게 추가하나요?"></a>6. Browser key에 도메인은 어떻게 추가하나요?</h2><p><strong>목표</strong>: Browser key의 웹사이트 제한 목록에 내 도메인과 개발 주소를 넣고 저장해요.</p><p>이 목록에 없는 주소에서 오는 요청은 전부 403으로 막혀요.</p><ol><li>Credentials 화면에서 <strong>Browser key (auto created by Firebase)</strong> 이름을 눌러요.</li><li><strong>Application restrictions</strong>가 <strong>Websites</strong>로 되어 있는지 봅니다.</li><li><strong>Website restrictions</strong>에서 <strong>원래 있던 항목은 지우지 말고 새 주소만 추가</strong>하세요. <strong>Add</strong>를 눌러 아래 주소를 넣어요.<ul><li>내 도메인: <code>bluel.moonlang.com</code>과 <code>bluel.moonlang.com/*</code> 두 줄 (Google Cloud 문서가 한 도메인의 모든 주소를 허용할 때 권하는 형태예요. 제 스크린샷에는 당시 넣은 <code>https://bluel.moonlang.com/*</code> 한 줄이 보여요.)</li><li><code>http://localhost:5173/*</code> (Vite 개발 서버)</li></ul></li><li>Firebase Auth 로그인 팝업이나 리디렉션을 쓰면 authDomain(기본값 <code>내-프로젝트-id.firebaseapp.com/*</code>)을, Firebase Hosting 기본 주소를 쓰면 <code>내-프로젝트-id.web.app/*</code>도 목록에 남겨 두세요. Firebase 문서에 따르면 authDomain에는 로그인 도우미 코드가 올라가 있어요.</li><li>아래 <strong>API restrictions</strong>는 건드리지 않고 그대로 둔 채 <strong>Save</strong>를 누릅니다.</li><li>화면 안내대로 반영까지 최대 5분쯤 걸릴 수 있어요. 잠깐 기다려요.</li></ol><p>참고로 Google Cloud 문서는 웹사이트 제한에서 와일드카드(<code>*</code>)를 하위 도메인이나 경로 자리에만 쓸 수 있고 주소 중간에는 쓸 수 없다고 설명해요.</p><blockquote><p><strong>사이트를 새 도메인으로 옮겼고 구글 로그인을 쓴다면</strong></p><p>Firebase 콘솔 <strong>Authentication → 설정 → 승인된 도메인</strong>에도 새 도메인을 추가하세요. Browser key 웹사이트 목록과는 별개의 설정이에요.</p></blockquote><p><a id="s6-api"></a></p><h3 id="API-제한-목록-할-것과-하지-말-것"><a href="#API-제한-목록-할-것과-하지-말-것" class="headerlink" title="API 제한 목록: 할 것과 하지 말 것"></a>API 제한 목록: 할 것과 하지 말 것</h3><p>같은 키 화면 아래쪽 <strong>API restrictions</strong>는 이번 문제에서는 건드리지 않아요. 나중에 정리하더라도 아래를 지키세요.</p><ul><li><strong>빼지 말 것</strong>: Firebase 문서의 필수 API 표에 따르면 Authentication에는 <strong>Identity Toolkit API</strong>와 <strong>Token Service API</strong>, App Check에는 <strong>Firebase App Check API</strong>가 필요해요. 이런 항목을 빼면 로그인과 App Check가 깨질 수 있어요.</li><li><strong>들어 있으면 안 되는 것</strong>: Firebase 문서는 Browser key의 API 제한 목록에 <strong>Generative Language API</strong>가 있으면 안 된다고 안내해요.</li><li>콘솔에 <code>API_KEY_SERVICE_BLOCKED</code> 403이 보이면, 문서 안내대로 필요한 API가 모두 목록에 있는지 확인하세요.</li></ul><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/06-browser-key-add-website.png" alt="Browser key의 Application restrictions에서 Websites를 고르고 Add website 입력칸을 연 화면"></p><p><em>Add를 누르면 주소 입력칸이 열려요. 한 줄에 주소 하나씩 넣고 Done.</em></p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/06-browser-key-websites-saved.png" alt="Browser key 웹사이트 제한 목록에 http:&#x2F;&#x2F;localhost:5173&#x2F;* 와 https:&#x2F;&#x2F;bluel.moonlang.com&#x2F;* 두 줄이 들어가고 Save 버튼과 최대 5분 안내가 보이는 화면. 프로젝트 이름은 가림 처리"></p><p><em>화면에서 볼 곳: Websites 선택 → Add와 두 주소 → 아래 Save → “최대 5분” 안내. (프로젝트 이름은 가렸어요.)</em></p><p><a id="s6-wrong-key"></a></p><h3 id="흔한-실수-다른-키를-고치기"><a href="#흔한-실수-다른-키를-고치기" class="headerlink" title="흔한 실수: 다른 키를 고치기"></a>흔한 실수: 다른 키를 고치기</h3><p>Credentials에는 <strong>Gemini Developer API key (auto created by Firebase)</strong> 같은 다른 키도 있어요. 이름이 비슷해서 이 키를 고치기 쉬운데, 사이트가 막힌 건 이 키 때문이 아니에요.</p><ul><li><strong>Browser key (auto created by Firebase)</strong>: 웹사이트가 쓰는 키. 여기에 도메인 추가</li><li><strong>Gemini Developer API key (auto created by Firebase)</strong>: 예전에 AI Logic용으로 자동 생성된 키예요. 2026년 중반부터 AI Logic은 이 키를 쓰지 않아요. <strong>앱 코드나 .env에 절대 넣지 마세요.</strong> 이번 문제와는 상관없어요.</li></ul><blockquote><p><strong>틀리면 이렇게 보여요: 다른 키를 고치는 중</strong></p><p>제 경우에는 저장하려는데 “API 제한이 제거됩니다” 같은 경고와 함께 <strong>UPDATE</strong>를 직접 입력하라고 했을 때, 잘못된 키를 고치고 있었어요. 취소하고 화면 맨 위의 키 이름이 <strong>Browser key</strong>인지 다시 확인하세요.</p></blockquote><blockquote><p><strong>틀리면 이렇게 보여요: 주소 모양이 다름</strong></p><p>저장하고 5분이 지나도 같은 403이 난다면, 넣은 주소를 다시 보세요. <code>https</code>와 <code>http</code>가 바뀌었거나, 끝의 <code>/*</code>가 빠졌거나, 도메인 철자가 다르면 목록과 맞지 않아 계속 막힐 수 있어요.</p></blockquote><blockquote><p><strong>어떤 키인지 확인하는 법</strong></p><p>내 앱 코드의 <code>firebaseConfig.apiKey</code> 앞 몇 글자와 Credentials의 <strong>Show key</strong>로 본 앞부분을 비교하면 확실해요. 다만 키 전체를 채팅이나 스크린샷으로 공유하지는 마세요.</p></blockquote><blockquote><p><strong>✅ 이렇게 보이면 성공</strong> 목록에 두 주소가 들어가고 Save 뒤 5분 안내가 보여요. <a href="#s7">7단계</a>로 확인하러 가요.</p><p><strong>↩️ 아니면</strong> UPDATE 입력을 요구하면 다른 키예요. 그대로면 <a href="#faq-still">자주 막히는 곳: 도메인을 추가했는데도 그대로예요</a>를 보세요.</p></blockquote><p><a id="s7"></a></p><h2 id="7-확인하기"><a href="#7-확인하기" class="headerlink" title="7. 확인하기"></a>7. 확인하기</h2><p><strong>목표</strong>: 로그아웃 상태에서도 사이트가 정상으로 보이는지 눈으로 확인해요.</p><p>로그인한 상태로 보면 막힌 걸 놓칠 수 있어요. 처음 온 방문자 입장에서 봐야 해요.</p><ol><li><strong>로그아웃</strong>한 상태에서 사이트를 엽니다. (시크릿 창을 쓰면 편해요.)</li><li>새로고침한 뒤 공개 강의 목록이 보이는지 확인해요.</li><li>강의 하나를 눌러서 커리큘럼이 나오는지 봅니다.</li><li>F12 → Console에 403이나 <code>API_KEY_HTTP_REFERRER_BLOCKED</code>가 더 이상 없는지 확인해요.</li></ol><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/07-site-fixed-home.png" alt="고친 뒤 홈 화면. 로그아웃 상태에서도 공개 강의 카드 목록이 보이는 화면"></p><p><em>고친 뒤: 로그아웃 상태에서도 공개 강의 목록이 보여요.</em></p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/07-site-fixed-course.png" alt="고친 뒤 강의 페이지. Google Labs 시작하기 강의의 커리큘럼이 정상으로 보이는 화면"></p><p><em>고친 뒤: 강의 페이지에 커리큘럼이 정상으로 나와요.</em></p><blockquote><p><strong>✅ 이렇게 보이면 성공</strong> 공개 강의 목록과 커리큘럼이 보이고, Console에 403이 없어요.</p><p><strong>↩️ 아니면</strong> 5분 더 기다린 뒤 강력 새로고침. 그래도 같으면 <a href="#s6">6단계</a>의 “틀리면 이렇게 보여요”를 다시 보세요.</p></blockquote><p><a id="s8"></a></p><h2 id="8-AI-Logic-“deactivated”-오류는-어떻게-고치나요"><a href="#8-AI-Logic-“deactivated”-오류는-어떻게-고치나요" class="headerlink" title="8. AI Logic “deactivated” 오류는 어떻게 고치나요?"></a>8. AI Logic “deactivated” 오류는 어떻게 고치나요?</h2><p><strong>목표</strong>: AI Logic의 App Check를 “기본 - 적용됨 &#x2F; 재생 - 모니터링”으로 저장해요.</p><p>사이트는 살아났는데, 이번엔 AI로 강의를 만드는 기능이 이런 오류를 냈어요(실제로 본 오류 문구의 일부).</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Firebase AI Logic has been deactivated ... you must enforce Firebase App Check</span><br></pre></td></tr></table></figure><p>Firebase 공식 문서에 따르면 <strong>2026년 11월 2일부터 Firebase AI Logic을 쓰려면 App Check 적용(Enforce)이 필수</strong>이고, 그날부터는 자동으로 적용되며 끌 수 없어요. 콘솔 배너에도 같은 날짜가 나와요. 우리 앱은 “등록됨(적용되지 않음)” 상태였습니다. (공식 문서는 2026년 7월 초 이후 콘솔에서 AI Logic을 새로 설정하면 App Check가 자동으로 적용된다고 설명해요. 그 전에 설정한 프로젝트라면 직접 적용해야 합니다.)</p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/08-ailogic-not-enforced.png" alt="Firebase AI Logic 모든 앱 화면. 2026년 11월 2일부터 앱 체크 시행 필수 배너와 웹 앱의 앱 체크 상태 등록됨(적용되지 않음). 프로젝트 이름은 가림 처리"></p><p><em>AI Logic 화면의 노란 배너와 “등록됨(적용되지 않음)” 표시. (프로젝트 이름은 가렸어요.)</em></p><p>메트릭을 보면 요청 100%가 “확인되지 않음: 오래된 클라이언트 요청”이었고 상태는 “기본 - 모니터링”이었어요. 공식 문서에서 “오래된 클라이언트 요청”은 App Check 토큰이 빠진 요청을 뜻해요.</p><blockquote><p><strong>먼저 확인: 앱이 토큰을 붙이고 있나요?</strong></p><p>메트릭에 ‘오래된 클라이언트 요청 100%’로 나오면 앱이 아직 토큰을 붙이지 않는 상태라서, 적용하면 AI 요청은 계속 막혀요. 4단계 코드가 들어간 버전을 먼저 배포하세요. 2026년 11월 2일부터는 자동으로 적용되고 <strong>끌 수 없어요.</strong></p></blockquote><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/08-ailogic-metrics-outdated.png" alt="App Check API 탭의 Firebase AI Logic 메트릭. 확인된 요청 0, 오래된 클라이언트 요청 100%, 상태 기본 - 모니터링"></p><p><em>적용 전: 확인된 요청 0, 오래된 클라이언트 요청 100%.</em></p><h3 id="설정-순서"><a href="#설정-순서" class="headerlink" title="설정 순서"></a>설정 순서</h3><ol><li>Firebase 콘솔 <strong>보안(Security) → App Check → API</strong> 탭에서 <strong>Firebase AI Logic</strong> 줄의 설정 메뉴(점 3개 ⋮ 또는 그래프 아래 설정 버튼)를 엽니다.</li><li><strong>1단계 기준 보호</strong>: “적용되지 않음(모니터링만)”과 “적용됨” 중 <strong>적용됨</strong>을 고르고 계속.</li><li><strong>2단계 재생 보호</strong>: <strong>모니터링만</strong>을 고르고 계속.</li><li><strong>3단계 확인</strong>에서 저장합니다.</li></ol><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/08-step1-baseline-enforced.png" alt="AI Logic에 대한 앱 체크 설정 1단계 기준 보호에서 적용됨을 고른 화면"></p><p><em>1단계 기준 보호 “적용됨”: 유효한 App Check 토큰이 없는 요청은 막혀요. 고른 뒤 계속.</em></p><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/08-step2-replay-monitor.png" alt="AI Logic에 대한 앱 체크 설정 2단계 재생 보호에서 모니터링만을 고른 화면"></p><p><em>2단계 재생 보호 “모니터링만”. 고른 뒤 계속, 그다음 확인 화면에서 저장.</em></p><blockquote><p><strong>재생 보호는 “적용됨”을 고르지 마세요 (지금은)</strong></p><p>재생 보호를 “적용됨”으로 하면 요청마다 새로 발급한 한 번용(limited-use) 토큰만 통과해요. 앱 코드에서 limited-use 토큰 사용을 켜 두지 않았다면 내 앱 요청까지 막혀요. 공식 AI Logic 안내는 limited-use 토큰을 켜기 전까지 재생 보호를 “중지됨”으로 두라고 하고, 콘솔 화면은 “모니터링만”도 고를 수 있게 해 줘요. 저는 차단될 요청을 미리 보려고 “모니터링만”을 골랐어요.</p></blockquote><p><a id="s8-replay"></a></p><blockquote><p><strong>틀리면 이렇게 보여요: 재생 보호까지 적용함</strong></p><p>저장 뒤 AI 요청이 전부 막힌다면 재생 보호를 “적용됨”으로 저장했을 가능성이 커요. 같은 메뉴로 들어가 재생 보호를 <strong>모니터링만</strong>(또는 중지됨)으로 되돌리세요.</p></blockquote><p><img src="/images/firebase-appcheck-recaptcha-api-key-ai-logic-fix/08-result-enforced-monitor.png" alt="저장 후 Firebase AI Logic 상태가 기본 - 적용됨, 재생 - 모니터링으로 표시된 화면"></p><p><em>저장 후: “기본 - 적용됨 &#x2F; 재생 - 모니터링”.</em></p><p><a id="s8-after"></a></p><h3 id="저장한-뒤에"><a href="#저장한-뒤에" class="headerlink" title="저장한 뒤에"></a>저장한 뒤에</h3><ul><li>공식 문서 기준으로 적용이 반영되기까지 <strong>최대 15분</strong>이 걸릴 수 있어요. 조금 기다립니다.</li><li>사이트에서 <strong>강력 새로고침</strong>(Windows <code>Ctrl+Shift+R</code>, Mac <code>Cmd+Shift+R</code>)을 해서 옛 코드 캐시를 비워요.</li><li>반영된 뒤에 AI 생성을 <strong>다시 시도</strong>해 보세요.</li><li>App Check 메트릭에서 <strong>확인된 요청</strong>이 늘어나면 정상 신호예요.</li><li>계속 <strong>오래된 클라이언트 요청</strong>만 쌓인다면, 브라우저가 옛 번들을 쓰고 있거나 배포된 코드가 아직 출입증을 붙이지 않는 거예요. 4단계 코드가 들어간 버전으로 다시 빌드·배포됐는지 확인하세요.</li></ul><blockquote><p><strong>솔직한 현재 상태</strong></p><p>이 글을 쓰는 시점에는 적용 설정을 저장한 직후라, AI 생성이 다시 되는 것까지는 아직 확인하지 못했어요. 반영될 때까지 기다린 뒤 다시 시도해서 메트릭과 함께 확인해 주세요.</p></blockquote><blockquote><p><strong>✅ 이렇게 보이면 설정 완료</strong> AI Logic 상태가 “기본 - 적용됨 &#x2F; 재생 - 모니터링”이에요. 반영된 뒤 AI 생성을 다시 시도하고, 확인된 요청이 늘어나는지 보세요.</p><p><strong>↩️ 아니면</strong> AI 요청이 전부 막히면 위 “재생 보호까지 적용함”을, 오래된 요청만 쌓이면 <a href="#s4">4단계</a> 재빌드·재배포를 보세요.</p></blockquote><p><a id="s9"></a></p><h2 id="9-적용-뒤-localhost-개발은-어떻게-하나요-주의할-점"><a href="#9-적용-뒤-localhost-개발은-어떻게-하나요-주의할-점" class="headerlink" title="9. 적용 뒤 localhost 개발은 어떻게 하나요? (주의할 점)"></a>9. 적용 뒤 localhost 개발은 어떻게 하나요? (주의할 점)</h2><p><strong>목표</strong>: 적용 뒤에 생기기 쉬운 문제 3가지를 미리 알고 대비해요.</p><p>적용은 “출입증 없으면 막기”라서, 내 개발 환경이나 직접 부르는 백엔드도 막힐 수 있어요.</p><p><a id="s9-debug"></a></p><h3 id="1-내-컴퓨터-localhost-개발은-디버그-토큰이-필요해요"><a href="#1-내-컴퓨터-localhost-개발은-디버그-토큰이-필요해요" class="headerlink" title="1. 내 컴퓨터(localhost) 개발은 디버그 토큰이 필요해요"></a>1. 내 컴퓨터(localhost) 개발은 디버그 토큰이 필요해요</h3><p>공식 문서에 따르면 App Check를 적용한 서비스는 localhost나 CI 환경에서 돌리는 앱을 유효한 기기로 인정하지 않아요. 이럴 땐 <strong>디버그 제공자(디버그 토큰)</strong>를 써요.</p><ol><li>개발용 빌드에서만, App Check를 초기화하기 <strong>전에</strong> 디버그 모드를 켭니다.</li><li>로컬에서 앱을 열고 브라우저 개발자도구 콘솔에 출력된 디버그 토큰을 복사해요.</li><li>Firebase 콘솔 <strong>보안 → App Check → 앱</strong> 탭에서 내 앱의 ⋮ 메뉴 → <strong>디버그 토큰 관리</strong>에 그 토큰을 등록해요.</li><li>이제 localhost에서도 통과해요.</li></ol><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 개발용 빌드에서만! 배포용 코드에는 절대 넣지 마세요</span></span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">import</span>.<span class="property">meta</span>.<span class="property">env</span>.<span class="property">DEV</span>) &#123;</span><br><span class="line">  <span class="comment">// TypeScript에서 타입 오류가 나지 않도록 any로 씁니다</span></span><br><span class="line">  (self <span class="keyword">as</span> <span class="built_in">any</span>).<span class="property">FIREBASE_APPCHECK_DEBUG_TOKEN</span> = <span class="literal">true</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">// 그다음 initializeAppCheck(...)</span></span><br></pre></td></tr></table></figure><blockquote><p><strong>디버그 토큰은 비밀번호처럼</strong></p><p>디버그 토큰이 있으면 검증되지 않은 기기에서도 백엔드에 접근할 수 있어요. 공개 저장소에 커밋하지 말고, 배포용 빌드에 디버그 모드가 켜지지 않게 하세요. 토큰이 유출되면 콘솔에서 바로 삭제하세요.</p></blockquote><h3 id="2-Firestore와-Authentication-적용은-메트릭을-보고"><a href="#2-Firestore와-Authentication-적용은-메트릭을-보고" class="headerlink" title="2. Firestore와 Authentication 적용은 메트릭을 보고"></a>2. Firestore와 Authentication 적용은 메트릭을 보고</h3><p>AI Logic은 필수라서 먼저 켰지만, 이미 사용자가 있는 앱이라면 Firestore와 Authentication은 서두르지 않아도 돼요. 공식 문서는 API 탭 메트릭에서 <strong>최근 요청이 거의 모두 확인된 요청</strong>일 때 적용을 고려하고, 오래된 클라이언트 요청이 많으면 사용자들이 업데이트할 때까지 기다리라고 안내해요. 저는 하루쯤 지켜본 뒤 켜는 편을 권해요. 확인 안 된 요청이 많은데 켜면 실제 사용자가 막혀요.</p><p><a id="s9-fetch"></a></p><h3 id="3-내-함수·백엔드를-fetch로-직접-부른다면"><a href="#3-내-함수·백엔드를-fetch로-직접-부른다면" class="headerlink" title="3. 내 함수·백엔드를 fetch로 직접 부른다면"></a>3. 내 함수·백엔드를 fetch로 직접 부른다면</h3><p>공식 문서에 따르면 Cloud Functions 클라이언트 SDK로 호출 가능 함수(<code>httpsCallable</code>)를 부르면 App Check 토큰이 자동으로 붙어요. 하지만 <code>fetch</code>로 내 백엔드 주소를 직접 부른다면 토큰을 직접 받아서 <code>X-Firebase-AppCheck</code> 헤더에 넣어야 해요. 토큰은 URL이나 쿼리 문자열에 넣지 말라고 문서가 강조해요.</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> &#123; getToken &#125; <span class="keyword">from</span> <span class="string">&quot;firebase/app-check&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> &#123; token &#125; = <span class="keyword">await</span> <span class="title function_">getToken</span>(appCheck, <span class="comment">/* forceRefresh */</span> <span class="literal">false</span>);</span><br><span class="line"><span class="keyword">await</span> <span class="title function_">fetch</span>(<span class="variable constant_">FUNCTION_URL</span>, &#123;</span><br><span class="line">  <span class="attr">method</span>: <span class="string">&quot;POST&quot;</span>,</span><br><span class="line">  <span class="attr">headers</span>: &#123; <span class="string">&quot;Content-Type&quot;</span>: <span class="string">&quot;application/json&quot;</span>, <span class="string">&quot;X-Firebase-AppCheck&quot;</span>: token &#125;,</span><br><span class="line">  <span class="attr">body</span>: <span class="title class_">JSON</span>.<span class="title function_">stringify</span>(data),</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>이때 받는 쪽(내 백엔드)도 이 헤더의 토큰을 검증하도록 만들어 둬야 실제 보호가 돼요. 방법은 아래 공식 문서의 “커스텀 백엔드에서 토큰 확인”을 참고하세요.</p><blockquote><p><strong>✅ 준비됐다면</strong> 디버그 토큰 등록 방법을 알고, Firestore·Authentication은 메트릭을 본 뒤 켜기로 했어요.</p><p><strong>↩️ 막혔다면</strong> localhost는 1번, fetch로 부른 백엔드가 거부하면 3번을 다시 보세요.</p></blockquote><p><a id="s10"></a></p><h2 id="10-체크리스트-자주-막히는-곳"><a href="#10-체크리스트-자주-막히는-곳" class="headerlink" title="10. 체크리스트, 자주 막히는 곳"></a>10. 체크리스트, 자주 막히는 곳</h2><h3 id="체크리스트"><a href="#체크리스트" class="headerlink" title="체크리스트"></a>체크리스트</h3><ul><li><input disabled="" type="checkbox"> reCAPTCHA Enterprise 웹 키를 만들고 실제 서비스 도메인(내 도메인, 쓰고 있다면 .web.app·.firebaseapp.com)을 넣었다 (localhost는 넣지 않음)</li><li><input disabled="" type="checkbox"> App Check 앱 탭에서 웹 앱을 reCAPTCHA Enterprise로 등록했다 (TTL 기본 1시간)</li><li><input disabled="" type="checkbox"> 코드에 <code>initializeAppCheck</code>를 넣고 <code>VITE_RECAPTCHA_SITE_KEY</code>를 .env.local과 CI Secret에 넣었다</li><li><input disabled="" type="checkbox"> 다시 빌드하고 배포했다</li><li><input disabled="" type="checkbox"> Credentials의 <strong>Browser key</strong>에서 원래 항목은 지우지 않고, 내 도메인(<code>내도메인</code>, <code>내도메인/*</code>)과 <code>http://localhost:5173/*</code>를 추가했다</li><li><input disabled="" type="checkbox"> 구글 로그인을 쓰면 authDomain(<code>내-프로젝트-id.firebaseapp.com/*</code>), 기본 호스팅을 쓰면 <code>내-프로젝트-id.web.app/*</code>가 목록에 남아 있다</li><li><input disabled="" type="checkbox"> 새 도메인으로 옮겼다면 Authentication 승인된 도메인에도 추가했다</li><li><input disabled="" type="checkbox"> Browser key의 API 제한 목록에서 필요한 API를 빼지 않았고, Generative Language API는 들어 있지 않다</li><li><input disabled="" type="checkbox"> 로그아웃 상태에서 공개 강의가 보이고, 콘솔에 403이 없다</li><li><input disabled="" type="checkbox"> AI Logic: 기준 보호 “적용됨”, 재생 보호 “모니터링만”으로 저장했다</li><li><input disabled="" type="checkbox"> 15분쯤 뒤 강력 새로고침하고 AI 생성을 다시 시도했다</li><li><input disabled="" type="checkbox"> 메트릭에서 확인된 요청이 늘어나는지 봤다</li></ul><h3 id="자주-막히는-곳"><a href="#자주-막히는-곳" class="headerlink" title="자주 막히는 곳"></a>자주 막히는 곳</h3><p><a id="faq-403"></a></p><h4 id="Q-403이-났는데-App-Check를-끄면-되나요"><a href="#Q-403이-났는데-App-Check를-끄면-되나요" class="headerlink" title="Q. 403이 났는데 App Check를 끄면 되나요?"></a>Q. 403이 났는데 App Check를 끄면 되나요?</h4><p><code>API_KEY_HTTP_REFERRER_BLOCKED</code>라면 App Check와는 상관없어요. Browser key 웹사이트 목록에 도메인을 추가하세요. <a href="#s6">6단계</a></p><p><a id="faq-v3"></a></p><h4 id="Q-reCAPTCHA-v3와-Enterprise-중-뭘-써야-하나요"><a href="#Q-reCAPTCHA-v3와-Enterprise-중-뭘-써야-하나요" class="headerlink" title="Q. reCAPTCHA v3와 Enterprise 중 뭘 써야 하나요?"></a>Q. reCAPTCHA v3와 Enterprise 중 뭘 써야 하나요?</h4><p>새로 붙인다면 Enterprise예요(공식 권장).</p><p><a id="faq-localhost"></a></p><h4 id="Q-localhost를-reCAPTCHA-키에-넣어도-되나요"><a href="#Q-localhost를-reCAPTCHA-키에-넣어도-되나요" class="headerlink" title="Q. localhost를 reCAPTCHA 키에 넣어도 되나요?"></a>Q. localhost를 reCAPTCHA 키에 넣어도 되나요?</h4><p>안 돼요. 디버그 토큰을 쓰세요. <a href="#s9-debug">9단계 1번</a></p><p><a id="faq-key"></a></p><h4 id="Q-코드에-API-키가-보여도-괜찮나요"><a href="#Q-코드에-API-키가-보여도-괜찮나요" class="headerlink" title="Q. 코드에 API 키가 보여도 괜찮나요?"></a>Q. 코드에 API 키가 보여도 괜찮나요?</h4><p>Firebase용으로 제한된 Browser key라면 괜찮아요. Gemini 키, 비밀 키, 서비스 계정 파일은 절대 코드에 넣으면 안 돼요.</p><p><a id="faq-nov2"></a></p><h4 id="Q-11월-2일-이후-AI-Logic은-어떻게-되나요"><a href="#Q-11월-2일-이후-AI-Logic은-어떻게-되나요" class="headerlink" title="Q. 11월 2일 이후 AI Logic은 어떻게 되나요?"></a>Q. 11월 2일 이후 AI Logic은 어떻게 되나요?</h4><p>App Check가 자동으로 적용되고 끌 수 없어요.</p><p><a id="faq-still"></a></p><h4 id="Q-도메인을-추가했는데도-그대로예요"><a href="#Q-도메인을-추가했는데도-그대로예요" class="headerlink" title="Q. 도메인을 추가했는데도 그대로예요."></a>Q. 도메인을 추가했는데도 그대로예요.</h4><p>5분쯤 기다린 뒤 강력 새로고침을 해 보세요. 그래도 안 되면 주소 모양(<code>/*</code>, <code>https</code>와 <code>http</code> 구분), 그리고 고친 키가 정말 Browser key인지 다시 확인하세요. <a href="#s6-wrong-key">6단계 흔한 실수</a></p><p><a id="faq-replay"></a></p><h4 id="Q-재생-보호도-적용하는-게-더-안전하지-않나요"><a href="#Q-재생-보호도-적용하는-게-더-안전하지-않나요" class="headerlink" title="Q. 재생 보호도 적용하는 게 더 안전하지 않나요?"></a>Q. 재생 보호도 적용하는 게 더 안전하지 않나요?</h4><p>보호 수준은 더 높지만, 앱 코드에서 limited-use 토큰을 쓰도록 바꾼 뒤에 켜야 해요. 준비 없이 켜면 내 앱도 막혀요. 공식 문서는 요청마다 새 토큰을 만들어서 지연 시간과 비용이 늘 수 있다는 점도 알려 줘요. <a href="#s8-replay">8단계</a></p><blockquote><p><strong>이것만 기억하세요</strong></p><ul><li>403 <code>API_KEY_HTTP_REFERRER_BLOCKED</code>는 App Check가 아니라 <strong>Browser key 웹사이트 제한 목록</strong> 문제예요.</li><li>App Check는 끄지 말고 <strong>키 → 등록 → 코드 → 다시 빌드·배포</strong> 순서로 붙여요.</li><li>AI Logic은 <strong>기준 보호만 적용</strong>, 재생 보호는 limited-use 토큰 준비 전까지 <strong>모니터링만(또는 중지됨)</strong>. 반영된 뒤 다시 시도해요.</li></ul></blockquote><p>확인 날짜: 2026-09-29. 스크린샷은 실제 작업 화면이며, 개인정보(프로젝트 이름, 계정 이메일, 클라이언트 ID 등)는 가림 처리했어요. 콘솔 메뉴 이름과 배치는 Google이 바꿀 수 있으니, 화면이 조금 달라도 같은 이름의 메뉴를 찾아 주세요.</p><p><a id="sources"></a></p><h2 id="공식-문서"><a href="#공식-문서" class="headerlink" title="공식 문서"></a>공식 문서</h2><ul><li><a href="https://firebase.google.com/docs/app-check/web/recaptcha-enterprise-provider">Firebase: 웹 앱에서 reCAPTCHA Enterprise로 App Check 시작하기</a></li><li><a href="https://firebase.google.com/docs/app-check/web/debug-provider">Firebase: 웹 앱에서 App Check 디버그 제공자 사용하기</a></li><li><a href="https://firebase.google.com/docs/app-check/monitor-metrics">Firebase: App Check 요청 메트릭 모니터링</a></li><li><a href="https://firebase.google.com/docs/app-check/enable-enforcement">Firebase: App Check 적용 사용 설정(재생 보호 포함)</a></li><li><a href="https://firebase.google.com/docs/ai-logic/app-check">Firebase: Firebase AI Logic과 App Check</a></li><li><a href="https://firebase.google.com/docs/app-check/web/custom-resource">Firebase: 커스텀 백엔드 요청에 App Check 토큰 보내기(웹)</a></li><li><a href="https://firebase.google.com/docs/app-check/custom-resource-backend">Firebase: 커스텀 백엔드에서 App Check 토큰 확인</a></li><li><a href="https://firebase.google.com/docs/app-check/cloud-functions">Firebase: Cloud Functions 호출 가능 함수에 App Check 적용</a></li><li><a href="https://firebase.google.com/docs/projects/api-keys">Firebase: Firebase API 키 사용 및 관리</a></li><li><a href="https://docs.cloud.google.com/docs/authentication/api-keys">Google Cloud: API 키 관리(웹사이트 제한)</a></li><li><a href="https://docs.cloud.google.com/recaptcha/docs/create-key-website">Google Cloud: 웹사이트용 reCAPTCHA 키 만들기(도메인 확인)</a></li><li><a href="https://firebase.google.com/docs/ai-logic/faq-and-troubleshooting">Firebase: AI Logic FAQ(11월 2일 적용, Gemini API 키 변경)</a></li><li><a href="https://firebase.google.com/docs/app-check">Firebase: App Check 개요(할당량과 비용)</a></li><li><a href="https://firebase.google.com/docs/app-check/web/recaptcha-provider">Firebase: reCAPTCHA v3 제공자(Enterprise 권장 안내)</a></li><li><a href="https://firebase.google.com/docs/auth/web/redirect-best-practices">Firebase: signInWithRedirect 권장사항(authDomain)</a></li><li><a href="https://firebase.google.com/docs/auth/web/google-signin">Firebase: 웹에서 Google 로그인(승인된 도메인)</a></li><li><a href="https://vite.dev/guide/env-and-mode">Vite: 환경변수와 모드</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/30/firebase-appcheck-recaptcha-api-key-ai-logic-fix/</id>
    <link href="https://devlog.moonlang.com/2026/09/30/firebase-appcheck-recaptcha-api-key-ai-logic-fix/"/>
    <published>2026-09-30T09:30:00.000Z</published>
    <summary>Firebase 사이트가 403(API_KEY_HTTP_REFERRER_BLOCKED)으로 막혔나요? Browser key 도메인 추가, reCAPTCHA Enterprise·App Check 등록, AI Logic 적용 순서를 실제 화면으로 정리했어요.</summary>
    <title>Firebase 사이트가 갑자기 막혔어요? 403·App Check·API 키 도메인 점검 순서</title>
    <updated>2026-09-30T09:28:01.621Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI Agent Lab" scheme="https://devlog.moonlang.com/categories/AI-Agent-Lab/"/>
    <category term="Codex" scheme="https://devlog.moonlang.com/tags/Codex/"/>
    <category term="Claude Code" scheme="https://devlog.moonlang.com/tags/Claude-Code/"/>
    <category term="AI 에이전트" scheme="https://devlog.moonlang.com/tags/AI-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8/"/>
    <category term="AGENTS.md" scheme="https://devlog.moonlang.com/tags/AGENTS-md/"/>
    <category term="Cursor" scheme="https://devlog.moonlang.com/tags/Cursor/"/>
    <category term="심링크" scheme="https://devlog.moonlang.com/tags/%EC%8B%AC%EB%A7%81%ED%81%AC/"/>
    <category term="git" scheme="https://devlog.moonlang.com/tags/git/"/>
    <content>
      <![CDATA[<p>네, 2026-09-30 기준 Claude Code(v2.1.277 이상)·Codex·Cursor는 모두 저장소 루트의 <code>AGENTS.md</code>를 직접 읽습니다. 단 Claude Code는 <code>CLAUDE.md</code>나 <code>CLAUDE.local.md</code>가 하나라도 있으면 기본값에서 <code>AGENTS.md</code>를 건너뛰므로, 그때만 <code>CLAUDE.md</code>를 심링크나 <code>@AGENTS.md</code> import로 이으면 됩니다. Windows 사용자가 있는 저장소라면 심링크 대신 import가 안전합니다.</p><p>처음에는 <code>CLAUDE.md</code>, <code>AGENTS.md</code>, <code>.cursor/rules/*.mdc</code>를 전부 심링크로 묶을 생각이었습니다. 문서를 다시 읽고 직접 돌려 보니 필요한 링크는 그보다 적었습니다. 이 글은 그 확인 기록입니다. 스킬 파일(<code>SKILL.md</code>)을 여러 도구에서 같이 쓰는 문제는 <a href="https://devlog.moonlang.com/2026/09/08/agent-skills-format-conversion/">SKILL.md 하나로 Codex·Claude·Antigravity·Grok에서 모두 쓸 수 있을까?</a>에서 따로 다뤘습니다.</p><blockquote><p><strong>기준일.</strong> 도구별 동작은 <strong>2026-09-30(KST) 기준</strong> 각 공식 문서와 소스 코드에서 확인했습니다. 문서에 없는 내용은 출처(포럼, GitHub PR)를 따로 밝혔습니다. 링크는 글 끝 <a href="#%EC%B6%9C%EC%B2%98">출처</a>에 모았습니다.</p></blockquote><h2 id="도구마다-어떤-규칙-파일을-읽나"><a href="#도구마다-어떤-규칙-파일을-읽나" class="headerlink" title="도구마다 어떤 규칙 파일을 읽나?"></a>도구마다 어떤 규칙 파일을 읽나?</h2><h3 id="Claude-Code-CLAUDE-md-그리고-이제는-AGENTS-md도"><a href="#Claude-Code-CLAUDE-md-그리고-이제는-AGENTS-md도" class="headerlink" title="Claude Code: CLAUDE.md, 그리고 이제는 AGENTS.md도"></a>Claude Code: <code>CLAUDE.md</code>, 그리고 이제는 <code>AGENTS.md</code>도</h3><ul><li>프로젝트 규칙은 <code>./CLAUDE.md</code> 또는 <code>./.claude/CLAUDE.md</code>에 둡니다. 작업 디렉터리와 그 위 디렉터리의 파일을 모두 이어 붙여 읽습니다.</li><li>v2.1.277부터는 <code>AGENTS.md</code>를 직접 읽습니다. 다만 기본값에서는 <strong>작업 디렉터리나 그 위에 <code>CLAUDE.md</code>·<code>.claude/CLAUDE.md</code>·<code>CLAUDE.local.md</code>가 하나도 없을 때만</strong> <code>AGENTS.md</code>를 읽습니다. 둘 다 있으면 <code>CLAUDE.md</code>만 읽습니다. <code>~/.claude/CLAUDE.md</code>와 <code>.claude/rules/</code>는 이 판정에 들어가지 않습니다.</li><li>개인용 <code>CLAUDE.local.md</code>를 하나 만들기만 해도 <code>AGENTS.md</code>를 읽지 않게 됩니다. 둘 다 읽게 하려면 <code>/config</code>에서 Project instructions를 <code>claude-md-and-agents-md</code>로 바꿉니다.</li><li>문서가 <code>AGENTS.md</code>를 못 읽는다고 적어 둔 세션도 있습니다. v2.1.277 이전 버전, 내장 <code>agents-md</code> 플러그인을 끈 경우, v2.1.276 이하에서 업그레이드한 직후 첫 세션(일부), 그리고 v2.1.281 이전의 Amazon Bedrock·텔레메트리를 끈 일부 세션입니다.</li><li>설정으로 읽힌 <code>AGENTS.md</code>는 <code>CLAUDE.md</code>와 다르게 동작하는 곳이 있습니다. <code>InstructionsLoaded</code> 훅이 발동하지 않고(<code>CLAUDE.md</code>가 import하거나 심링크한 <code>AGENTS.md</code>는 발동), <code>--add-dir</code>과 <code>CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD</code>로 추가한 디렉터리의 <code>AGENTS.md</code>는 읽지 않습니다.</li><li>문서가 직접 두 가지 연결 방법을 소개합니다. <code>CLAUDE.md</code> 안에 <code>@AGENTS.md</code> 한 줄을 넣는 import 방식과, <code>ln -s AGENTS.md CLAUDE.md</code> 심링크 방식입니다.</li><li>심링크를 쓸 때 문서가 적어 둔 제약이 두 가지 있습니다.<ul><li>Claude는 링크를 통해 <code>CLAUDE.md</code>를 읽지만, Edit·Write 도구는 심링크 너머로 쓰지 않고 원본(<code>AGENTS.md</code>)을 고치라고 안내합니다.</li><li>Windows에서 작업하는 사람이 있으면 import 방식을 쓰라고 합니다. 심링크를 만들려면 관리자 권한이나 개발자 모드가 필요하고, <code>core.symlinks</code>가 꺼진 클론에서는 <code>CLAUDE.md</code>가 한 줄짜리 텍스트 파일로 풀리기 때문입니다.</li></ul></li><li><code>.claude/rules/</code>도 심링크를 지원합니다. 단, 링크 대상이 작업 디렉터리 밖이면 외부 import처럼 취급해 승인 전까지 불러오지 않습니다. 네트워크 경로를 가리키는 링크는 따라가지 않습니다.</li></ul><h3 id="Codex-AGENTS-md가-기본"><a href="#Codex-AGENTS-md가-기본" class="headerlink" title="Codex: AGENTS.md가 기본"></a>Codex: <code>AGENTS.md</code>가 기본</h3><ul><li>전역은 Codex 홈 디렉터리(기본 <code>~/.codex</code>, <code>CODEX_HOME</code>으로 변경 가능)의 <code>AGENTS.override.md</code>, 없으면 <code>AGENTS.md</code>를 읽습니다. 이 단계에서는 비어 있지 않은 첫 파일 하나만 씁니다.</li><li>프로젝트는 루트(보통 Git 루트)부터 현재 디렉터리까지 내려가며 디렉터리마다 <code>AGENTS.override.md</code> → <code>AGENTS.md</code> → <code>project_doc_fallback_filenames</code>에 적은 이름 순으로 <strong>하나씩</strong> 찾습니다. 빈 파일은 건너뜁니다.</li><li>합친 크기가 <code>project_doc_max_bytes</code>(기본 32 KiB)에 닿으면 파일을 더 붙이지 않습니다.</li><li><code>CLAUDE.md</code>는 기본 탐색 대상이 아닙니다. 다른 파일 이름을 쓰고 싶으면 <code>~/.codex/config.toml</code>의 <code>project_doc_fallback_filenames</code>에 추가합니다.</li><li>심링크는 공식 가이드에는 나오지 않습니다. 대신 소스 코드(<code>codex-rs/core/src/agents_md.rs</code>)의 탐색 함수 주석에 “Symlinks are allowed.”라고 적혀 있고, 탐색 성능 PR(#29870)의 Symlinks 절에는 링크 대상이 일반 파일이면 읽고 깨진 링크는 없는 파일로 취급한다고 나옵니다.</li><li>같은 소스 파일에는 신뢰하지 않은(untrusted) 프로젝트로 표시된 경우 프로젝트의 <code>AGENTS.md</code>를 읽지 않는 분기가 있습니다. 공식 가이드가 아니라 소스 기준입니다.</li></ul><h3 id="Cursor-cursor-rules-mdc-또는-AGENTS-md"><a href="#Cursor-cursor-rules-mdc-또는-AGENTS-md" class="headerlink" title="Cursor: .cursor/rules/*.mdc 또는 AGENTS.md"></a>Cursor: <code>.cursor/rules/*.mdc</code> 또는 <code>AGENTS.md</code></h3><ul><li>프로젝트 규칙은 <code>.cursor/rules</code> 안의 <code>.mdc</code> 파일입니다. 문서는 확장자가 <code>.md</code>인 파일은 규칙 시스템이 무시한다고 명시합니다. frontmatter에 <code>description</code>, <code>globs</code>, <code>alwaysApply</code>를 적어 언제 적용할지 정하기 때문입니다.</li><li>같은 문서가 “plain markdown을 원하면 AGENTS.md를 쓰라”고 합니다. 루트와 하위 디렉터리의 <code>AGENTS.md</code>를 읽고, 하위 폴더의 파일이 더 구체적인 지시로 우선합니다.</li><li>프로젝트 루트의 <code>.cursorrules</code>는 공식 도움말 기준 legacy이고 deprecated 예정입니다.</li><li><code>.cursor/rules</code>의 심링크는 공식 문서에 설명이 없습니다. Cursor 커뮤니티 포럼에는 2025년 12월(2.2.x)에 심링크된 <code>.mdc</code>를 읽지 못한다는 버그 보고가 있었고, 2026년 2월 Cursor 스태프가 같은 스레드에 “2.5에서 고쳐졌다”고 답했습니다.</li><li>2026년 2월 말 스레드(2.5.25)에서는 심링크한 디렉터리 안 규칙이 안 잡힌다는 보고에 스태프가 Reload Window를 권했지만, 보고자는 다시 불러오거나 재시작해도 안 된다고 답했습니다. 결국 보고자가 찾은 원인은 그 폴더 이름(<code>generated/</code>)이 <code>.gitignore</code>에 걸려 있던 것이었습니다. 같은 보고에서 개별 <code>.mdc</code> 파일 심링크는 정상 동작했다고 합니다. 둘 다 공식 문서가 아니라 포럼 글이라는 점은 감안해야 합니다.</li></ul><h3 id="정리하면"><a href="#정리하면" class="headerlink" title="정리하면"></a>정리하면</h3><table><thead><tr><th>도구</th><th>기본으로 읽는 파일</th><th><code>AGENTS.md</code> 직접 읽기</th><th>심링크</th></tr></thead><tbody><tr><td>Claude Code</td><td><code>CLAUDE.md</code>, <code>.claude/CLAUDE.md</code>, <code>CLAUDE.local.md</code>, <code>.claude/rules/*.md</code></td><td>읽음(v2.1.277+, <code>CLAUDE.md</code>류가 없을 때)</td><td><code>CLAUDE.md</code> 심링크를 문서가 직접 안내. Windows는 import 권장</td></tr><tr><td>Codex</td><td><code>AGENTS.override.md</code>, <code>AGENTS.md</code></td><td>읽음(기본)</td><td>소스 주석상 허용</td></tr><tr><td>Cursor</td><td><code>.cursor/rules/*.mdc</code>(frontmatter 필요)</td><td>읽음</td><td>문서엔 없음. 포럼상 개별 파일 심링크는 2.5에서 수정</td></tr></tbody></table><h2 id="심링크는-언제-필요하고-git에는-어떻게-저장되나"><a href="#심링크는-언제-필요하고-git에는-어떻게-저장되나" class="headerlink" title="심링크는 언제 필요하고, git에는 어떻게 저장되나?"></a>심링크는 언제 필요하고, git에는 어떻게 저장되나?</h2><p><code>AGENTS.md</code> 공식 사이트도 기존 파일을 옮길 때 <code>mv AGENT.md AGENTS.md &amp;&amp; ln -s AGENTS.md AGENT.md</code>처럼 심링크로 하위 호환을 유지하라고 안내합니다. 심링크 자체는 흔한 방법입니다. 다만 위 표대로라면 <strong><code>AGENTS.md</code>만 두면 세 도구가 다 읽습니다.</strong> <code>CLAUDE.md</code> 링크가 필요한 경우는 이 정도입니다.</p><ul><li>문서가 <code>AGENTS.md</code>를 못 읽는다고 적은 Claude Code 세션(v2.1.277 이전, v2.1.281 이전의 Bedrock·텔레메트리 끈 세션, 업그레이드 직후 첫 세션 등)이 팀에 섞여 있을 때</li><li>팀원 중 누군가 <code>CLAUDE.local.md</code>를 쓰고 있을 때(이 파일이 있으면 기본값에서 <code>AGENTS.md</code>를 안 읽음)</li><li><code>InstructionsLoaded</code> 훅을 쓰거나 <code>--add-dir</code>로 다른 디렉터리 규칙을 불러올 때(설정으로 읽힌 <code>AGENTS.md</code>는 훅이 안 뜨고, 추가 디렉터리의 <code>AGENTS.md</code>는 안 읽힘)</li></ul><p>아래는 리눅스(git 2.47) 임시 디렉터리에서 원본 <code>AGENTS.md</code> 하나에 <code>CLAUDE.md</code>와 <code>.cursor/rules/core.mdc</code>를 심링크로 걸어 본 결과입니다. 출력은 실제로 나온 그대로입니다. 파일 시스템과 git 동작만 본 것이고, 각 도구가 실제로 파일을 읽는지는 이 데모에서 확인하지 않았습니다.</p><h3 id="만들기"><a href="#만들기" class="headerlink" title="만들기"></a>만들기</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p /tmp/rules-demo &amp;&amp; <span class="built_in">cd</span> /tmp/rules-demo</span><br><span class="line">git init -q -b main .</span><br><span class="line"></span><br><span class="line"><span class="built_in">cat</span> &gt; AGENTS.md &lt;&lt;<span class="string">&#x27;MD&#x27;</span></span><br><span class="line"><span class="comment"># 프로젝트 규칙</span></span><br><span class="line"></span><br><span class="line">- 패키지 매니저는 pnpm을 쓴다.</span><br><span class="line">- 커밋 전에 `pnpm lint &amp;&amp; pnpm <span class="built_in">test</span>`를 돌린다.</span><br><span class="line">- `dist/`는 생성물이므로 직접 고치지 않는다.</span><br><span class="line">MD</span><br><span class="line"></span><br><span class="line"><span class="built_in">ln</span> -s AGENTS.md CLAUDE.md</span><br><span class="line"><span class="built_in">mkdir</span> -p .cursor/rules</span><br><span class="line"><span class="built_in">ln</span> -s ../../AGENTS.md .cursor/rules/core.mdc</span><br></pre></td></tr></table></figure><p>링크 대상은 <strong>링크가 있는 위치 기준 상대 경로</strong>입니다. <code>.cursor/rules/core.mdc</code>에서 루트의 <code>AGENTS.md</code>까지는 두 단계 위라서 <code>../../AGENTS.md</code>가 됩니다.</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">$ tree -a -I .git</span><br><span class="line">.</span><br><span class="line">├── .cursor</span><br><span class="line">│   └── rules</span><br><span class="line">│       └── core.mdc -&gt; ../../AGENTS.md</span><br><span class="line">├── AGENTS.md</span><br><span class="line">└── CLAUDE.md -&gt; AGENTS.md</span><br><span class="line"></span><br><span class="line">3 directories, 3 files</span><br><span class="line"></span><br><span class="line">$ ls -la . .cursor/rules</span><br><span class="line">.:</span><br><span class="line">total 44</span><br><span class="line">drwxr-xr-x 4 box  box   4096 Sep 30 10:47 .</span><br><span class="line">drwxrwxrwt 1 root root 20480 Sep 30 10:47 ..</span><br><span class="line">drwxr-xr-x 3 box  box   4096 Sep 30 10:47 .cursor</span><br><span class="line">drwxr-xr-x 7 box  box   4096 Sep 30 10:47 .git</span><br><span class="line">-rw-r--r-- 1 box  box    179 Sep 30 10:47 AGENTS.md</span><br><span class="line">lrwxrwxrwx 1 box  box      9 Sep 30 10:47 CLAUDE.md -&gt; AGENTS.md</span><br><span class="line"></span><br><span class="line">.cursor/rules:</span><br><span class="line">total 8</span><br><span class="line">drwxr-xr-x 2 box box 4096 Sep 30 10:47 .</span><br><span class="line">drwxr-xr-x 3 box box 4096 Sep 30 10:47 ..</span><br><span class="line">lrwxrwxrwx 1 box box   15 Sep 30 10:47 core.mdc -&gt; ../../AGENTS.md</span><br><span class="line"></span><br><span class="line">$ readlink CLAUDE.md .cursor/rules/core.mdc</span><br><span class="line">AGENTS.md</span><br><span class="line">../../AGENTS.md</span><br></pre></td></tr></table></figure><h3 id="git은-심링크를-“링크”로-저장한다"><a href="#git은-심링크를-“링크”로-저장한다" class="headerlink" title="git은 심링크를 “링크”로 저장한다"></a>git은 심링크를 “링크”로 저장한다</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">$ git add -A</span><br><span class="line"></span><br><span class="line">$ git ls-files -s</span><br><span class="line">120000 b7e6491d3a0dda1d656cc3c4320f5c013cdbc02d 0.cursor/rules/core.mdc</span><br><span class="line">100644 f469d6a0a1be5a6ce9db905553c85667281bf894 0AGENTS.md</span><br><span class="line">120000 47dc3e3d863cfb5727b87d785d09abf9743c0a72 0CLAUDE.md</span><br><span class="line"></span><br><span class="line">$ git cat-file -p :CLAUDE.md</span><br><span class="line">AGENTS.md</span><br><span class="line">$ git commit -q -m init</span><br></pre></td></tr></table></figure><p>일반 파일은 모드 <code>100644</code>, 심링크는 <code>120000</code>으로 들어갑니다. 저장소에 담기는 건 원본 내용이 아니라 링크 대상 경로 문자열(<code>AGENTS.md</code>)입니다. 그래서 받는 쪽이 심링크를 풀어 주지 않으면 이 문자열이 그대로 파일이 됩니다.</p><p>커밋한 저장소를 <code>core.symlinks</code>를 끈 채로 클론해 Windows에서 생길 수 있는 상황을 흉내 내 봤습니다.</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ git clone -q -c core.symlinks=false /tmp/rules-demo /tmp/rules-demo-nosym</span><br><span class="line"></span><br><span class="line">$ ls -la /tmp/rules-demo-nosym/CLAUDE.md</span><br><span class="line">-rw-r--r-- 1 box box 9 Sep 30 10:47 /tmp/rules-demo-nosym/CLAUDE.md</span><br><span class="line"></span><br><span class="line">$ cat /tmp/rules-demo-nosym/CLAUDE.md</span><br><span class="line">AGENTS.md</span><br></pre></td></tr></table></figure><p>9바이트짜리 일반 파일이 생겼고, 내용은 <code>AGENTS.md</code> 한 단어입니다. git 문서의 <code>core.symlinks</code> 설명 그대로입니다. 이 값이 false면 심링크를 “링크 텍스트가 담긴 작은 일반 파일”로 체크아웃합니다. 기본값은 true지만 <code>git clone</code>·<code>git init</code>이 파일 시스템을 확인해 적절하면 false로 설정합니다. Claude Code 문서가 Windows 사용자가 있으면 import 방식을 권하는 이유가 여기에 있습니다. 이 상태의 <code>CLAUDE.md</code>는 규칙 대신 단어 하나만 담고 있으니까요.</p><h3 id="상대-경로로-걸어야-하는-이유"><a href="#상대-경로로-걸어야-하는-이유" class="headerlink" title="상대 경로로 걸어야 하는 이유"></a>상대 경로로 걸어야 하는 이유</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">$ mkdir -p /tmp/abs-demo &amp;&amp; cd /tmp/abs-demo</span><br><span class="line"></span><br><span class="line">$ echo &quot;# 규칙&quot; &gt; AGENTS.md</span><br><span class="line"></span><br><span class="line">$ ln -s AGENTS.md CLAUDE.md</span><br><span class="line"></span><br><span class="line">$ ln -s /tmp/abs-demo/AGENTS.md CLAUDE.abs.md</span><br><span class="line"></span><br><span class="line">$ mv /tmp/abs-demo /tmp/abs-demo-moved &amp;&amp; cd /tmp/abs-demo-moved</span><br><span class="line"></span><br><span class="line">$ head -n 1 CLAUDE.md</span><br><span class="line"># 규칙</span><br><span class="line"></span><br><span class="line">$ head -n 1 CLAUDE.abs.md</span><br><span class="line">head: cannot open &#x27;CLAUDE.abs.md&#x27; for reading: No such file or directory</span><br></pre></td></tr></table></figure><p>절대 경로 링크는 디렉터리를 옮기거나 다른 사람이 클론하면 바로 깨집니다. 저장소에 커밋하는 링크는 상대 경로로 겁니다.</p><h2 id="cursor-rules에-AGENTS-md를-심링크하면-안-되나"><a href="#cursor-rules에-AGENTS-md를-심링크하면-안-되나" class="headerlink" title=".cursor/rules에 AGENTS.md를 심링크하면 안 되나?"></a><code>.cursor/rules</code>에 AGENTS.md를 심링크하면 안 되나?</h2><p>링크는 잘 걸립니다. 문제는 내용입니다.</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ head -n 3 .cursor/rules/core.mdc</span><br><span class="line"># 프로젝트 규칙</span><br><span class="line"></span><br><span class="line">- 패키지 매니저는 pnpm을 쓴다.</span><br></pre></td></tr></table></figure><p><code>core.mdc</code>를 열면 <code>AGENTS.md</code> 본문이 그대로 나오고, frontmatter가 없습니다. Cursor 문서의 표에 따르면 <code>alwaysApply</code>가 false이고 <code>description</code>·<code>globs</code>가 모두 없으면 채팅에서 @멘션할 때만 규칙이 들어갑니다. frontmatter가 아예 없는 경우를 따로 적진 않았지만, 이대로면 이 링크는 자동으로 적용되지 않을 가능성이 큽니다. 그렇다고 <code>AGENTS.md</code> 맨 위에 <code>alwaysApply: true</code> 같은 frontmatter를 넣으면 Codex와 Claude Code가 그 줄까지 규칙 본문으로 읽을 수 있습니다.</p><p>Cursor는 <code>AGENTS.md</code>를 직접 읽으니 이 링크는 뺐습니다. 특정 경로에만 거는 Cursor 전용 규칙이 필요하면 그때 frontmatter를 갖춘 진짜 <code>.mdc</code> 파일을 따로 만듭니다.</p><h3 id="최종-구성"><a href="#최종-구성" class="headerlink" title="최종 구성"></a>최종 구성</h3><p>앞의 git 실험은 링크를 지우기 전 상태에서 했습니다. 실제로 남기는 구성은 <code>core.mdc</code> 링크를 지운 쪽입니다.</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">rm</span> .cursor/rules/core.mdc</span><br></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">.</span><br><span class="line">├── AGENTS.md                # 원본. Codex, Cursor, Claude Code(v2.1.277+)가 직접 읽음</span><br><span class="line">└── CLAUDE.md -&gt; AGENTS.md   # AGENTS.md를 못 읽는 Claude Code 세션용 (선택)</span><br></pre></td></tr></table></figure><p>Windows 사용자가 있는 저장소라면 <code>CLAUDE.md</code>를 심링크 대신 한 줄짜리 일반 파일로 둡니다.</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">@AGENTS.md</span><br></pre></td></tr></table></figure><p>로딩 확인은 이렇게 합니다.</p><ul><li>Claude Code: <code>AGENTS.md</code>가 직접 읽혔는지는 <code>/memory</code>에서 경로로 확인합니다(문서가 지정한 방법). 인터랙티브 세션을 시작할 때 <code>no CLAUDE.md found; AGENTS.md loaded: …</code> 같은 줄도 나옵니다. <code>CLAUDE.md</code> 심링크나 import를 쓴다면 <code>/context</code>의 Memory files 목록에 <code>CLAUDE.md</code>가 있는지 봅니다.</li><li>Codex: 문서에 나온 대로 저장소 루트에서 아래 명령을 실행합니다.</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">codex --ask-for-approval never <span class="string">&quot;Summarize the current instructions.&quot;</span></span><br></pre></td></tr></table></figure><h2 id="dot-agents-같은-도구를-써야-하나"><a href="#dot-agents-같은-도구를-써야-하나" class="headerlink" title="dot-agents 같은 도구를 써야 하나?"></a>dot-agents 같은 도구를 써야 하나?</h2><p>이 작업을 대신해 준다는 도구로 dot-agents(<a href="http://www.dot-agents.com/">www.dot-agents.com</a>, <code>github.com/dot-agents/dot-agents</code>)를 검토했습니다. 규칙·스킬·MCP 설정을 <code>~/.agents/</code>에 모아 두고 Cursor, Claude Code, Codex, OpenCode 프로젝트에 심링크로 뿌려 주는 무료 bash CLI이고, 라이선스는 MIT입니다. 설치는 하지 않고 저장소 코드만 읽었습니다. 커밋은 모두 dottybotdev 한 계정에서 나왔고, v0.1.9(2026-01-13) 직후 1월 중순 커밋을 마지막으로 2026-09-30 현재 약 8개월 반째 새 커밋이 없습니다. 사이트에는 tasks, history, snapshot, restore 같은 명령이 소개돼 있지만 “출시 후 제공” 항목으로 묶여 있고, 코드에 들어 있는 명령은 add, doctor, explain, hooks, init, remove, skills, status, sync 9개입니다. 직접 하기로 한 이유는 설정 파일 처리였습니다. <code>init</code>은 <code>~/.claude/settings.json</code>이 없을 때, 또는 <code>--force</code>를 주면 기존 파일이 있어도 그 자리를 심링크로 바꿉니다. <code>add</code>는 <code>~/.agents</code>에 해당 설정이 있으면 프로젝트의 <code>.mcp.json</code>과 <code>.codex/config.toml</code>을 <code>ln -sf</code>로 심링크로 바꿉니다. <code>hooks examples</code>가 보여 주는 예제(기본 설치는 아니고 <code>hooks add</code>로 직접 추가해야 함) 중에는 입력한 프롬프트를 <code>~/.claude/prompts.log</code>에, 실행한 명령을 <code>~/.claude/command-log.txt</code>에 평문으로 남기는 훅이 있어, 그대로 쓰면 토큰이 섞인 입력도 파일에 남습니다. 설치 방법 중 하나가 <code>curl | bash</code>라는 점, 이름이 비슷한 다른 프로젝트 getsentry&#x2F;dotagents와 헷갈리기 쉽다는 점도 걸렸습니다. 도구가 나쁘다는 이야기는 아닙니다. 필요한 건 링크 한두 개였고, 그 정도면 <code>ln -s</code> 한 줄로 끝나기 때문에 설정 파일까지 맡길 이유가 없었습니다.</p><h2 id="적용-전에-무엇을-확인하나-체크리스트"><a href="#적용-전에-무엇을-확인하나-체크리스트" class="headerlink" title="적용 전에 무엇을 확인하나? (체크리스트)"></a>적용 전에 무엇을 확인하나? (체크리스트)</h2><ul><li><input disabled="" type="checkbox"> 원본은 <code>AGENTS.md</code> 하나. 다른 파일은 링크나 <code>@AGENTS.md</code> import로만 잇는다</li><li><input disabled="" type="checkbox"> 링크는 링크 위치 기준 상대 경로로 건다(<code>ln -s AGENTS.md CLAUDE.md</code>). 절대 경로는 클론하거나 옮기면 깨진다</li><li><input disabled="" type="checkbox"> Windows 사용자가 있으면 <code>CLAUDE.md</code>는 심링크 대신 <code>@AGENTS.md</code> 한 줄짜리 일반 파일</li><li><input disabled="" type="checkbox"> 규칙 파일에 API 키, 토큰, 내부 URL 같은 비밀값을 넣지 않는다. 커밋되고, 매 세션 모델 컨텍스트에 들어간다</li><li><input disabled="" type="checkbox"> <code>settings.json</code>, <code>.mcp.json</code>, <code>config.toml</code> 같은 설정 파일은 심링크로 묶지 않는다. 형식도 도구마다 다르고(JSON, TOML), 한 곳을 고치면 모든 도구에 바로 반영된다</li><li><input disabled="" type="checkbox"> <code>.cursor/rules</code>에 넣는 파일은 <code>.mdc</code> 확장자와 frontmatter를 갖춘 진짜 파일로</li><li><input disabled="" type="checkbox"> 심링크한 규칙 폴더 이름이 <code>.gitignore</code>에 걸려 있지 않은지 본다(포럼 사례)</li><li><input disabled="" type="checkbox"> <code>CLAUDE.local.md</code>를 만들면 Claude Code가 기본값에서 <code>AGENTS.md</code>를 안 읽는다는 점을 팀에 공유</li><li><input disabled="" type="checkbox"> Codex는 합친 규칙이 32 KiB(기본값)에 닿으면 파일을 더 붙이지 않는다. 규칙이 길어지면 하위 디렉터리로 나눈다</li><li><input disabled="" type="checkbox"> 바꾼 뒤에는 Claude Code <code>/memory</code>·<code>/context</code>, Codex 요약 명령으로 실제로 읽히는지 확인한다</li></ul><h2 id="자주-묻는-질문"><a href="#자주-묻는-질문" class="headerlink" title="자주 묻는 질문"></a>자주 묻는 질문</h2><p><strong>Q. Claude Code는 AGENTS.md를 읽나요?</strong>A. v2.1.277부터 직접 읽습니다. 단 기본값에선 작업 디렉터리나 그 위에 CLAUDE.md류가 없을 때만 읽고, 둘 다 읽으려면 <code>/config</code>에서 Project instructions를 <code>claude-md-and-agents-md</code>로 바꿉니다.</p><p><strong>Q. CLAUDE.md를 AGENTS.md 심링크로 만들어도 되나요?</strong>A. 공식 문서가 안내하는 방법입니다. 상대 경로(<code>ln -s AGENTS.md CLAUDE.md</code>)로 걸고, Windows 사용자가 있으면 <code>@AGENTS.md</code> 한 줄 import를 쓰세요.</p><p><strong>Q. Windows에서 CLAUDE.md가 한 줄짜리 파일이 되는 이유는?</strong>A. <code>core.symlinks</code>가 false인 클론에선 git이 심링크를 링크 경로 문자열이 담긴 일반 파일로 체크아웃하기 때문입니다.</p><p><strong>Q. Codex가 CLAUDE.md를 읽게 할 수 있나요?</strong>A. 기본은 아니고, <code>~/.codex/config.toml</code>의 <code>project_doc_fallback_filenames</code>에 추가하면 됩니다.</p><p><strong>Q. Cursor의 <code>.cursorrules</code>는 아직 쓰나요?</strong>A. 공식 도움말상 legacy이고 deprecated 예정입니다. <code>.cursor/rules/*.mdc</code>나 <code>AGENTS.md</code>로 옮기세요.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><p><strong>도구 공식 문서·소스</strong></p><ul><li>Claude Code, How Claude remembers your project(CLAUDE.md, AGENTS.md, <code>.claude/rules</code>, 심링크·Windows 주의): <a href="https://code.claude.com/docs/en/memory">https://code.claude.com/docs/en/memory</a></li><li>OpenAI Codex, Custom instructions with AGENTS.md: <a href="https://learn.chatgpt.com/docs/agent-configuration/agents-md">https://learn.chatgpt.com/docs/agent-configuration/agents-md</a></li><li>openai&#x2F;codex 소스 <code>codex-rs/core/src/agents_md.rs</code>(“Symlinks are allowed.”, untrusted 프로젝트 분기): <a href="https://github.com/openai/codex/blob/main/codex-rs/core/src/agents_md.rs">https://github.com/openai/codex/blob/main/codex-rs/core/src/agents_md.rs</a></li><li>openai&#x2F;codex PR #29870(탐색 성능 PR, Symlinks 절): <a href="https://github.com/openai/codex/pull/29870">https://github.com/openai/codex/pull/29870</a></li><li>Cursor, Rules: <a href="https://cursor.com/docs/rules">https://cursor.com/docs/rules</a></li><li>Cursor 도움말, Rules(<code>.cursorrules</code> 이전): <a href="https://cursor.com/help/customization/rules">https://cursor.com/help/customization/rules</a></li><li>AGENTS.md 공식 사이트: <a href="https://agents.md/">https://agents.md/</a></li><li>Git, git-config <code>core.symlinks</code>: <a href="https://git-scm.com/docs/git-config">https://git-scm.com/docs/git-config</a></li></ul><p><strong>포럼(공식 문서 아님)</strong></p><ul><li>Cursor Forum, Cursor no longer can follow symlinks to rules .mdc files: <a href="https://forum.cursor.com/t/cursor-no-longer-can-follow-symlinks-to-rules-mdc-files/146010">https://forum.cursor.com/t/cursor-no-longer-can-follow-symlinks-to-rules-mdc-files/146010</a></li><li>Cursor Forum, Rules in a symlinked subfolder (.mdc) are not followed (again): <a href="https://forum.cursor.com/t/rules-in-a-symlinked-subfolder-mdc-are-not-followed-again/152918">https://forum.cursor.com/t/rules-in-a-symlinked-subfolder-mdc-are-not-followed-again/152918</a></li></ul><p><strong>dot-agents 관련</strong></p><ul><li>dot-agents 사이트: <a href="https://www.dot-agents.com/">https://www.dot-agents.com</a></li><li>dot-agents 저장소: <a href="https://github.com/dot-agents/dot-agents">https://github.com/dot-agents/dot-agents</a></li><li>getsentry&#x2F;dotagents(이름이 비슷한 별개 프로젝트): <a href="https://github.com/getsentry/dotagents">https://github.com/getsentry/dotagents</a></li></ul><p><strong>관련 글</strong></p><ul><li>SKILL.md 하나로 Codex·Claude·Antigravity·Grok에서 모두 쓸 수 있을까?: <a href="https://devlog.moonlang.com/2026/09/08/agent-skills-format-conversion/">https://devlog.moonlang.com/2026/09/08/agent-skills-format-conversion/</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/30/agents-md-rules-symlink-pattern/</id>
    <link href="https://devlog.moonlang.com/2026/09/30/agents-md-rules-symlink-pattern/"/>
    <published>2026-09-30T03:00:00.000Z</published>
    <summary>Claude Code(v2.1.277+)·Codex·Cursor는 모두 AGENTS.md를 직접 읽습니다. CLAUDE.md 심링크나 @AGENTS.md import가 필요한 경우와 Windows·git 주의점을 공식 문서와 실행 결과로 정리했습니다.</summary>
    <title>AGENTS.md 하나로 Cursor·Claude Code·Codex 규칙을 맞출 수 있을까? 심링크가 필요한 경우</title>
    <updated>2026-09-30T09:27:27.593Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/categories/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/tags/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="노하우·꿀팁" scheme="https://devlog.moonlang.com/tags/%EB%85%B8%ED%95%98%EC%9A%B0%C2%B7%EA%BF%80%ED%8C%81/"/>
    <category term="PowerPoint" scheme="https://devlog.moonlang.com/tags/PowerPoint/"/>
    <category term="파워포인트" scheme="https://devlog.moonlang.com/tags/%ED%8C%8C%EC%9B%8C%ED%8F%AC%EC%9D%B8%ED%8A%B8/"/>
    <category term="발표 자료" scheme="https://devlog.moonlang.com/tags/%EB%B0%9C%ED%91%9C-%EC%9E%90%EB%A3%8C/"/>
    <content>
      <![CDATA[<blockquote><p><strong>10초 답:</strong> 왼쪽 축소판에서 <strong>슬라이드 사이를 오른쪽 클릭 → 구역 추가</strong> → 이름(예: 서론)을 입력하고 <strong>이름 바꾸기</strong>. 구역 이름 옆 <strong>삼각형</strong>을 누르면 접히고, 구역 제목을 끌면 슬라이드 묶음째 옮겨집니다.</p></blockquote><ul><li>대상: Microsoft 365 · 2016 이상 · Mac · 웹</li><li>효과: 장표를 묶어 접고 한 번에 이동</li><li>출처: Microsoft 지원 문서</li></ul><h2 id="이런-상황-익숙하시죠"><a href="#이런-상황-익숙하시죠" class="headerlink" title="이런 상황, 익숙하시죠"></a>이런 상황, 익숙하시죠</h2><p>발표 자료가 길어지면 왼쪽 축소판을 한참 내려야 원하는 장표가 나옵니다. 「Q&amp;A 앞으로 사례 부분을 통째로 옮겨 주세요」라는 요청이 오면 슬라이드를 하나씩 끌다가 순서가 꼬이기도 합니다. 여러 명이 나눠 만들 때는 누가 어디까지 맡았는지도 흐려집니다.</p><h2 id="왜-모르고-지나치나"><a href="#왜-모르고-지나치나" class="headerlink" title="왜 모르고 지나치나"></a>왜 모르고 지나치나</h2><p>구역 기능은 리본 한가운데가 아니라 <strong>슬라이드 사이 오른쪽 클릭 메뉴</strong>와 <strong>홈 탭의 「구역」 버튼</strong>에 있습니다. Microsoft는 이 기능을 「폴더로 파일을 정리하듯 슬라이드를 의미 있는 그룹으로 구성하는」 도구로 소개합니다.</p><h2 id="구역-추가하기"><a href="#구역-추가하기" class="headerlink" title="구역 추가하기"></a>구역 추가하기</h2><h3 id="1-슬라이드-사이-오른쪽-클릭"><a href="#1-슬라이드-사이-오른쪽-클릭" class="headerlink" title="1. 슬라이드 사이 오른쪽 클릭"></a>1. 슬라이드 사이 오른쪽 클릭</h3><p>왼쪽 <strong>축소판 그림 창</strong>에서 새 구역이 시작될 슬라이드 앞(슬라이드 사이)을 마우스 오른쪽 단추로 클릭합니다.</p><h3 id="2-구역-추가"><a href="#2-구역-추가" class="headerlink" title="2. 구역 추가"></a>2. 구역 추가</h3><p><strong>구역 추가</strong>를 고르면 제목 없는 구역이 생기고 <strong>구역 이름 바꾸기</strong> 창이 열립니다.</p><h3 id="3-이름-입력-→-이름-바꾸기"><a href="#3-이름-입력-→-이름-바꾸기" class="headerlink" title="3. 이름 입력 → 이름 바꾸기"></a>3. 이름 입력 → 이름 바꾸기</h3><p>예: <code>서론</code>, <code>사례</code>, <code>Q&amp;A</code>처럼 입력하고 <strong>이름 바꾸기</strong>를 누릅니다. 다른 구역도 같은 방법으로 추가합니다.</p><blockquote><p><strong>성공 신호:</strong> 축소판 위에 구역 이름이 제목처럼 보이고, 옆에 그 구역의 슬라이드 개수가 표시됩니다.</p></blockquote><p><strong>슬라이드 사이 우클릭 → 구역 추가 → 이름 입력 → 이름 바꾸기 → 삼각형으로 접기</strong></p><h2 id="접기·이동·이름-바꾸기"><a href="#접기·이동·이름-바꾸기" class="headerlink" title="접기·이동·이름 바꾸기"></a>접기·이동·이름 바꾸기</h2><table><thead><tr><th>하고 싶은 일</th><th>방법</th></tr></thead><tbody><tr><td>구역 접기·펼치기</td><td>구역 이름 옆의 <strong>삼각형</strong>(화살표)을 클릭합니다.</td></tr><tr><td>구역 순서 바꾸기</td><td><strong>보기 → 여러 슬라이드</strong>(슬라이드 정렬) 또는 기본 보기에서 <strong>구역 제목</strong>을 원하는 위치로 끌어다 놓습니다.</td></tr><tr><td>구역 이름 바꾸기</td><td>구역 이름을 오른쪽 클릭해 이름 바꾸기 메뉴를 고릅니다.</td></tr><tr><td>구역 삭제</td><td>구역을 오른쪽 클릭하고 삭제 메뉴를 고릅니다. 메뉴 이름을 읽고 고르세요(아래 주의 참고).</td></tr></tbody></table><blockquote><p><strong>이렇게 써 보세요:</strong> 여러 명이 함께 만드는 자료라면 구역마다 담당자를 정해 두면 편합니다. Microsoft 문서도 동료마다 구역을 맡겨 담당을 분명히 하는 방법을 소개합니다. 빈 파일에서 시작할 때는 구역 이름만 먼저 만들어 발표 흐름을 잡을 수도 있습니다.</p></blockquote><h2 id="버전별-차이"><a href="#버전별-차이" class="headerlink" title="버전별 차이"></a>버전별 차이</h2><table><thead><tr><th>환경</th><th>구역 추가 방법</th></tr></thead><tbody><tr><td>Windows (Microsoft 365, 2016 이상)</td><td>슬라이드 사이 오른쪽 클릭 → 구역 추가</td></tr><tr><td>Mac</td><td>구역의 첫 슬라이드 선택 → <strong>홈</strong> 탭 → <strong>구역</strong> → <strong>구역 추가</strong></td></tr><tr><td>웹용 PowerPoint</td><td>상태 표시줄에서 여러 슬라이드 보기로 전환 → 새 구역 첫 슬라이드 오른쪽 클릭 → 구역 추가 → 이름 입력 후 Enter</td></tr></tbody></table><h2 id="주의할-점"><a href="#주의할-점" class="headerlink" title="주의할 점"></a>주의할 점</h2><blockquote><ul><li>구역을 지울 때는 메뉴 이름을 꼭 읽으세요. <strong>구역만</strong> 없애는 항목과 <strong>슬라이드까지</strong> 지우는 항목을 헷갈리지 않도록, 지우기 전에 파일을 저장해 두면 안전합니다.</li><li>구역은 편집 화면을 정리하는 기능입니다. 슬라이드 쇼 순서는 구역을 옮긴 결과대로 바뀌므로 옮긴 뒤 한 번 넘겨 보세요.</li></ul></blockquote><h3 id="확인-체크리스트"><a href="#확인-체크리스트" class="headerlink" title="확인 체크리스트"></a>확인 체크리스트</h3><ul><li><input disabled="" type="checkbox"> 발표 흐름대로 구역 이름을 붙였다.</li><li><input disabled="" type="checkbox"> 구역 옆 숫자로 슬라이드 개수를 확인했다.</li><li><input disabled="" type="checkbox"> 필요 없는 구역을 접어 두었다.</li><li><input disabled="" type="checkbox"> 구역을 옮긴 뒤 슬라이드 쇼로 순서를 확인했다.</li></ul><h2 id="정리"><a href="#정리" class="headerlink" title="정리"></a>정리</h2><p>슬라이드가 많아질수록 <strong>우클릭 → 구역 추가</strong> 한 번이 스크롤을 줄여 줍니다. 이름을 붙이고, 접고, 제목째 끌어 옮기는 세 동작만 기억하세요.</p><h2 id="자주-묻는-질문"><a href="#자주-묻는-질문" class="headerlink" title="자주 묻는 질문"></a>자주 묻는 질문</h2><h3 id="Q-파워포인트-구역은-어떻게-추가하나요"><a href="#Q-파워포인트-구역은-어떻게-추가하나요" class="headerlink" title="Q. 파워포인트 구역은 어떻게 추가하나요?"></a>Q. 파워포인트 구역은 어떻게 추가하나요?</h3><p>왼쪽 축소판 그림 창에서 슬라이드 사이를 마우스 오른쪽 단추로 클릭하고 「구역 추가」를 고른 뒤, 구역 이름을 입력하고 「이름 바꾸기」를 누릅니다. 홈 탭의 「구역」 → 「구역 추가」로도 할 수 있습니다.</p><h3 id="Q-구역-옆-숫자는-무엇인가요"><a href="#Q-구역-옆-숫자는-무엇인가요" class="headerlink" title="Q. 구역 옆 숫자는 무엇인가요?"></a>Q. 구역 옆 숫자는 무엇인가요?</h3><p>해당 구역에 들어 있는 슬라이드 개수입니다.</p><h3 id="Q-구역-순서는-어떻게-바꾸나요"><a href="#Q-구역-순서는-어떻게-바꾸나요" class="headerlink" title="Q. 구역 순서는 어떻게 바꾸나요?"></a>Q. 구역 순서는 어떻게 바꾸나요?</h3><p>보기 → 여러 슬라이드(슬라이드 정렬) 화면이나 기본 보기에서 구역 제목을 원하는 위치로 끌어다 놓습니다. 구역 안의 슬라이드도 함께 움직입니다.</p><h3 id="Q-웹용-파워포인트에서도-되나요"><a href="#Q-웹용-파워포인트에서도-되나요" class="headerlink" title="Q. 웹용 파워포인트에서도 되나요?"></a>Q. 웹용 파워포인트에서도 되나요?</h3><p>됩니다. 여러 슬라이드 보기로 바꾼 뒤 새 구역의 첫 슬라이드를 오른쪽 클릭하고 「구역 추가」를 고릅니다.</p><h3 id="Q-구역을-지우면-슬라이드도-지워지나요"><a href="#Q-구역을-지우면-슬라이드도-지워지나요" class="headerlink" title="Q. 구역을 지우면 슬라이드도 지워지나요?"></a>Q. 구역을 지우면 슬라이드도 지워지나요?</h3><p>구역을 오른쪽 클릭해 삭제할 때 메뉴 이름을 꼭 읽어 보세요. 슬라이드까지 함께 지우는 항목을 고르지 않도록, 지우기 전에 파일을 한 번 저장해 두면 안전합니다.</p><blockquote><p><strong>출처</strong></p><ul><li><a href="https://support.microsoft.com/ko-kr/office/%EA%B5%AC%EC%97%AD%EC%9C%BC%EB%A1%9C-powerpoint-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C-%EA%B5%AC%EC%84%B1-de4bf162-e9cc-4f58-b64a-7ab09443b9f8">Microsoft 지원 — 구역으로 PowerPoint 슬라이드 구성</a> (구역 추가·접기·이동·삭제, Windows·Mac·웹)</li></ul><p>메뉴 이름은 PowerPoint 버전에 따라 조금 다르게 보일 수 있습니다. 2026-09-28 기준으로 확인했습니다.</p></blockquote>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/28/powerpoint-sections-organize-slides/</id>
    <link href="https://devlog.moonlang.com/2026/09/28/powerpoint-sections-organize-slides/"/>
    <published>2026-09-28T03:53:00.000Z</published>
    <summary>
      <![CDATA[슬라이드가 많아 왼쪽 축소판을 끝없이 스크롤할 때, 슬라이드 사이 우클릭 → 구역 추가로 서론·본론·Q&A처럼 묶고 삼각형으로 접으세요. 구역 이름 바꾸기·순서 이동·삭제까지 Microsoft 지원 문서 기준.]]>
    </summary>
    <title>파워포인트 구역 나누기 — 슬라이드 많은 PPT를 폴더처럼 접고 옮기는 법</title>
    <updated>2026-09-29T06:49:52.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/categories/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/tags/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="노하우·꿀팁" scheme="https://devlog.moonlang.com/tags/%EB%85%B8%ED%95%98%EC%9A%B0%C2%B7%EA%BF%80%ED%8C%81/"/>
    <category term="Excel" scheme="https://devlog.moonlang.com/tags/Excel/"/>
    <category term="엑셀" scheme="https://devlog.moonlang.com/tags/%EC%97%91%EC%85%80/"/>
    <category term="데이터 입력" scheme="https://devlog.moonlang.com/tags/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9E%85%EB%A0%A5/"/>
    <content>
      <![CDATA[<blockquote><p><strong>10초 답:</strong> 입력하기 <strong>전에</strong> 열을 선택하고 <code>Ctrl</code> + <code>1</code> → <strong>표시 형식 → 텍스트</strong>를 지정한 뒤 입력하세요. 몇 칸뿐이면 <code>&#39;00123</code>처럼 앞에 아포스트로피를 붙입니다. 이미 사라진 0은 <code>=TEXT(A1,&quot;00000&quot;)</code>으로 다시 붙입니다.</p></blockquote><ul><li>대상: Excel Microsoft 365 · 2016 이상</li><li>자주 겪는 값: 사번, 전화번호, 우편번호, 상품코드</li><li>출처: Microsoft 지원 문서</li></ul><h2 id="이런-상황-익숙하시죠"><a href="#이런-상황-익숙하시죠" class="headerlink" title="이런 상황, 익숙하시죠"></a>이런 상황, 익숙하시죠</h2><p>명단에 사번 <code>00123</code>을 넣었더니 <code>123</code>이 됩니다. 휴대폰 번호 <code>010…</code>의 맨 앞 0도, 우편번호 첫 자리 0도 사라집니다. 서식을 텍스트로 바꿔 봐도 이미 입력한 칸은 그대로라서 더 답답해집니다.</p><h2 id="왜-이런-일이-생기나"><a href="#왜-이런-일이-생기나" class="headerlink" title="왜 이런 일이 생기나"></a>왜 이런 일이 생기나</h2><p>Microsoft 지원 문서는 이렇게 설명합니다. Excel은 수식과 계산이 되도록 <strong>숫자 앞의 0을 자동으로 없애고</strong>, 아주 큰 숫자는 <code>1.23E+15</code> 같은 <strong>지수 표기</strong>로 바꿉니다. 사번·전화번호·카드번호·우편번호처럼 계산할 일이 없는 값은 <strong>텍스트</strong>로 다뤄야 원래 모양이 남습니다.</p><h2 id="가장-빠른-해결-입력-전에-텍스트로"><a href="#가장-빠른-해결-입력-전에-텍스트로" class="headerlink" title="가장 빠른 해결: 입력 전에 텍스트로"></a>가장 빠른 해결: 입력 전에 텍스트로</h2><h3 id="1-열-선택"><a href="#1-열-선택" class="headerlink" title="1. 열 선택"></a>1. 열 선택</h3><p>번호를 넣을 열 머리글(예: <strong>A</strong>)을 눌러 열 전체를 선택합니다.</p><h3 id="2-Ctrl-1-→-텍스트"><a href="#2-Ctrl-1-→-텍스트" class="headerlink" title="2. Ctrl + 1 → 텍스트"></a>2. Ctrl + 1 → 텍스트</h3><p><code>Ctrl</code> + <code>1</code>로 <strong>셀 서식</strong>을 열고 <strong>표시 형식</strong> 탭에서 <strong>텍스트</strong>를 고른 뒤 확인합니다.</p><h3 id="3-그다음-입력"><a href="#3-그다음-입력" class="headerlink" title="3. 그다음 입력"></a>3. 그다음 입력</h3><p>이제 <code>00123</code>, <code>010…</code>을 입력하면 0이 그대로 남습니다.</p><blockquote><p><strong>성공 신호:</strong> 셀에 입력한 그대로 <code>00123</code>이 보입니다.</p></blockquote><blockquote><p><strong>몇 칸만 넣을 때:</strong> 숫자 앞에 아포스트로피를 붙여 <code>&#39;00123</code>처럼 입력하면 Excel이 텍스트로 받아들입니다.</p></blockquote><h2 id="이미-0이-사라졌다면-TEXT-함수로-복구"><a href="#이미-0이-사라졌다면-TEXT-함수로-복구" class="headerlink" title="이미 0이 사라졌다면: TEXT 함수로 복구"></a>이미 0이 사라졌다면: TEXT 함수로 복구</h2><p>서식을 나중에 바꿔도 이미 입력된 숫자는 바뀌지 않습니다. 옆 빈 열에 TEXT 함수를 써서 자릿수를 다시 채웁니다. 아래는 Microsoft 문서의 예시입니다.</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">=TEXT(A1,&quot;00000&quot;)</span><br></pre></td></tr></table></figure><table><thead><tr><th>용도</th><th>A1 값 예</th><th>수식</th><th>결과</th></tr></thead><tbody><tr><td>우편번호 5자리</td><td>123</td><td><code>=TEXT(A1,&quot;00000&quot;)</code></td><td>00123</td></tr><tr><td>자릿수가 다른 코드</td><td>필요한 자릿수만큼 0을 적습니다</td><td><code>=TEXT(A1,&quot;0000000&quot;)</code></td><td>7자리로 채움</td></tr></tbody></table><p>결과 열을 복사한 뒤 <strong>선택하여 붙여넣기 → 값</strong>으로 붙이면 수식 없이 텍스트만 남습니다.</p><h3 id="화면에서만-0이-보이면-될-때"><a href="#화면에서만-0이-보이면-될-때" class="headerlink" title="화면에서만 0이 보이면 될 때"></a>화면에서만 0이 보이면 될 때</h3><p><code>Ctrl</code> + <code>1</code> → <strong>사용자 지정</strong> → 형식 칸에 <code>00000</code>을 넣는 방법도 있습니다. Microsoft는 이 방법을 <strong>그 통합 문서 안에서만 쓰고 다른 프로그램의 데이터 원본으로 쓰지 않을 때</strong>, 16자리 미만 숫자 코드에 쓰라고 안내합니다. 또한 서식 적용 전에 이미 사라진 0은 되살리지 않습니다.</p><h2 id="CSV·텍스트-파일을-가져올-때"><a href="#CSV·텍스트-파일을-가져올-때" class="headerlink" title="CSV·텍스트 파일을 가져올 때"></a>CSV·텍스트 파일을 가져올 때</h2><h3 id="1-데이터-→-텍스트-CSV에서"><a href="#1-데이터-→-텍스트-CSV에서" class="headerlink" title="1. 데이터 → 텍스트&#x2F;CSV에서"></a>1. 데이터 → 텍스트&#x2F;CSV에서</h3><p><strong>데이터</strong> 탭 → <strong>텍스트&#x2F;CSV에서</strong>를 눌러 파일을 고릅니다.</p><h3 id="2-편집-화면으로"><a href="#2-편집-화면으로" class="headerlink" title="2. 편집 화면으로"></a>2. 편집 화면으로</h3><p>미리보기 창에서 편집(버전에 따라 <strong>데이터 변환</strong>)을 눌러 Power Query 편집기를 엽니다.</p><h3 id="3-열-형식-→-텍스트"><a href="#3-열-형식-→-텍스트" class="headerlink" title="3. 열 형식 → 텍스트"></a>3. 열 형식 → 텍스트</h3><p>0을 지킬 열 머리글을 선택하고 <strong>홈 → 변환 → 데이터 형식 → 텍스트</strong>를 고릅니다. 「현재 항목 바꾸기」를 누른 뒤 <strong>닫기 및 로드</strong>합니다.</p><h3 id="Microsoft-365·Excel-2024라면-기본-동작-바꾸기"><a href="#Microsoft-365·Excel-2024라면-기본-동작-바꾸기" class="headerlink" title="Microsoft 365·Excel 2024라면: 기본 동작 바꾸기"></a>Microsoft 365·Excel 2024라면: 기본 동작 바꾸기</h3><p>Microsoft 문서는 이 기능을 **Microsoft 365와 Excel 2024(Windows·Mac)**에서 제공한다고 안내합니다. <strong>파일 → 옵션 → 데이터 → 자동 데이터 변환</strong>에서 앞의 0을 제거하고 숫자로 바꾸는 항목을 끄면, 입력·붙여넣기·불러오기 때 <code>00123</code>이 텍스트로 남습니다. 다만 파일을 받는 사람의 Excel 버전과 설정이 다르면 결과가 달라질 수 있으니, 공유용 파일은 열을 텍스트로 지정해 두는 편이 확실합니다.</p><h2 id="주의할-점"><a href="#주의할-점" class="headerlink" title="주의할 점"></a>주의할 점</h2><blockquote><ul><li><strong>16자리 이상 숫자</strong>(카드번호 등)는 Excel 정밀도가 유효 숫자 15자리라 15번째 뒤가 0으로 바뀝니다. 반드시 텍스트 서식이나 아포스트로피로 입력하세요.</li><li>텍스트로 저장한 번호는 합계·평균 같은 계산에 쓰지 않습니다. 번호 열과 계산 열을 나눠 두세요.</li><li>주민등록번호·계좌번호가 들어간 파일은 공유 범위를 한 번 더 확인하세요.</li></ul></blockquote><h3 id="확인-체크리스트"><a href="#확인-체크리스트" class="headerlink" title="확인 체크리스트"></a>확인 체크리스트</h3><ul><li><input disabled="" type="checkbox"> 번호 열을 입력 전에 텍스트로 지정했다.</li><li><input disabled="" type="checkbox"> 이미 사라진 0은 TEXT 함수로 다시 채우고 값으로 붙여넣었다.</li><li><input disabled="" type="checkbox"> 16자리 이상 번호는 텍스트로 넣었다.</li><li><input disabled="" type="checkbox"> CSV는 텍스트&#x2F;CSV에서 가져오며 열 형식을 텍스트로 바꿨다.</li></ul><h2 id="정리"><a href="#정리" class="headerlink" title="정리"></a>정리</h2><p>핵심은 <strong>입력 순서</strong>입니다. 텍스트 서식을 먼저 걸고 입력하면 0이 남고, 이미 사라진 0은 TEXT 함수로 채웁니다. 날짜로 바뀌는 문제까지 함께 막고 싶다면 자동 데이터 변환 설정도 같이 살펴보세요.</p><h2 id="자주-묻는-질문"><a href="#자주-묻는-질문" class="headerlink" title="자주 묻는 질문"></a>자주 묻는 질문</h2><h3 id="Q-엑셀에서-숫자-앞-0이-왜-사라지나요"><a href="#Q-엑셀에서-숫자-앞-0이-왜-사라지나요" class="headerlink" title="Q. 엑셀에서 숫자 앞 0이 왜 사라지나요?"></a>Q. 엑셀에서 숫자 앞 0이 왜 사라지나요?</h3><p>Microsoft 지원 문서에 따르면 Excel은 수식과 계산이 되도록 숫자 앞의 0을 자동으로 없애고, 아주 큰 숫자는 1.23E+15 같은 지수 표기로 바꿉니다.</p><h3 id="Q-서식을-텍스트로-바꿨는데-0이-돌아오지-않아요"><a href="#Q-서식을-텍스트로-바꿨는데-0이-돌아오지-않아요" class="headerlink" title="Q. 서식을 텍스트로 바꿨는데 0이 돌아오지 않아요."></a>Q. 서식을 텍스트로 바꿨는데 0이 돌아오지 않아요.</h3><p>텍스트 서식은 서식을 바꾼 뒤 새로 입력하는 값에만 적용되고 이미 입력된 숫자는 바꾸지 않습니다. 이미 사라진 0은 &#x3D;TEXT(A1,”00000”)처럼 TEXT 함수로 다시 붙이세요.</p><h3 id="Q-사용자-지정-서식-00000이면-충분한가요"><a href="#Q-사용자-지정-서식-00000이면-충분한가요" class="headerlink" title="Q. 사용자 지정 서식 00000이면 충분한가요?"></a>Q. 사용자 지정 서식 00000이면 충분한가요?</h3><p>그 통합 문서 안에서 보기에는 충분합니다. Microsoft는 이 방법을 다른 프로그램의 데이터 원본으로 쓰지 않을 때, 16자리 미만 숫자 코드에 쓰라고 안내합니다. 파일을 다른 곳으로 넘긴다면 텍스트로 저장하는 편이 안전합니다.</p><h3 id="Q-카드번호처럼-16자리-숫자-끝이-0으로-바뀌어요"><a href="#Q-카드번호처럼-16자리-숫자-끝이-0으로-바뀌어요" class="headerlink" title="Q. 카드번호처럼 16자리 숫자 끝이 0으로 바뀌어요."></a>Q. 카드번호처럼 16자리 숫자 끝이 0으로 바뀌어요.</h3><p>Excel의 최대 정밀도는 유효 숫자 15자리라서, 16자리 이상 숫자는 15번째 뒤가 0으로 바뀝니다. 16자리 이상 코드는 반드시 텍스트 서식이나 아포스트로피로 입력하세요.</p><h3 id="Q-0이-안-지워지게-엑셀-기본-동작을-바꿀-수-있나요"><a href="#Q-0이-안-지워지게-엑셀-기본-동작을-바꿀-수-있나요" class="headerlink" title="Q. 0이 안 지워지게 엑셀 기본 동작을 바꿀 수 있나요?"></a>Q. 0이 안 지워지게 엑셀 기본 동작을 바꿀 수 있나요?</h3><p>Microsoft 365와 Excel 2024에서는 파일 → 옵션 → 데이터 → 자동 데이터 변환에서 앞의 0을 제거하고 숫자로 바꾸는 항목을 끌 수 있습니다.</p><blockquote><p><strong>관련 글:</strong> 날짜로 바뀌는 문제까지 한 번에 막는 설정은 <a href="/2026/09/08/life-tip-2026-09-08-excel-automatic-data-conversion/">엑셀 자동 데이터 변환 끄는 방법</a>에 따로 정리했습니다.</p></blockquote><blockquote><p><strong>출처</strong></p><ul><li><a href="https://support.microsoft.com/en-us/office/keeping-leading-zeros-and-large-numbers-1bf7b935-36e1-4985-842f-5dfa51f85fe7">Microsoft Support — Keeping leading zeros and large numbers</a> (0 제거 이유, 텍스트 서식, 사용자 지정 서식, TEXT 함수, 15자리 정밀도, Power Query 가져오기)</li><li><a href="https://support.microsoft.com/en-us/excel/data-import-and-analysis-options-in-excel">Microsoft Support — Data import and analysis options in Excel</a> (파일 → 옵션 → 데이터 → 자동 데이터 변환)</li></ul><p>메뉴 이름은 Excel 버전과 언어 설정에 따라 조금 다르게 보일 수 있습니다. 2026-09-28 기준으로 확인했습니다.</p></blockquote>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/28/excel-keep-leading-zeros/</id>
    <link href="https://devlog.moonlang.com/2026/09/28/excel-keep-leading-zeros/"/>
    <published>2026-09-28T03:52:00.000Z</published>
    <summary>엑셀에 00123, 010으로 시작하는 번호를 넣으면 앞 0이 사라지는 이유와 해결법. 입력 전 Ctrl+1 → 텍스트, 아포스트로피('), 이미 사라진 0은 TEXT 함수로 복구, CSV는 텍스트/CSV에서 가져오기. Microsoft 지원 문서 기준.</summary>
    <title>엑셀 앞자리 0 사라짐 해결 — 사번·전화번호·우편번호 00123 그대로 두는 법</title>
    <updated>2026-09-29T06:49:51.951Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/categories/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/tags/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="노하우·꿀팁" scheme="https://devlog.moonlang.com/tags/%EB%85%B8%ED%95%98%EC%9A%B0%C2%B7%EA%BF%80%ED%8C%81/"/>
    <category term="Windows" scheme="https://devlog.moonlang.com/tags/Windows/"/>
    <category term="Windows 11" scheme="https://devlog.moonlang.com/tags/Windows-11/"/>
    <category term="Wi-Fi" scheme="https://devlog.moonlang.com/tags/Wi-Fi/"/>
    <category term="PC 설정" scheme="https://devlog.moonlang.com/tags/PC-%EC%84%A4%EC%A0%95/"/>
    <content>
      <![CDATA[<p>손님이 Wi-Fi 비밀번호를 묻는데 기억이 안 날 때, 이미 연결된 PC에서 바로 확인하는 방법입니다.</p><blockquote><p><strong>10초 답:</strong> 그 Wi-Fi에 연결된 Windows 11 PC에서 <strong>설정 → 네트워크 및 인터넷 → 속성</strong>으로 들어가, <strong>Wi-Fi 네트워크 암호</strong> 옆의 <strong>표시</strong>를 누르세요.</p></blockquote><h2 id="따라-하기-3단계"><a href="#따라-하기-3단계" class="headerlink" title="따라 하기: 3단계"></a>따라 하기: 3단계</h2><h3 id="1-설정-앱-열기"><a href="#1-설정-앱-열기" class="headerlink" title="1. 설정 앱 열기"></a>1. 설정 앱 열기</h3><p><code>시작</code> → <strong>설정</strong>을 엽니다. (<code>Win</code> + <code>I</code>로도 열 수 있습니다.)</p><h3 id="2-네트워크-및-인터넷-→-속성"><a href="#2-네트워크-및-인터넷-→-속성" class="headerlink" title="2. 네트워크 및 인터넷 → 속성"></a>2. 네트워크 및 인터넷 → 속성</h3><p>왼쪽에서 <strong>네트워크 및 인터넷</strong>을 고르고, 위쪽의 연결된 Wi-Fi <strong>속성</strong>을 누릅니다.</p><h3 id="3-「표시」-누르기"><a href="#3-「표시」-누르기" class="headerlink" title="3. 「표시」 누르기"></a>3. 「표시」 누르기</h3><p><strong>Wi-Fi 네트워크 암호</strong> 옆의 <strong>표시</strong>를 누르면 비밀번호가 보입니다.</p><blockquote><p><strong>성공 신호:</strong> 가려져 있던 칸에 실제 비밀번호 글자가 나타납니다.</p></blockquote><p><strong>설정 → 네트워크 및 인터넷 → 속성 → Wi-Fi 네트워크 암호 「표시」</strong></p><ul><li>대상: Windows 11 (10은 아래 별도 경로)</li><li>조건: 그 Wi-Fi에 연결한 적이 있는 PC</li><li>출처: Microsoft 지원 문서</li></ul><h2 id="그래도-안-보인다면"><a href="#그래도-안-보인다면" class="headerlink" title="그래도 안 보인다면"></a>그래도 안 보인다면</h2><h3 id="지금-연결돼-있지-않은-네트워크일-때"><a href="#지금-연결돼-있지-않은-네트워크일-때" class="headerlink" title="지금 연결돼 있지 않은 네트워크일 때"></a>지금 연결돼 있지 않은 네트워크일 때</h3><p>예전에 연결해 저장해 둔 Wi-Fi라면 <strong>설정 → 네트워크 및 인터넷 → Wi-Fi → 알려진 네트워크 관리</strong>에서 해당 네트워크를 고른 뒤, <strong>Wi-Fi 네트워크 암호</strong> 옆 <strong>표시</strong>를 누릅니다.</p><h3 id="Windows-10을-쓰고-있을-때"><a href="#Windows-10을-쓰고-있을-때" class="headerlink" title="Windows 10을 쓰고 있을 때"></a>Windows 10을 쓰고 있을 때</h3><h3 id="1-네트워크-및-공유-센터"><a href="#1-네트워크-및-공유-센터" class="headerlink" title="1. 네트워크 및 공유 센터"></a>1. 네트워크 및 공유 센터</h3><p><strong>설정 → 네트워크 및 인터넷 → 상태 → 네트워크 및 공유 센터</strong>로 갑니다.</p><h3 id="2-Wi-Fi-이름-→-무선-속성"><a href="#2-Wi-Fi-이름-→-무선-속성" class="headerlink" title="2. Wi-Fi 이름 → 무선 속성"></a>2. Wi-Fi 이름 → 무선 속성</h3><p><strong>연결</strong> 옆의 Wi-Fi 이름을 누르고, Wi-Fi 상태 창에서 <strong>무선 속성</strong>을 누릅니다.</p><h3 id="3-보안-탭-→-문자-표시"><a href="#3-보안-탭-→-문자-표시" class="headerlink" title="3. 보안 탭 → 문자 표시"></a>3. 보안 탭 → 문자 표시</h3><p><strong>보안</strong> 탭에서 <strong>문자 표시</strong>에 체크하면 <strong>네트워크 보안 키</strong> 칸에 비밀번호가 보입니다.</p><h3 id="다른-기기를-연결할-때"><a href="#다른-기기를-연결할-때" class="headerlink" title="다른 기기를 연결할 때"></a>다른 기기를 연결할 때</h3><p>비밀번호를 확인했다면 다른 기기에서는 평소처럼 Wi-Fi를 고르고 비밀번호를 입력하면 됩니다. Microsoft 문서는 기기가 지원하면 QR 코드를 스캔해 연결할 수 있다고도 안내합니다.</p><h2 id="예전-경로와-달라진-점"><a href="#예전-경로와-달라진-점" class="headerlink" title="예전 경로와 달라진 점"></a>예전 경로와 달라진 점</h2><p>예전 Windows에서는 제어판의 <strong>네트워크 및 공유 센터 → 무선 속성 → 보안</strong> 탭에서 비밀번호를 봤습니다. Windows 11에서는 Microsoft 지원 문서가 <strong>설정 앱</strong> 경로를 먼저 안내합니다.</p><h2 id="기기·버전-차이"><a href="#기기·버전-차이" class="headerlink" title="기기·버전 차이"></a>기기·버전 차이</h2><table><thead><tr><th>구분</th><th>경로</th></tr></thead><tbody><tr><td>Windows 11</td><td>설정 → 네트워크 및 인터넷 → 속성 → Wi-Fi 네트워크 암호 「표시」</td></tr><tr><td>Windows 11 (저장된 네트워크)</td><td>설정 → 네트워크 및 인터넷 → Wi-Fi → 알려진 네트워크 관리 → 네트워크 선택 → 「표시」</td></tr><tr><td>Windows 10</td><td>네트워크 및 공유 센터 → Wi-Fi 이름 → 무선 속성 → 보안 → 「문자 표시」</td></tr></tbody></table><p>메뉴 이름은 Windows 업데이트에 따라 조금씩 다르게 보일 수 있습니다.</p><h2 id="주의할-점"><a href="#주의할-점" class="headerlink" title="주의할 점"></a>주의할 점</h2><blockquote><ul><li>이 방법은 <strong>그 Wi-Fi에 연결한 적이 있는 내 PC</strong>에서 비밀번호를 다시 보는 방법입니다. 남의 네트워크 비밀번호를 알아내는 용도로 쓰지 마세요.</li><li>비밀번호를 단체 채팅방이나 화면 공유 중에 띄우지 마세요. 손님에게는 직접 보여 주거나 QR 연결을 쓰는 편이 깔끔합니다.</li></ul></blockquote><h3 id="확인-체크리스트"><a href="#확인-체크리스트" class="headerlink" title="확인 체크리스트"></a>확인 체크리스트</h3><ul><li><input disabled="" type="checkbox"> 이 PC가 그 Wi-Fi에 연결돼 있거나, 연결한 적이 있다.</li><li><input disabled="" type="checkbox"> 설정 → 네트워크 및 인터넷 → 속성에서 「표시」를 눌렀다.</li><li><input disabled="" type="checkbox"> 보이는 비밀번호로 다른 기기 연결을 확인했다.</li><li><input disabled="" type="checkbox"> 비밀번호 화면을 닫았다.</li></ul><h2 id="정리"><a href="#정리" class="headerlink" title="정리"></a>정리</h2><p>공유기를 뒤질 필요 없이, 이미 연결된 Windows 11 PC의 <strong>설정 → 네트워크 및 인터넷 → 속성 → 표시</strong>면 충분합니다. 연결이 끊긴 네트워크는 「알려진 네트워크 관리」, Windows 10은 「무선 속성 → 보안 → 문자 표시」를 기억해 두세요.</p><h2 id="자주-묻는-질문"><a href="#자주-묻는-질문" class="headerlink" title="자주 묻는 질문"></a>자주 묻는 질문</h2><h3 id="Q-윈도우11에서-와이파이-비밀번호는-어디서-보나요"><a href="#Q-윈도우11에서-와이파이-비밀번호는-어디서-보나요" class="headerlink" title="Q. 윈도우11에서 와이파이 비밀번호는 어디서 보나요?"></a>Q. 윈도우11에서 와이파이 비밀번호는 어디서 보나요?</h3><p>설정 앱 → 네트워크 및 인터넷 → 속성으로 들어가 「Wi-Fi 네트워크 암호」 옆의 「표시」를 누릅니다. Microsoft 지원 문서에 안내된 경로입니다.</p><h3 id="Q-지금-연결되지-않은-와이파이-비밀번호도-볼-수-있나요"><a href="#Q-지금-연결되지-않은-와이파이-비밀번호도-볼-수-있나요" class="headerlink" title="Q. 지금 연결되지 않은 와이파이 비밀번호도 볼 수 있나요?"></a>Q. 지금 연결되지 않은 와이파이 비밀번호도 볼 수 있나요?</h3><p>그 PC가 예전에 연결해 저장해 둔 네트워크라면 「알려진 네트워크 관리」에서 해당 네트워크를 고른 뒤 Wi-Fi 네트워크 암호 옆 「표시」로 볼 수 있다고 Microsoft가 안내합니다.</p><h3 id="Q-한-번도-연결한-적-없는-와이파이-비밀번호도-알-수-있나요"><a href="#Q-한-번도-연결한-적-없는-와이파이-비밀번호도-알-수-있나요" class="headerlink" title="Q. 한 번도 연결한 적 없는 와이파이 비밀번호도 알 수 있나요?"></a>Q. 한 번도 연결한 적 없는 와이파이 비밀번호도 알 수 있나요?</h3><p>아니요. Microsoft 안내는 그 Wi-Fi에 연결한 적이 있는 Windows PC에서 찾는 방법입니다. 처음 보는 네트워크라면 공유기 관리자나 네트워크 주인에게 물어보세요.</p><h3 id="Q-윈도우10은-경로가-다른가요"><a href="#Q-윈도우10은-경로가-다른가요" class="headerlink" title="Q. 윈도우10은 경로가 다른가요?"></a>Q. 윈도우10은 경로가 다른가요?</h3><p>Windows 10은 설정 → 네트워크 및 인터넷 → 상태 → 네트워크 및 공유 센터 → Wi-Fi 이름 → 무선 속성 → 보안 탭 → 「문자 표시」 순서입니다.</p><blockquote><p><strong>출처</strong></p><ul><li><a href="https://support.microsoft.com/ko-kr/windows/experience/connectivity-networking/connect-to-a-wi-fi-network-in-windows">Microsoft 지원 — Windows에서 Wi-Fi 네트워크에 연결 (한국어)</a></li><li><a href="https://support.microsoft.com/en-us/windows/experience/connectivity-networking/connect-to-a-wi-fi-network-in-windows">Microsoft Support — Connect to a Wi-Fi network in Windows (영문)</a></li></ul><p>경로와 메뉴 이름은 위 문서를 2026-09-28 기준으로 확인했습니다.</p></blockquote>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/28/windows-11-wifi-password-show/</id>
    <link href="https://devlog.moonlang.com/2026/09/28/windows-11-wifi-password-show/"/>
    <published>2026-09-28T03:51:00.000Z</published>
    <summary>손님에게 알려줄 Wi-Fi 비밀번호가 기억나지 않을 때, 그 Wi-Fi에 연결했던 Windows 11 PC의 설정 → 네트워크 및 인터넷 → 속성에서 Wi-Fi 네트워크 암호 옆 「표시」를 누르면 됩니다. Windows 10 경로와 주의점까지.</summary>
    <title>윈도우11 와이파이 비밀번호 확인 방법 — 설정 앱에서 「표시」 한 번</title>
    <updated>2026-09-29T06:49:51.975Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/categories/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="생활 꿀팁" scheme="https://devlog.moonlang.com/tags/%EC%83%9D%ED%99%9C-%EA%BF%80%ED%8C%81/"/>
    <category term="노하우·꿀팁" scheme="https://devlog.moonlang.com/tags/%EB%85%B8%ED%95%98%EC%9A%B0%C2%B7%EA%BF%80%ED%8C%81/"/>
    <category term="네이버 블로그" scheme="https://devlog.moonlang.com/tags/%EB%84%A4%EC%9D%B4%EB%B2%84-%EB%B8%94%EB%A1%9C%EA%B7%B8/"/>
    <category term="위젯" scheme="https://devlog.moonlang.com/tags/%EC%9C%84%EC%A0%AF/"/>
    <category term="블로그 꾸미기" scheme="https://devlog.moonlang.com/tags/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%BE%B8%EB%AF%B8%EA%B8%B0/"/>
    <content>
      <![CDATA[<p>HTML을 몰라도 됩니다. 아래 코드에서 주소 두 곳만 바꿔 붙여넣고, 미리보기로 확인한 뒤 등록하면 됩니다. 순서는 네이버 블로그 고객센터의 「위젯 직접 등록 방법」을 따랐습니다.</p><blockquote><p><strong>한 줄 답:</strong> PC에서 <strong>관리 → 꾸미기 설정 → 레이아웃·위젯 설정 → 위젯 직접 등록</strong>을 누르고, 위젯명과 HTML 코드를 넣은 뒤 미리보기를 보고 <strong>등록</strong>합니다. 레이아웃 화면에서 위젯을 원하는 자리로 끌어다 놓고 <strong>적용</strong>까지 누르면 끝입니다.</p></blockquote><ul><li>준비물: 배너 이미지 주소 + 연결할 링크</li><li>크기 기준: 가로 170px · 세로 최대 600px</li><li>완료 모습: 사이드바에서 클릭되는 배너</li></ul><h2 id="1-시작-전에-준비하기"><a href="#1-시작-전에-준비하기" class="headerlink" title="1. 시작 전에 준비하기"></a>1. 시작 전에 준비하기</h2><p>아래 두 가지를 메모장에 미리 복사해 두면 진행이 쉬워집니다.</p><table><thead><tr><th>준비물</th><th>설명</th></tr></thead><tbody><tr><td>① 배너 이미지 주소</td><td>인터넷에서 바로 열리는 이미지 주소입니다. 보통 <code>https://</code>로 시작합니다.</td></tr><tr><td>② 클릭 후 이동할 주소</td><td>상담 신청 페이지, 카카오톡 오픈채팅처럼 배너를 눌렀을 때 열릴 페이지입니다.</td></tr></tbody></table><blockquote><p><strong>꼭 기억하세요.</strong> 내 컴퓨터 안의 파일 경로(예: <code>C:\사진\배너.png</code>)는 다른 사람 화면에서 열리지 않습니다. 인터넷에서 열리는 이미지 주소를 쓰세요.</p></blockquote><h3 id="복사해서-쓸-기본-코드"><a href="#복사해서-쓸-기본-코드" class="headerlink" title="복사해서 쓸 기본 코드"></a>복사해서 쓸 기본 코드</h3><p>바꿀 곳은 두 군데입니다: <code>이동할-주소</code>와 <code>이미지-주소</code>. 따옴표(<code>&quot;</code>)는 지우지 마세요.</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&lt;a href=&quot;이동할-주소&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;</span><br><span class="line">  &lt;img src=&quot;이미지-주소&quot; width=&quot;170&quot; alt=&quot;상담 신청 배너&quot; style=&quot;display:block;border:0;&quot;&gt;</span><br><span class="line">&lt;/a&gt;</span><br></pre></td></tr></table></figure><blockquote><p><strong>크기 기준 (고객센터 안내):</strong> 네이버 블로그에 최적화된 위젯 크기는 <strong>가로 170px</strong>이고, 세로는 <strong>최대 600px</strong>까지 지원됩니다. 이 크기를 넘으면 위젯이 잘려 보일 수 있습니다. 그래서 위 코드에 <code>width=&quot;170&quot;</code>을 넣어 두었습니다.</p></blockquote><h2 id="2-위젯-직접-등록-창-열기"><a href="#2-위젯-직접-등록-창-열기" class="headerlink" title="2. 위젯 직접 등록 창 열기"></a>2. 위젯 직접 등록 창 열기</h2><h3 id="1-블로그-관리로-들어가기"><a href="#1-블로그-관리로-들어가기" class="headerlink" title="1. 블로그 관리로 들어가기"></a>1. 블로그 관리로 들어가기</h3><p>PC에서 내 블로그의 <strong>관리</strong>에 접속한 뒤, 위쪽의 <strong>꾸미기 설정</strong> 탭을 누릅니다.</p><p><img src="/images/knowhow/naver-widget-01-decorate-settings-masked.png" alt="네이버 블로그 관리의 꾸미기 설정 화면 (계정 이름 가림)"><br><em>관리 → 꾸미기 설정. 왼쪽 「디자인 설정」 아래에 레이아웃·위젯 설정이 있습니다.</em></p><h3 id="2-레이아웃·위젯-설정-열기"><a href="#2-레이아웃·위젯-설정-열기" class="headerlink" title="2. 레이아웃·위젯 설정 열기"></a>2. 레이아웃·위젯 설정 열기</h3><p>왼쪽 메뉴에서 <strong>레이아웃·위젯 설정</strong>을 누릅니다. 화면의 <strong>위젯 사용 설정</strong> 아래에 있는 <strong>위젯 직접 등록</strong>을 클릭합니다.</p><h3 id="3-위젯명과-코드-입력하기"><a href="#3-위젯명과-코드-입력하기" class="headerlink" title="3. 위젯명과 코드 입력하기"></a>3. 위젯명과 코드 입력하기</h3><p><strong>위젯명</strong>에는 나중에 알아보기 쉬운 이름을 씁니다. 예: <code>상담예약 배너</code>. 코드 입력란에는 준비한 HTML을 붙여넣습니다.</p><p><img src="/images/knowhow/naver-widget-02-direct-register.png" alt="위젯명과 HTML 코드를 입력한 위젯 직접등록 창과 미리보기"><br><em>미리보기에 배너가 찌그러지지 않고 보이면 코드 입력이 정상입니다. (예시 배너: 사용자 제공 화면)</em></p><blockquote><p><strong>성공 신호:</strong> 미리보기 영역에 배너가 제대로 보입니다.</p></blockquote><h3 id="4-미리보기-확인-후-등록"><a href="#4-미리보기-확인-후-등록" class="headerlink" title="4. 미리보기 확인 후 등록"></a>4. 미리보기 확인 후 등록</h3><p>미리보기로 위젯이 잘 보이는지 점검한 뒤 창 아래의 <strong>등록</strong>을 누릅니다. <strong>이전</strong>이나 <strong>취소</strong>를 누르면 저장되지 않습니다.</p><h2 id="3-사이드바에-배치하고-적용하기"><a href="#3-사이드바에-배치하고-적용하기" class="headerlink" title="3. 사이드바에 배치하고 적용하기"></a>3. 사이드바에 배치하고 적용하기</h2><h3 id="5-원하는-위치로-끌어다-놓기"><a href="#5-원하는-위치로-끌어다-놓기" class="headerlink" title="5. 원하는 위치로 끌어다 놓기"></a>5. 원하는 위치로 끌어다 놓기</h3><p>등록한 위젯은 <strong>위젯 사용 설정 목록</strong>에 추가되고 왼쪽 레이아웃 화면에 표시됩니다. 마우스로 끌어서 프로필 아래처럼 눈에 잘 띄는 자리에 놓습니다.</p><h3 id="6-적용-누르기"><a href="#6-적용-누르기" class="headerlink" title="6. 적용 누르기"></a>6. 적용 누르기</h3><p>레이아웃 화면을 나가기 전에 <strong>적용</strong>을 눌러 바꾼 내용을 저장합니다. 이 단계를 빼먹기 쉽습니다.</p><blockquote><p><strong>주의:</strong> 위젯 등록 창의 「등록」과 레이아웃 화면의 「적용」은 서로 다른 단계입니다. 둘 다 눌러 두세요.</p></blockquote><h2 id="4-실제-블로그에서-확인하기"><a href="#4-실제-블로그에서-확인하기" class="headerlink" title="4. 실제 블로그에서 확인하기"></a>4. 실제 블로그에서 확인하기</h2><h3 id="7-내-블로그-새로고침"><a href="#7-내-블로그-새로고침" class="headerlink" title="7. 내 블로그 새로고침"></a>7. 내 블로그 새로고침</h3><p>관리 화면을 닫고 내 블로그로 돌아가 <code>Ctrl</code> + <code>R</code>(또는 <code>F5</code>)로 새로고침합니다.</p><p><img src="/images/knowhow/naver-widget-03-sidebar-result-cropped.png" alt="네이버 블로그 사이드바에 등록된 배너 위젯"><br><em>사이드바에 배너가 보이면 1차 성공입니다.</em></p><h3 id="8-직접-클릭해-보기"><a href="#8-직접-클릭해-보기" class="headerlink" title="8. 직접 클릭해 보기"></a>8. 직접 클릭해 보기</h3><p>배너를 한 번 눌러 의도한 상담 페이지나 오픈채팅이 열리는지 확인합니다. 다른 페이지가 열리면 코드의 <code>href</code> 주소를 다시 확인하세요.</p><h3 id="완료-체크리스트"><a href="#완료-체크리스트" class="headerlink" title="완료 체크리스트"></a>완료 체크리스트</h3><ul><li><input disabled="" type="checkbox"> 배너가 사이드바 폭 안에 보인다.</li><li><input disabled="" type="checkbox"> 글자와 이미지가 잘리지 않는다 (세로 600px 이내).</li><li><input disabled="" type="checkbox"> 배너를 누르면 올바른 페이지가 열린다.</li><li><input disabled="" type="checkbox"> 연결한 링크 주소를 휴대폰에서도 한 번 열어 봤다.</li></ul><h2 id="문제가-생겼을-때"><a href="#문제가-생겼을-때" class="headerlink" title="문제가 생겼을 때"></a>문제가 생겼을 때</h2><table><thead><tr><th>증상</th><th>확인할 것</th></tr></thead><tbody><tr><td>미리보기가 빈칸이다</td><td><code>img src</code> 안의 이미지 주소를 브라우저 주소창에 붙여넣어 직접 열리는지 봅니다. 따옴표가 빠지지 않았는지도 확인합니다.</td></tr><tr><td>배너가 너무 크거나 잘린다</td><td>이미지 코드에 <code>width=&quot;170&quot;</code>이 있는지, 이미지 세로가 600px 이내인지 확인합니다.</td></tr><tr><td>배너는 보이는데 클릭이 안 된다</td><td><code>&lt;a href=&quot;...&quot;&gt;</code>의 주소가 정확한지, 끝에 <code>&lt;/a&gt;</code>가 있는지 확인합니다.</td></tr><tr><td>등록이 거부되거나 일부가 사라진다</td><td>위젯 코드는 한글 1천 자, 영문 2천 자까지 등록할 수 있고, 일부 위젯 코드나 HTML 태그는 제한될 수 있습니다. 위의 기본 코드처럼 짧게 줄여 다시 시도합니다.</td></tr><tr><td>등록했는데 블로그에 안 보인다</td><td>레이아웃 화면에서 위젯을 사이드바로 옮겼는지, 나가기 전에 <strong>적용</strong>을 눌렀는지 확인합니다.</td></tr><tr><td>20개가 넘어서 추가가 안 된다</td><td>위젯은 최대 20개까지 등록할 수 있습니다. 안 쓰는 위젯을 지운 뒤 다시 등록합니다.</td></tr><tr><td>코드를 고치고 싶다</td><td>위젯 사용 설정에서 해당 위젯의 <strong>X</strong> 버튼으로 삭제하고 적용한 뒤, 고친 코드로 다시 등록합니다.</td></tr></tbody></table><blockquote><p><strong>안전 팁:</strong> 코드를 고치기 전에 기존 HTML을 메모장에 복사해 두세요. 문제가 생기면 이전 코드로 되돌릴 수 있습니다.</p></blockquote><h2 id="한-줄-요약"><a href="#한-줄-요약" class="headerlink" title="한 줄 요약"></a>한 줄 요약</h2><p><strong>관리 → 꾸미기 설정 → 레이아웃·위젯 설정 → 위젯 직접 등록 → 코드 붙여넣기·미리보기 → 등록 → 위치 이동 → 적용 → 클릭 테스트</strong></p><p>화면 이름은 네이버 블로그 업데이트나 사용 중인 스킨에 따라 조금 다르게 보일 수 있습니다.</p><h2 id="자주-묻는-질문"><a href="#자주-묻는-질문" class="headerlink" title="자주 묻는 질문"></a>자주 묻는 질문</h2><h3 id="Q-네이버-블로그-위젯-크기는-몇-px로-만들어야-하나요"><a href="#Q-네이버-블로그-위젯-크기는-몇-px로-만들어야-하나요" class="headerlink" title="Q. 네이버 블로그 위젯 크기는 몇 px로 만들어야 하나요?"></a>Q. 네이버 블로그 위젯 크기는 몇 px로 만들어야 하나요?</h3><p>네이버 블로그 고객센터는 최적화된 크기를 가로 170px, 세로는 최대 600px로 안내합니다. 이 크기를 넘으면 위젯이 잘려 보일 수 있습니다.</p><h3 id="Q-위젯은-몇-개까지-등록할-수-있나요"><a href="#Q-위젯은-몇-개까지-등록할-수-있나요" class="headerlink" title="Q. 위젯은 몇 개까지 등록할 수 있나요?"></a>Q. 위젯은 몇 개까지 등록할 수 있나요?</h3><p>고객센터 안내 기준으로 최대 20개까지 등록할 수 있습니다.</p><h3 id="Q-위젯-코드가-길면-등록이-안-되나요"><a href="#Q-위젯-코드가-길면-등록이-안-되나요" class="headerlink" title="Q. 위젯 코드가 길면 등록이 안 되나요?"></a>Q. 위젯 코드가 길면 등록이 안 되나요?</h3><p>위젯 코드는 한글 1천 자, 영문 2천 자까지 등록할 수 있다고 안내되어 있습니다. 또 일부 위젯 코드나 HTML 태그는 등록이 제한될 수 있습니다.</p><h3 id="Q-등록했는데-블로그에-배너가-안-보여요"><a href="#Q-등록했는데-블로그에-배너가-안-보여요" class="headerlink" title="Q. 등록했는데 블로그에 배너가 안 보여요."></a>Q. 등록했는데 블로그에 배너가 안 보여요.</h3><p>레이아웃·위젯 설정 화면에서 새 위젯을 사이드바 칸으로 끌어다 놓았는지, 화면을 나가기 전에 적용을 눌렀는지 확인하세요. 그다음 내 블로그를 새로고침합니다.</p><h3 id="Q-휴대폰에서-만든-위젯도-등록할-수-있나요"><a href="#Q-휴대폰에서-만든-위젯도-등록할-수-있나요" class="headerlink" title="Q. 휴대폰에서 만든 위젯도 등록할 수 있나요?"></a>Q. 휴대폰에서 만든 위젯도 등록할 수 있나요?</h3><p>고객센터의 위젯 직접 등록 안내는 PC 기준입니다. PC에서 내 블로그 관리에 접속해 진행하세요.</p><blockquote><p><strong>출처</strong></p><ul><li><a href="https://help.naver.com/service/5593/contents/15275?osType=PC&lang=ko">네이버 블로그 고객센터 — 위젯 직접 등록 방법</a> (크기 기준, 최대 20개, 코드 길이, 위치 변경·삭제 방법)</li></ul><p>본문 캡처 화면은 이 튜토리얼 원본 작성자가 제공한 예시이며, 계정 이름 등 개인 정보는 가리거나 잘라 냈습니다. 네이버와 이 블로그는 제휴 관계가 아닙니다.</p></blockquote>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/28/naver-blog-sidebar-widget-register/</id>
    <link href="https://devlog.moonlang.com/2026/09/28/naver-blog-sidebar-widget-register/"/>
    <published>2026-09-28T03:50:00.000Z</published>
    <summary>네이버 블로그 관리 → 꾸미기 설정 → 레이아웃·위젯 설정 → 위젯 직접 등록 순서로 사이드바에 클릭되는 배너를 다는 방법. 가로 170px·세로 600px·최대 20개 기준과 복사용 코드, 문제 해결표, 체크리스트.</summary>
    <title>네이버 블로그 사이드바에 배너 위젯 다는 법 — 위젯 직접 등록 순서</title>
    <updated>2026-09-29T06:49:51.951Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Google" scheme="https://devlog.moonlang.com/tags/Google/"/>
    <category term="Gemini" scheme="https://devlog.moonlang.com/tags/Gemini/"/>
    <category term="Connected Apps" scheme="https://devlog.moonlang.com/tags/Connected-Apps/"/>
    <category term="생산성 도구" scheme="https://devlog.moonlang.com/tags/%EC%83%9D%EC%82%B0%EC%84%B1-%EB%8F%84%EA%B5%AC/"/>
    <content>
      <![CDATA[<p>AI 도우미가 쓸모 있어지는 순간은 대개 이미 쓰는 도구에 손이 닿을 때라고 저는 생각합니다. 9월 23일 구글이 Gemini의 <strong>연결 앱(Connected Apps)</strong> 을 14개 늘렸다는 소식을 그런 관점에서 읽었습니다. <a href="https://blog.google/innovation-and-ai/products/gemini-app/new-connected-apps-gemini/">구글 공식 블로그 글</a>은 Gemini 앱 그룹 제품 관리자 마이 로우(Mai Lowe)가 썼고, 탭을 오가지 않고 Gemini 대화창 안에서 프로젝트 관리, 디자인, 운동 계획까지 처리하게 하겠다는 내용입니다.</p><p><em>앱 목록은 구글 공식 블로그 글(2026-09-23), 사용 방법과 조건은 Gemini 앱 고객센터의 연결 앱 문서를 기준으로 했습니다.</em></p><h2 id="14개-앱-하나의"><a href="#14개-앱-하나의" class="headerlink" title="14개 앱, 하나의 @"></a>14개 앱, 하나의 @</h2><p>새로 들어온 앱은 세 분야로 나뉩니다. 생산성 쪽은 Airtable, Linear, monday.com, PandaDoc, Wispr AI, Zoho 여섯 개로, 구글은 프로젝트 관리, 데이터베이스 정리, 메모 받아쓰기를 예로 들었습니다. 창작 쪽은 Adobe, Picsart, Squarespace, Webflow 네 개로 시각 자료 디자인과 웹사이트 만들기에 쓰입니다. 생활 쪽은 apartments.com, Experian, Peloton, SeatGeek 네 개로 집 찾기, 신용 조회, 운동 계획, 티켓 찾기에 쓰입니다.</p><p><img src="/images/posts/gemini-connected-apps-2026-09/01-hub.svg" alt="@ 멘션 하나로 생산성 6개, 창작 4개, 생활 4개 앱을 부르는 구조"></p><p>쓰는 방법은 간단합니다. Gemini 설정의 연결 앱 메뉴에서 켜거나, 대화창에 <code>@</code>를 입력해 앱을 고르거나, 그냥 그 앱을 써 달라고 말하면 됩니다. <a href="https://support.google.com/gemini/answer/13695044?hl=en">고객센터 문서</a>에 따르면 아직 연결하지 않은 앱을 고르면 바로 연결되거나 권한을 묻는 창이 뜹니다. 블로그 글은 9월 23일부터 순차 배포된다고 했습니다.</p><p>목록을 보면 생산성 도구는 업무용 SaaS가 많아서, 이미 이런 도구로 일하는 팀이라면 대화 안에서 바로 불러 쓸 수 있게 됐습니다. 반면 생활 분야의 apartments.com(집 찾기)이나 Experian(신용 조회)은 서비스 성격상 미국 사용자를 겨냥한 앱으로 보입니다.</p><h2 id="설정-하나가-많은-걸-정합니다"><a href="#설정-하나가-많은-걸-정합니다" class="headerlink" title="설정 하나가 많은 걸 정합니다"></a>설정 하나가 많은 걸 정합니다</h2><p>고객센터 문서를 읽다 보면 조건이 하나 눈에 띕니다. Gemini에 로그인해야 하는 건 당연하고, <strong>활동 기록 유지(Keep Activity)</strong> 가 꺼져 있으면 웹(gemini.google.com)과 iOS에서는 연결 앱을 아예 쓸 수 없습니다. 안드로이드에서도 기기 도우미, 전화, 메시지, WhatsApp만 남습니다. 개인정보 때문에 활동 기록을 꺼 둔 분이라면 이번 앱들을 쓰려면 그 설정부터 다시 생각해야 한다는 뜻입니다.</p><p><img src="/images/posts/gemini-connected-apps-2026-09/02-activity.svg" alt="활동 기록 유지 설정이 켜져 있으면 웹·iOS·안드로이드에서 연결 앱을 쓰고, 꺼져 있으면 안드로이드 일부 기능만 가능"></p><p>문서는 설정의 연결 앱 목록이 쓰는 Gemini 앱, 기기, 국가 등에 따라 다르게 보인다고 적었고, 회사·학교 계정은 규칙이 다르니 별도 문서를 보라고 안내합니다. 연결한 앱은 언제든 끊을 수 있습니다. MCP 서버를 연결해 직접 만든 앱이나 서드파티 앱을 붙이는 방법도 문서에 있어서, 이번 14개 말고도 필요한 도구를 직접 붙일 길이 열려 있습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>구글 블로그 글은 국가를 밝히지 않았습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> 고객센터 문서도 연결 앱 제공 여부가 지역, 언어, 기기, Gemini 앱에 따라 다르다고만 적었습니다. 가장 확실한 확인 방법은 Gemini 설정의 연결 앱 목록에 이 앱들이 보이는지 직접 보는 것입니다.</p><p>결국 연결 앱이 늘어날수록 AI는 더 많은 곳에 손을 뻗습니다. 편리함과 활동 기록 사이의 균형은 각자 정해야 할 몫으로 남습니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>Google 공식 블로그, Mai Lowe, “A new wave of Connected Apps is rolling out to Gemini” (2026-09-23): <a href="https://blog.google/innovation-and-ai/products/gemini-app/new-connected-apps-gemini/">https://blog.google/innovation-and-ai/products/gemini-app/new-connected-apps-gemini/</a></li><li>Gemini 앱 고객센터, “Use &amp; manage Connected Apps in Gemini”: <a href="https://support.google.com/gemini/answer/13695044?hl=en">https://support.google.com/gemini/answer/13695044?hl=en</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/gemini-connected-apps-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/gemini-connected-apps-2026-09/"/>
    <published>2026-09-27T08:20:00.000Z</published>
    <summary>구글이 9월 23일 Gemini에 새로 연결한 앱 14개를 정리했습니다. 생산성·창작·생활 분야별 목록, 쓰는 방법, 활동 기록 설정 같은 사용 조건, 한국 사용자 관점의 확인 사항을 공식 블로그와 고객센터 문서 기준으로 담았습니다.</summary>
    <title>Gemini에 연결 앱 14개 추가 — Adobe, Linear, Airtable을 @멘션으로 부른다</title>
    <updated>2026-09-29T06:49:32.499Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Qwen" scheme="https://devlog.moonlang.com/tags/Qwen/"/>
    <category term="음성 AI" scheme="https://devlog.moonlang.com/tags/%EC%9D%8C%EC%84%B1-AI/"/>
    <category term="Alibaba" scheme="https://devlog.moonlang.com/tags/Alibaba/"/>
    <category term="동시통역" scheme="https://devlog.moonlang.com/tags/%EB%8F%99%EC%8B%9C%ED%86%B5%EC%97%AD/"/>
    <category term="번역" scheme="https://devlog.moonlang.com/tags/%EB%B2%88%EC%97%AD/"/>
    <content>
      <![CDATA[<p>기계 동시통역 이야기는 보통 속도에서 시작합니다. 얼마나 빨리 번역이 나오느냐입니다. 알리바바 Qwen 팀이 공개한 <strong>Qwen3.8-LiveTranslate</strong> 소개 글은 제목부터 다른 질문을 던집니다. “누가 말했는지 알고, 뜻을 옮긴다.” 소개 글은 9월 20일 <a href="https://www.alibabacloud.com/blog/qwen3-8-livetranslate-names-the-speaker--carries-the-meaning-_603581">Alibaba Cloud 커뮤니티 블로그</a>에 올라왔고, 9월 22일 알리바바 클라우드의 연례 행사 압사라(Apsara) 콘퍼런스 <a href="https://www.alibabacloud.com/en/press-room/alibaba-unveils-roadmap-on-full-stack-ai-strategy?_p_lc=1">보도자료</a>에서도 새 멀티모달 모델로 소개됐습니다.</p><p><em>기능과 성능은 Qwen 팀 소개 글(2026-09-20)과 알리바바 보도자료(2026-09-22), 가격과 사용 조건은 Alibaba Cloud Model Studio 모델 문서를 기준으로 했습니다. 성능 수치는 알리바바가 발표한 값입니다.</em></p><h2 id="누가-말했는지까지-옮깁니다"><a href="#누가-말했는지까지-옮깁니다" class="headerlink" title="누가 말했는지까지 옮깁니다"></a>누가 말했는지까지 옮깁니다</h2><p>회의처럼 여러 사람이 번갈아 말하는 자리에서 통역이 헷갈리는 건 번역보다 화자입니다. 이번 모델은 실시간으로 화자를 나누고, 문장마다 누가 말했는지 붙입니다. 통역 음성이 원래 화자의 목소리 톤을 더 안정적으로 따라가게 하는 데도 이 정보를 씁니다.</p><p>구조는 Hybrid-MoE 기반의 Thinker–Talker 두 모듈입니다. Thinker가 영상, 음성, 원문, 번역을 시간 순서대로 한 흐름에 엮어 이해와 번역을 하고, Talker가 그 번역을 원래 화자의 음색으로 읽어 줍니다. 앞서 나온 내용을 참고해 사람 이름이나 전문 용어, 지시어의 모호함을 줄이는 것도 Thinker의 몫입니다. 원문과 번역을 한 화면에 나란히 내보낼 수 있어서 자막으로 쓰거나 원문을 확인하기도 좋습니다.</p><p><img src="/images/posts/qwen3-8-livetranslate-2026-09/01-thinker.svg" alt="화자 A와 B의 말을 Thinker가 이해·번역하고 Talker가 원래 목소리 톤으로 읽어 주는 구조"></p><h2 id="0-5초가-줄었습니다"><a href="#0-5초가-줄었습니다" class="headerlink" title="0.5초가 줄었습니다"></a>0.5초가 줄었습니다</h2><p>그래도 속도는 중요합니다. 말을 듣고 통역이 나오기까지의 평균 지연(LAAL)이 이전 세대 2.8초에서 2.3초로 줄었다고 합니다. 이미 들은 음성과 이미 만든 번역을 캐시해 다시 쓰는 구조로 바꾼 덕분이라고 설명합니다. 0.5초는 작아 보이지만, 대화 한가운데서는 상대가 기다린다고 느끼느냐 마느냐를 가르는 차이일 수 있습니다.</p><p><img src="/images/posts/qwen3-8-livetranslate-2026-09/02-latency.svg" alt="평균 통역 지연이 이전 세대 2.8초에서 2.3초로 줄어든 비교"></p><p>지원 언어는 음성 입력·텍스트 출력이 60개, 음성 출력이 29개이고, 한국어는 양쪽 모두 들어 있습니다. 한국어 말을 영어 음성으로, 영어 말을 한국어 음성으로 바로 옮기는 구성이 가능하다는 뜻입니다.</p><h2 id="API로-쓰려면"><a href="#API로-쓰려면" class="headerlink" title="API로 쓰려면"></a>API로 쓰려면</h2><p><a href="https://www.alibabacloud.com/help/en/model-studio/qwen3-8-livetranslate-flash-realtime">Model Studio 모델 문서</a>에 따르면 모델 ID는 <code>qwen3.8-livetranslate-flash-realtime</code>이고 WebSocket Realtime API로 부릅니다. 입력은 음성과 이미지, 출력은 텍스트와 음성입니다. 함수 호출, 웹 검색, 배치 처리, 파인튜닝은 지원하지 않습니다. 문맥 창은 53,248토큰이고, 분당 요청은 10회로 제한됩니다. 대규모 서비스라면 이 한도부터 확인해야 합니다.</p><p>싱가포르 리전(문서 표기 “International”)의 원래 가격은 100만 토큰당 음성 입력 7.5달러, 이미지 입력 0.55달러, 텍스트 출력 20달러, 음성 출력 30달러입니다(한시 할인 제외). 중국(베이징) 리전은 이보다 조금 싸게 책정돼 있습니다.</p><p>압사라 보도자료에는 음성 인식(Qwen-Audio-3.1-ASR), 음성 합성(Qwen-Audio-3.1-TTS), 실시간 대화(Qwen-Audio-3.1-Realtime) 모델과 대본에서 대사와 배경음을 한꺼번에 만드는 Qwen-Audio-3.1-TTS-Next도 함께 실렸습니다. 차세대 모델 Qwen 4는 아직 훈련 중이라고 밝혔고, 출시일은 없습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>알리바바는 한국 출시를 따로 발표하지 않았습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> 다만 Model Studio 문서에 “International” 범위의 싱가포르 리전 가격이 공개돼 있어, 한국 개발자도 국제 리전 계정으로 API를 쓸 수 있을 것으로 보입니다. 이는 문서 구성에서 끌어낸 추론이고, 가입과 결제 가능 여부는 직접 확인해야 합니다. 한국어 입력과 음성 출력은 공식 지원 언어 목록에 들어 있습니다.</p><p>통역이 “말”만이 아니라 “사람”을 옮기기 시작했다는 점이 이번 발표에서 가장 오래 남는 부분입니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>Alibaba Cloud Community, “Qwen3.8-LiveTranslate: Names the Speaker. Carries the Meaning.” (2026-09-20): <a href="https://www.alibabacloud.com/blog/qwen3-8-livetranslate-names-the-speaker--carries-the-meaning-_603581">https://www.alibabacloud.com/blog/qwen3-8-livetranslate-names-the-speaker--carries-the-meaning-_603581</a></li><li>Alibaba Cloud 보도자료, “Alibaba Unveils Roadmap on Full-Stack AI Strategy from Chips, Cloud Infrastructure, Models to Agents” (2026-09-22): <a href="https://www.alibabacloud.com/en/press-room/alibaba-unveils-roadmap-on-full-stack-ai-strategy?_p_lc=1">https://www.alibabacloud.com/en/press-room/alibaba-unveils-roadmap-on-full-stack-ai-strategy?_p_lc=1</a></li><li>Alibaba Cloud Model Studio, “qwen3.8-livetranslate-flash-realtime” 모델 문서: <a href="https://www.alibabacloud.com/help/en/model-studio/qwen3-8-livetranslate-flash-realtime">https://www.alibabacloud.com/help/en/model-studio/qwen3-8-livetranslate-flash-realtime</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/qwen3-8-livetranslate-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/qwen3-8-livetranslate-2026-09/"/>
    <published>2026-09-27T08:15:00.000Z</published>
    <summary>알리바바 Qwen 팀이 9월 공개하고 압사라 콘퍼런스에서 소개한 동시통역 모델 Qwen3.8-LiveTranslate를 정리했습니다. 지연 시간 개선, 화자 분리, 지원 언어, API 가격과 한국 개발자 관점의 확인 사항을 공식 자료 기준으로 담았습니다.</summary>
    <title>알리바바 Qwen3.8-LiveTranslate — 화자를 구분하는 동시통역 모델, 한국어도 음성 출력</title>
    <updated>2026-09-29T06:49:32.471Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="OpenAI" scheme="https://devlog.moonlang.com/tags/OpenAI/"/>
    <category term="GPT-Live-1" scheme="https://devlog.moonlang.com/tags/GPT-Live-1/"/>
    <category term="음성 AI" scheme="https://devlog.moonlang.com/tags/%EC%9D%8C%EC%84%B1-AI/"/>
    <category term="API" scheme="https://devlog.moonlang.com/tags/API/"/>
    <category term="음성 에이전트" scheme="https://devlog.moonlang.com/tags/%EC%9D%8C%EC%84%B1-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8/"/>
    <content>
      <![CDATA[<p>음성 비서와 대화가 어색해지는 순간은 대개 타이밍에서 옵니다. 상대가 말을 다 마쳐야 내 차례가 오고, 잠깐 생각하느라 멈추면 그새 끼어듭니다. 9월 10일 OpenAI가 API로 공개한 <strong>GPT-Live-1</strong>은 바로 그 문제를 겨냥한 모델입니다. <a href="https://openai.com/index/introducing-gpt-live-1-in-the-api/">공식 발표</a>에 따르면 ChatGPT에 먼저 들어갔던 모델을 개발자에게 연 것이고, 핵심은 듣기와 말하기를 동시에 하는 <strong>전이중(full-duplex) 대화</strong>입니다.</p><p><em>기능, 성능, 가격은 OpenAI 공식 발표문(2026-09-10)과 OpenAI 개발자 커뮤니티 공지를 기준으로 했습니다. 벤치마크는 OpenAI가 측정한 값입니다.</em></p><h2 id="세-단계를-한-모델로"><a href="#세-단계를-한-모델로" class="headerlink" title="세 단계를 한 모델로"></a>세 단계를 한 모델로</h2><p>지금까지 음성 에이전트는 대개 세 단계를 이어 붙였습니다. 음성을 글로 바꾸고(STT), 언어 모델이 답을 만들고, 그 답을 다시 음성으로 바꾸는(TTS) 방식입니다. OpenAI는 단계가 넘어갈 때마다 지연이 생기고, 타이밍과 맥락과 대화의 리듬을 잃기 쉽다고 설명합니다. 누가 끼어들거나 멈추거나 말을 바꿀 때 무엇을 할지도 개발자가 직접 짜야 했습니다. GPT-Live-1은 들어오는 소리와 나가는 소리를 한 모델이 함께 처리합니다.</p><p><img src="/images/posts/openai-gpt-live-1-api-2026-09/01-chain.svg" alt="음성인식, 언어모델, 음성합성을 잇던 방식과 한 모델이 듣기와 말하기를 함께 하는 GPT-Live-1 비교"></p><p>숫자로도 차이를 보여 줍니다. 사용자가 말을 마친 뒤 답을 시작하기까지 0.798초로, 이전 모델 GPT-Realtime-2.1의 1.41초보다 짧습니다. 어학 앱 Speak는 초기 평가에서 학습자가 생각하느라 멈춘 사이 AI 튜터가 끼어드는 일이 이전 턴 방식보다 80% 가까이 줄었다고 밝혔습니다.</p><h2 id="말은-앞에서-생각은-뒤에서"><a href="#말은-앞에서-생각은-뒤에서" class="headerlink" title="말은 앞에서, 생각은 뒤에서"></a>말은 앞에서, 생각은 뒤에서</h2><p>제가 가장 흥미롭게 본 건 구조입니다. GPT-Live-1은 대화를 진행하는 역할만 맡고, 깊은 추론이나 도구 호출은 짝지은 <strong>백엔드 모델에 위임</strong>합니다. GPT-6 Astra 같은 OpenAI 모델도, 서드파티 모델도 붙일 수 있습니다. OpenAI는 일정 변경 같은 단순 대량 업무는 Luna에, 복잡한 고객 문의는 Astra에 맡기는 식으로 조합할 수 있다고 예를 들었습니다. 백엔드가 일하는 동안에도 음성 대화는 이어지고, Codex SDK와 연결하면 대화하는 사이 Codex가 저장소를 살펴보게 할 수도 있습니다.</p><p><img src="/images/posts/openai-gpt-live-1-api-2026-09/02-delegate.svg" alt="GPT-Live-1이 대화를 맡고 추론과 도구는 백엔드 모델에 위임하는 구조, 음성 분당 5센트와 백엔드 별도 과금"></p><p>이 조합으로 GPT-6 Astra(medium)를 백엔드로 붙였을 때, 항공·소매·통신 고객 지원 과제를 보는 Tau3에서 첫 시도 성공률이 83.6%였다고 합니다. GPT-Realtime-2.1은 45.7%였습니다. 음성은 Quartz, Ripple, Vesper 등 12종이 새로 추가됐고, 시스템 프롬프트로 어조와 속도와 말하기 스타일을 정할 수 있습니다. 브라우저는 WebRTC, 서버는 WebSocket, 전화는 SIP 같은 전화망 연동으로 붙입니다.</p><p>가격은 프런트엔드 음성 계층이 <strong>분당 0.05달러</strong>이고, 개발자 커뮤니티 공지에 따르면 초 단위로 과금됩니다. 백엔드 모델과 도구 사용료는 따로 붙습니다. 음성 요금만 보고 예산을 잡으면 안 되는 이유입니다.</p><h2 id="먼저-써-본-개발자들의-이야기"><a href="#먼저-써-본-개발자들의-이야기" class="headerlink" title="먼저 써 본 개발자들의 이야기"></a>먼저 써 본 개발자들의 이야기</h2><p>OpenAI 개발자 포럼 공지 스레드에는 첫 2주 동안 써 본 개발자들의 후기가 쌓였습니다. 공식 입장이 아니라 개별 경험이라는 전제로 옮기면, 음성 모델 자체에는 도구가 없어서 음성 모델이 위임 없이 “안녕히 가세요”라고 답해 버리면 통화 종료 같은 도구가 실행되지 않는 문제가 있었다고 합니다. 정해진 대화 순서를 따르는 서비스에서는 이전 Realtime 모델보다 흐름을 통제하기 어려웠다는 의견도 있었습니다. 반면 음성 품질과 배경 소음 처리는 크게 나아졌다는 평가도 함께 있었습니다. 말과 생각을 나눈 구조가 자연스러움을 주는 대신 설계 부담을 개발자에게 돌려준 셈입니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>OpenAI 발표문에는 국가별 제공 범위가 없고, 한국어를 따로 언급하지도 않았습니다. OpenAI는 앞으로 몇 달간 음성 선택지와 지원 언어를 늘리겠다고만 했습니다. <strong>한국 출시 여부와 한국어 품질은 발표되지 않았습니다.</strong> API라서 한국 개발자도 호출은 할 수 있을 것으로 보이지만 이는 추론이고, 한국어 음성 품질은 직접 테스트해 봐야 합니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>OpenAI, “Build more natural voice experiences with GPT-Live-1 in the API” (2026-09-10): <a href="https://openai.com/index/introducing-gpt-live-1-in-the-api/">https://openai.com/index/introducing-gpt-live-1-in-the-api/</a></li><li>OpenAI Developer Community, “Introducing GPT-Live-1 in the API” 공지와 사용자 댓글 (2026-09-10–23): <a href="https://community.openai.com/t/introducing-gpt-live-1-in-the-api/1396471">https://community.openai.com/t/introducing-gpt-live-1-in-the-api/1396471</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/openai-gpt-live-1-api-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/openai-gpt-live-1-api-2026-09/"/>
    <published>2026-09-27T08:10:00.000Z</published>
    <summary>OpenAI가 9월 10일 API로 공개한 음성 모델 GPT-Live-1을 정리했습니다. 전이중 대화, 백엔드 모델 위임 구조, 새 음성 12종, 가격과 연결 방식, 초기 개발자들이 짚은 한계를 공식 자료 기준으로 담았습니다.</summary>
    <title>GPT-Live-1 API 공개 — 듣고 말하기를 동시에 하는 OpenAI 음성 모델, 분당 5센트</title>
    <updated>2026-09-29T06:49:32.551Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Google" scheme="https://devlog.moonlang.com/tags/Google/"/>
    <category term="Gemini" scheme="https://devlog.moonlang.com/tags/Gemini/"/>
    <category term="Windows" scheme="https://devlog.moonlang.com/tags/Windows/"/>
    <category term="데스크톱 앱" scheme="https://devlog.moonlang.com/tags/%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1-%EC%95%B1/"/>
    <content>
      <![CDATA[<p>9월 10일 구글이 <strong>Windows용 Gemini 앱</strong>을 내놓았다는 소식에서 제 눈에 가장 먼저 들어온 건 기능 목록이 아니라 단축키 하나였습니다. Alt + Space. <a href="https://blog.google/innovation-and-ai/products/gemini-app/gemini-app-now-on-windows/">구글 공식 블로그 글</a>은 Gemini 앱 제품 관리 디렉터 에린 페티그루(Erin Pettigrew)가 썼고, Windows 10과 11에 설치해서 쓰는 데스크톱 앱을 소개합니다.</p><p><em>기능과 제공 범위는 구글 공식 블로그 글(2026-09-10)과 Google Workspace 업데이트 블로그(2026-09-11)를 기준으로 했습니다.</em></p><h2 id="작업-위에-바로-뜨는-창"><a href="#작업-위에-바로-뜨는-창" class="headerlink" title="작업 위에 바로 뜨는 창"></a>작업 위에 바로 뜨는 창</h2><p>Alt + Space를 누르면 지금 하던 작업 위에 Gemini 창이 뜹니다. 구글이 든 예는 문서 내용 사실 확인, 발표 제목 아이디어 몇 개 받기 같은 짧은 일입니다. 새 탭을 열고 다시 원래 창으로 돌아오는 몇 번의 이동이 단축키 하나로 줄어듭니다. 작은 차이 같지만 하루에 여러 번 반복하는 일이라면 흐름이 끊기는 횟수가 확실히 줄어듭니다.</p><p><img src="/images/posts/gemini-app-windows-2026-09/01-shortcut.svg" alt="작업 중인 창 위에 Alt + Space로 Gemini 창을 띄우는 개념도"></p><p>앱 안에서는 웹 Gemini에서 하던 일을 그대로 합니다. Gmail과 Google Drive에서 정보를 끌어와 프로젝트 요약 초안을 쓰게 하거나, 여러 단계짜리 작업을 구글의 개인 에이전트 Gemini Spark에 넘길 수 있습니다. Nano Banana로 발표용 이미지를 만들고 Gemini Omni로 영상을 만들 수도 있습니다. 구글은 앱이 가볍게 돌아서 PC를 느리게 만들지 않는다고 강조했고, 데스크톱 전용 기능은 앞으로 더 넣겠다고 했습니다.</p><h2 id="각주를-읽어야-보이는-조건"><a href="#각주를-읽어야-보이는-조건" class="headerlink" title="각주를 읽어야 보이는 조건"></a>각주를 읽어야 보이는 조건</h2><p>블로그 글에는 작은 각주가 있습니다. Gemini Spark와 Gemini Omni에는 “Google AI 구독 필요, 제공 여부는 지역마다 다름, 18세 이상”이라는 조건이 붙어 있습니다. 앱은 누구나 받을 수 있지만, 에이전트와 영상 생성은 구독과 지역 조건을 따로 확인해야 한다는 뜻입니다.</p><p><img src="/images/posts/gemini-app-windows-2026-09/02-sub.svg" alt="앱은 개인·Workspace 계정 모두 쓸 수 있고, Gemini Spark와 Omni 영상은 구독이 필요"></p><p>회사나 학교 계정이라면 <a href="https://workspaceupdates.googleblog.com/2026/09/the-gemini-desktop-app-is-now-available-for-Windows.html">Workspace 업데이트 블로그</a>를 보면 됩니다. 앱은 모든 Workspace 고객, Workspace Individual 구독자, 개인 Google 계정 사용자에게 제공되고, Gemini를 켜 둔 조직에서는 기본으로 켜져 있습니다. 관리 콘솔의 생성형 AI 설정으로 관리하며, 사용자 쪽에서 따로 끄고 켜는 설정은 없습니다. 신속 출시와 예약 출시 도메인 모두 바로 쓸 수 있습니다. 내려받는 곳은 gemini.google&#x2F;desktop입니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>구글은 앱이 <strong>전 세계에 제공된다</strong>고 밝혔지만 한국을 따로 적지는 않았습니다. 전 세계 제공이라는 표현을 보면 한국의 Windows 10·11 사용자도 앱을 내려받을 수 있을 것으로 보입니다. 다만 이는 발표 문구에서 끌어낸 추론입니다. Gemini Spark와 Gemini Omni는 구독이 필요하고 지역마다 제공 여부가 다르다고만 되어 있어, <strong>이 두 기능의 한국 제공 여부는 이번 발표로는 확인되지 않습니다.</strong></p><p>AI 도구가 얼마나 똑똑한지만큼, 얼마나 가까이 있는지도 중요하다고 저는 생각합니다. 이번 앱은 후자를 조금 더 좋게 만든 발표입니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>Google 공식 블로그, Erin Pettigrew, “The Gemini app is now available for Windows” (2026-09-10): <a href="https://blog.google/innovation-and-ai/products/gemini-app/gemini-app-now-on-windows/">https://blog.google/innovation-and-ai/products/gemini-app/gemini-app-now-on-windows/</a></li><li>Google Workspace Updates, “The Gemini desktop app is now available for Windows” (2026-09-11): <a href="https://workspaceupdates.googleblog.com/2026/09/the-gemini-desktop-app-is-now-available-for-Windows.html">https://workspaceupdates.googleblog.com/2026/09/the-gemini-desktop-app-is-now-available-for-Windows.html</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/gemini-app-windows-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/gemini-app-windows-2026-09/"/>
    <published>2026-09-27T08:05:00.000Z</published>
    <summary>구글이 9월 10일 공개한 Windows용 Gemini 앱을 정리했습니다. 단축키 호출, Gmail·Drive 연동, 이미지·영상 생성, 개인 계정과 Workspace 계정의 제공 범위, 구독이 필요한 기능을 공식 자료 기준으로 나눴습니다.</summary>
    <title>Gemini 윈도우 앱 출시 — Alt+Space 한 번으로 부르는 데스크톱 Gemini</title>
    <updated>2026-09-29T06:49:32.531Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Apple" scheme="https://devlog.moonlang.com/tags/Apple/"/>
    <category term="Siri AI" scheme="https://devlog.moonlang.com/tags/Siri-AI/"/>
    <category term="Apple Intelligence" scheme="https://devlog.moonlang.com/tags/Apple-Intelligence/"/>
    <category term="iOS 27" scheme="https://devlog.moonlang.com/tags/iOS-27/"/>
    <category term="아이폰" scheme="https://devlog.moonlang.com/tags/%EC%95%84%EC%9D%B4%ED%8F%B0/"/>
    <content>
      <![CDATA[<p>애플이 9월 14일 <strong>Siri AI</strong>를 내놓았습니다. 기존 Siri를 처음부터 다시 만든 새 버전이고, iOS 27을 비롯한 애플의 2027년판 운영체제와 함께 나온 차세대 Apple Intelligence의 중심입니다. 긴 <a href="https://www.apple.com/newsroom/2026/09/siri-ai-a-profoundly-more-capable-and-personal-assistant-is-here/">뉴스룸 발표</a>를 다 읽고 나서 제가 한국 독자에게 먼저 전하고 싶은 건 한 줄이었습니다. <strong>Siri AI는 영어 베타로 먼저 시작하고, 한국어는 프랑스어·일본어·포르투갈어·스페인어와 함께 “다음 달” 지원됩니다.</strong></p><p><em>기능, 지원 기기, 언어와 지역 제한은 애플 뉴스룸 발표(2026-09-14)와 그 각주를 기준으로 했습니다. “다음 달”은 발표일 기준이라 10월로 읽힙니다.</em></p><p><img src="/images/posts/apple-siri-ai-ios-27-2026-09/01-timeline.svg" alt="Siri AI 일정: 9월 14일 영어 베타, 다음 달 한국어 등 추가, 2026년 말 애플워치 요약 기능 영어 베타"></p><h2 id="새-Siri는-“내-것”을-압니다"><a href="#새-Siri는-“내-것”을-압니다" class="headerlink" title="새 Siri는 “내 것”을 압니다"></a>새 Siri는 “내 것”을 압니다</h2><p>애플이 든 예시가 변화를 잘 보여 줍니다. “가족이 방문 때 뭘 하자고 했지?”라고 물으면 Siri가 메시지에서 “같이 집안 레시피로 빵 굽자”는 말을 찾고, 예전에 받은 이메일에서 조리법을 꺼내고, 재료를 미리 알림 앱의 장보기 목록에 넣습니다. 메시지, 이메일, 사진에 흩어진 개인 정보를 이어 붙이는 것이 새 Siri의 핵심입니다.</p><p>화면도 봅니다. 스포츠 팀 웹사이트를 보다가 홈 경기 일정을 전부 캘린더에 넣어 달라고 할 수 있습니다. 웹 정보를 써서 거의 모든 주제에 답하고, 거기서 이어지는 대화도 됩니다. 지난 대화를 모아 보는 전용 Siri 앱이 생겼고, iCloud로 동기화해서 아이폰에서 시작한 대화를 맥이나 아이패드에서 이어 갈 수 있습니다. “Siri야” 외에 측면 버튼이나 다이내믹 아일랜드를 아래로 쓸어내리는 동작으로도 부릅니다.</p><p>Siri 밖에서도 바뀐 게 많습니다. 입력하는 곳이면 거의 어디서나 Siri에게 초안이나 수정을 부탁할 수 있고, 대부분의 서드파티 앱에서도 입력 중 자동 교정이 됩니다. 사진 앱에는 찍은 뒤 시점을 조정하는 공간 재구성(Spatial Reframing)과 사진 바깥을 넓히는 확장(Extend)이 들어갔습니다. Image Playground는 사실적인 이미지까지 만들 수 있게 됐고, 애플은 AI로 만들거나 고친 이미지를 식별하는 SynthID 표준 지원을 연내 업데이트로 넣겠다고 했습니다. Safari는 탭을 주제별로 정리하고 재입고나 가격 인하를 알려 주며, 단축어는 말로 설명하면 자동화를 만들어 줍니다.</p><h2 id="모델은-구글과-함께-만들었습니다"><a href="#모델은-구글과-함께-만들었습니다" class="headerlink" title="모델은 구글과 함께 만들었습니다"></a>모델은 구글과 함께 만들었습니다</h2><p>발표문에서 조용히 지나가기 쉬운 문장이 있습니다. 애플은 새 Apple Foundation Models를 <strong>구글과 Gemini 모델과 협력해</strong> 만들었다고 밝혔습니다. 모델은 기기 안과 애플의 Private Cloud Compute 서버에서 나뉘어 돌고, 애플은 클라우드에서 처리할 때도 개인 데이터를 저장하지 않는다고 설명합니다.</p><p><img src="/images/posts/apple-siri-ai-ios-27-2026-09/02-where.svg" alt="Apple Intelligence 모델이 기기 안과 Private Cloud Compute에서 나뉘어 도는 구조"></p><p>서버를 쓴다는 건 한도가 있다는 뜻이기도 합니다. Siri AI, 사진 편집, Image Playground처럼 서버 모델을 쓰는 기능에는 하루 사용 한도가 있고, 애플은 앞으로 유료로 더 많이 쓰는 방식을 내놓겠다고 했습니다. 지원 기기는 iPhone 16 전 모델 이상, iPhone 15 Pro와 15 Pro Max, M1 이상 아이패드와 맥 등이고, 더 자연스러운 음성과 정확해진 받아쓰기처럼 가장 강력한 온디바이스 모델이 필요한 기능은 iPhone 17 Pro·17 Pro Max, iPhone Air, iPhone 18 Pro 계열 등 일부 최신 기기와 메모리 12GB 이상인 M4 이후 아이패드·M3 이후 맥에서만 됩니다. Siri AI는 13세 미만은 쓸 수 없습니다. EU에서는 iOS·iPadOS·watchOS에서 Siri AI를 처음에는 제공하지 않고, 중국에서는 새 기능 전체를 당분간 제공하지 않습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>애플이 직접 한국어를 적었습니다. <strong>Siri AI 한국어 지원은 발표 기준 “다음 달” 시작됩니다.</strong> 그 전까지 Siri AI 베타는 영어로 설정된 기기에서만 제공됩니다. Apple Intelligence 자체는 지원 언어 목록에 한국어가 있지만, 애플은 일부 기능이 지역이나 언어에 따라 제공되지 않을 수 있다고 덧붙였습니다. 애플워치의 Live Rewind(직전 15초 대화를 글로 보여 주기)와 Siri Recap(대화 요약)은 2026년 말 영어 베타로 시작하고, 한국어 일정은 발표되지 않았습니다.</p><p>이번에는 드물게 한국어 일정이 달 단위로 적혔습니다. 한 달 뒤 한국어 Siri가 영어판만큼 자연스러울지, 그때 다시 써 보고 싶습니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>Apple Newsroom, “Siri AI, a profoundly more capable and personal assistant, is here” (2026-09-14): <a href="https://www.apple.com/newsroom/2026/09/siri-ai-a-profoundly-more-capable-and-personal-assistant-is-here/">https://www.apple.com/newsroom/2026/09/siri-ai-a-profoundly-more-capable-and-personal-assistant-is-here/</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/apple-siri-ai-ios-27-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/apple-siri-ai-ios-27-2026-09/"/>
    <published>2026-09-27T08:00:00.000Z</published>
    <summary>애플이 9월 14일 공개한 Siri AI와 새 Apple Intelligence 기능을 정리했습니다. 무엇이 달라졌는지, 지원 기기, 한국어 지원 일정, 사용량 제한과 지역 제한을 애플 뉴스룸 발표 기준으로 담았습니다.</summary>
    <title>애플 Siri AI 공개 — 한국어는 '다음 달', 지원 기기와 기다려야 할 기능 정리</title>
    <updated>2026-09-29T06:49:32.495Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="AI 에이전트" scheme="https://devlog.moonlang.com/tags/AI-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8/"/>
    <category term="Microsoft" scheme="https://devlog.moonlang.com/tags/Microsoft/"/>
    <category term="Copilot" scheme="https://devlog.moonlang.com/tags/Copilot/"/>
    <category term="Microsoft 365" scheme="https://devlog.moonlang.com/tags/Microsoft-365/"/>
    <content>
      <![CDATA[<p>마이크로소프트가 9월 25일 발표한 <strong>새 Microsoft Copilot</strong>을 읽으며 저는 Copilot이 “물어보는 곳”에서 “일을 맡기는 곳”으로 옮겨 가고 있다고 느꼈습니다. <a href="https://blogs.microsoft.com/blog/2026/09/25/introducing-the-new-copilot-with-home-code-and-autopilot/">공식 블로그 글</a>은 마이크로소프트 AI at Work 최고마케팅책임자 재러드 스패타로(Jared Spataro)가 썼고, Copilot 앱에 <strong>Home, Code, Autopilot</strong> 세 기능이 새로 들어간다는 내용입니다. 대부분은 회사에서 Microsoft 365를 쓰는 조직을 겨냥한 이야기입니다.</p><p><em>기능과 일정은 마이크로소프트 공식 블로그 글(2026-09-25)을 기준으로 했습니다. 발표문은 “Frontier 프로그램”이 무엇인지 따로 설명하지 않았고, 새 기능이 가장 먼저 풀리는 경로로만 언급했습니다. 글 속 “이달 말”은 발표 시점 기준인 9월 말입니다.</em></p><p><img src="/images/posts/microsoft-copilot-home-code-autopilot-2026-09/01-three.svg" alt="새 Copilot 앱의 세 기능 Home, Code, Autopilot과 각각의 역할"></p><h2 id="Home은-대화와-위임과-문서를-한-화면에-모읍니다"><a href="#Home은-대화와-위임과-문서를-한-화면에-모읍니다" class="headerlink" title="Home은 대화와 위임과 문서를 한 화면에 모읍니다"></a>Home은 대화와 위임과 문서를 한 화면에 모읍니다</h2><p>Home은 새 Copilot의 첫 화면입니다. 최근 작업을 보고, 도움받을 일을 제안받고, 하던 일을 이어 가는 곳입니다. 여기에 빠른 질문과 초안용 Chat, 그리고 일을 통째로 맡기는 Cowork가 함께 있습니다. Cowork에 제안요청서(RFP) 답변이나 고객 브리핑 같은 긴 작업을 맡기면 처음부터 끝까지 처리해 결과물을 돌려준다고 합니다.</p><p>Office in Copilot도 들어갑니다. Copilot 안에서 실제 Word 문서, Excel 통합문서, PowerPoint 발표 자료를 만들고 고치며, 팀원이 같은 파일을 실시간으로 함께 편집할 수 있습니다. 마이크로소프트는 앞으로는 모드를 고를 필요 없이 할 일을 말하면 Copilot이 Chat, Cowork, Code 중 알맞은 쪽으로 보내 주게 된다고 예고했습니다.</p><h2 id="Code는-“작은-앱”을-문서처럼-만들게-합니다"><a href="#Code는-“작은-앱”을-문서처럼-만들게-합니다" class="headerlink" title="Code는 “작은 앱”을 문서처럼 만들게 합니다"></a>Code는 “작은 앱”을 문서처럼 만들게 합니다</h2><p>제가 가장 흥미롭게 읽은 건 Code입니다. 마이크로소프트는 지금까지 지식 노동의 단위가 문서, 스프레드시트, 발표 자료였다면 여기에 작은 맞춤형 앱이라는 네 번째 단위를 더하겠다고 썼습니다. 앱, 추적표, 대시보드, 자동화를 말로 설명하면 Copilot이 방식을 골라 만들어 줍니다. 바탕화면 위젯이 될 수도 있고, 팀과 공유하는 클라우드 앱이 될 수도 있습니다.</p><p>GitHub Copilot과 같은 기반 기술을 쓰고, 격리된 샌드박스에서 돌며, 회사 테넌트 안에 호스팅할 수 있다고 합니다. 이렇게 만든 앱을 회사 Microsoft 365 환경 안에서 돌리는 Copilot Managed Runtime도 함께 발표됐고, 지금 프리뷰 중입니다.</p><h2 id="Autopilot은-프롬프트를-기다리지-않습니다"><a href="#Autopilot은-프롬프트를-기다리지-않습니다" class="headerlink" title="Autopilot은 프롬프트를 기다리지 않습니다"></a>Autopilot은 프롬프트를 기다리지 않습니다</h2><p>Autopilot은 전에 Scout라고 부르던 에이전트입니다. 이름, 역할, 목표를 주면 채널을 지켜보고, 스레드를 챙기고, 반복 업무를 돌리고, 며칠 뒤에 프로젝트를 다시 이어 갑니다. 마이크로소프트 설명으로는 회사 테넌트 안에서 자체 ID, 메모리, 컴퓨터, 작업 공간을 갖고, Teams와 Outlook에서 동료처럼 @멘션할 수 있으며 권한과 감사 기록이 뒤따릅니다. 클라우드에서 돌기 때문에 사용자가 자는 동안에도 일이 계속됩니다.</p><p>일정은 기능마다 다릅니다. Home은 앞으로 몇 주 안에 Frontier 프로그램부터 풀리고, Code는 9월 말 Frontier에 들어간 뒤 몇 주 안에 넓어지며 Microsoft 365 Premium·Pro 구독자에게는 연내 프리뷰로 제공됩니다. Autopilot은 9월 말 비공개 프리뷰로 확대됩니다.</p><h2 id="돈은-두-갈래로-나뉩니다"><a href="#돈은-두-갈래로-나뉩니다" class="headerlink" title="돈은 두 갈래로 나뉩니다"></a>돈은 두 갈래로 나뉩니다</h2><p>조직 담당자라면 과금 구조를 꼭 봐야 합니다. 일상적인 질문, 초안, 요약은 사용자 구독 라이선스(USL)로 처리되고, 요청마다 알맞은 모델을 고르는 Auto가 그 중심입니다. 반면 Cowork, Code, Autopilot처럼 오래 도는 에이전트 작업과 Astra, Fable 같은 최상위 모델은 사용량 기반 과금(UBB)입니다. 관리자가 그룹별로 쓸 수 있는 모델군을 정하고, 사용자가 남은 크레딧과 사용 내역을 Copilot 안에서 볼 수 있는 기능도 함께 나왔습니다.</p><p><img src="/images/posts/microsoft-copilot-home-code-autopilot-2026-09/02-billing.svg" alt="사용자 구독 라이선스와 사용량 기반 과금이 나뉘는 방식"></p><p>곧 나올 것도 예고됐습니다. 메일, 일정, Teams 스레드, 회의, 할 일을 모아 지금 챙길 것을 보여 주는 Today는 10월 비공개 프리뷰, 채널이나 회의의 맥락을 팀 전체가 공유하는 Teams의 @Copilot은 9월 말 비공개 프리뷰 예정입니다. 더 자세한 내용은 11월 17–20일 Microsoft Ignite에서 나온다고 합니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>발표문은 Frontier 프로그램과 프리뷰 단계만 적었고 국가는 밝히지 않았습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> 회사 계정이라면 IT 관리자가 Frontier 프로그램에 참여하고 있는지부터 확인하는 게 순서입니다.</p><p>기능 이름보다 제 눈에 오래 남은 건 과금 구조였습니다. 에이전트가 오래 일할수록 비용도 쌓입니다. “일을 맡긴다”는 경험이 이제 예산 항목이 됐다는 뜻입니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>The Official Microsoft Blog, Jared Spataro, “Introducing the new Copilot with Home, Code and Autopilot” (2026-09-25): <a href="https://blogs.microsoft.com/blog/2026/09/25/introducing-the-new-copilot-with-home-code-and-autopilot/">https://blogs.microsoft.com/blog/2026/09/25/introducing-the-new-copilot-with-home-code-and-autopilot/</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/microsoft-copilot-home-code-autopilot-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/microsoft-copilot-home-code-autopilot-2026-09/"/>
    <published>2026-09-27T07:55:00.000Z</published>
    <summary>마이크로소프트가 9월 25일 공개한 새 Copilot의 세 기능(Home, Code, Autopilot)을 정리했습니다. 각 기능이 하는 일, Frontier 프로그램 중심의 배포 일정, 구독형과 사용량 기반 과금의 구분을 공식 블로그 기준으로 담았습니다.</summary>
    <title>새 Microsoft Copilot — Home, Code, Autopilot은 각각 무엇이고 언제 쓸 수 있나</title>
    <updated>2026-09-29T06:49:32.567Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="DeepSeek" scheme="https://devlog.moonlang.com/tags/DeepSeek/"/>
    <category term="API 가격" scheme="https://devlog.moonlang.com/tags/API-%EA%B0%80%EA%B2%A9/"/>
    <category term="DeepSeek V4.1" scheme="https://devlog.moonlang.com/tags/DeepSeek-V4-1/"/>
    <category term="멀티모달" scheme="https://devlog.moonlang.com/tags/%EB%A9%80%ED%8B%B0%EB%AA%A8%EB%8B%AC/"/>
    <content>
      <![CDATA[<p>DeepSeek 발표는 늘 숫자가 많습니다. 9월 10일 나온 <strong>DeepSeek-V4.1-Flash</strong>도 그랬는데, 저는 그 숫자들 사이에서 두 가지가 가장 흥미로웠습니다. 모델이 입력과 출력에 서로 다른 크기의 두뇌를 쓴다는 점, 그리고 한국 시간으로 저녁에 쓰면 API 요금이 절반이 된다는 점입니다. <a href="https://www.deepseek.com/en/news/deepseek-v4-1-flash/">공식 발표</a>에 따르면 V4.1-Flash는 새 아키텍처 제품군에서 가장 작은 모델이고, 이미지를 기본으로 이해하는 멀티모달 모델입니다.</p><p><em>구조와 성능은 DeepSeek 공식 발표문과 API 변경 로그(2026-09-10), 가격은 DeepSeek API 문서의 Models &amp; Pricing 페이지를 기준으로 했습니다. 벤치마크는 DeepSeek가 발표한 값입니다.</em></p><h2 id="5-520억-개-중-일부만-깨어난다"><a href="#5-520억-개-중-일부만-깨어난다" class="headerlink" title="5,520억 개 중 일부만 깨어난다"></a>5,520억 개 중 일부만 깨어난다</h2><p>V4.1-Flash는 전체 5,520억 파라미터의 MoE(전문가 혼합) 모델입니다. 여기에 DeepSeek가 Causal Encoder–Decoder라고 부르는 새 구조를 얹었습니다. 입력을 읽을 때는 80억 개, 답을 만들 때는 160억 개 파라미터만 활성화됩니다. 읽는 일과 쓰는 일에 드는 힘을 다르게 나눈 셈이고, DeepSeek는 이를 비대칭 구조라고 부릅니다.</p><p><img src="/images/posts/deepseek-v4-1-flash-2026-09/01-asym.svg" alt="5,520억 파라미터 중 입력에는 80억, 출력에는 160억만 활성화되는 비대칭 구조"></p><p>KV 캐시도 줄었습니다. 이전 세대보다 GPU 메모리(HBM)는 4분의 1, SSD 저장 공간은 8분의 1만 필요하다고 합니다. DeepSeek는 에이전트 작업 비용에서 캐시 적중 요금이 차지하는 비중이 커서, 캐시를 줄이면 비용이 크게 줄어든다고 설명합니다. 성능은 변경 로그 기준으로 GPQA Diamond 90.9, DeepSWE v1.1 74.2, Terminal-Bench 4.0 31.2, 도구를 쓴 HLE 63.9입니다. 여러 곳의 테스트에서 상위 모델 V4-Pro보다 성능, 비용, 속도가 앞섰다고도 밝혔습니다.</p><h2 id="한국-시간으로-보면-요금표가-달라-보입니다"><a href="#한국-시간으로-보면-요금표가-달라-보입니다" class="headerlink" title="한국 시간으로 보면 요금표가 달라 보입니다"></a>한국 시간으로 보면 요금표가 달라 보입니다</h2><p>API 모델명은 <code>deepseek-flash</code>이고, 문맥 길이 100만 토큰, 최대 출력 38만 4천 토큰, 이미지 입력을 지원합니다. 이전 V4-Flash와 V4-Flash-Vision-Exp는 서비스를 끝냈고, 기존 이름으로 요청하면 당분간 V4.1-Flash가 Flash 요금으로 처리합니다. 새 가격은 9월 10일 04:00 UTC(한국 시간 13:00)부터 적용됐습니다.</p><p>피크 요금 기준 100만 토큰당 입력은 캐시 미적중 0.30달러, 캐시 적중 0.006달러이고 출력은 1.20달러입니다. 비피크에는 모두 절반입니다. 여기서 한국 사용자에게 중요한 건 피크 시간입니다. 가격 페이지의 피크는 평일 01:00–04:00, 06:00–10:00 UTC인데, 한국 시간으로 옮기면 <strong>평일 10:00–13:00, 15:00–19:00</strong>입니다. 그 밖의 시간과 주말, 중국 공휴일은 모두 비피크입니다.</p><p><img src="/images/posts/deepseek-v4-1-flash-2026-09/02-peak.svg" alt="한국 시간 평일 10–13시, 15–19시가 피크이고 나머지 시간은 반값"></p><p>한국 업무 시간과 거의 겹친다는 뜻입니다. 저라면 급하지 않은 대량 작업은 저녁이나 주말에 돌리도록 스케줄을 짜겠습니다. 그것만으로 비용이 절반이 됩니다.</p><h2 id="V4-Pro는-원래-계획과-달리-남았습니다"><a href="#V4-Pro는-원래-계획과-달리-남았습니다" class="headerlink" title="V4-Pro는 원래 계획과 달리 남았습니다"></a>V4-Pro는 원래 계획과 달리 남았습니다</h2><p>처음 발표문에는 9월 14일 04:00 UTC부터 모든 <code>deepseek-v4-pro</code> 요청을 V4.1-Flash로 넘기겠다고 적혀 있었습니다. 그런데 이후 API 변경 로그에서 방침이 바뀌었습니다. 사용자 요청에 따라 9월 14일 이후에도 V4-Pro API를 계속 제공하고 요금 방식도 그대로 둔다고 합니다. V4-Pro로 서비스를 만든 분이라면 변경 로그를 기준으로 삼으면 됩니다. 다음 상위 모델 V4.1-Pro는 예고만 됐고 날짜는 없습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>DeepSeek는 API 공지에서 국가별 제공 범위를 밝히지 않았습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> API에 국가 제한 문구는 없지만, 한국에서 가입과 결제가 되는지는 직접 확인해야 합니다. 앱에서 V4.1-Flash를 쓸 수 있는지도 이번 발표에는 나오지 않습니다.</p><p>큰 모델을 통째로 돌리지 않고 필요한 만큼만 깨우는 방식, 그리고 시간대별 요금. 두 가지 모두 결국 같은 질문에 대한 답처럼 보입니다. 같은 지능을 얼마나 싸게 공급할 수 있느냐는 질문입니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>DeepSeek, “Introducing DeepSeek-V4.1-Flash: smarter, faster, more efficient.” (2026-09-10): <a href="https://www.deepseek.com/en/news/deepseek-v4-1-flash/">https://www.deepseek.com/en/news/deepseek-v4-1-flash/</a></li><li>DeepSeek API Docs, Change Log (2026-09-10 항목): <a href="https://api-docs.deepseek.com/updates">https://api-docs.deepseek.com/updates</a></li><li>DeepSeek API Docs, Models &amp; Pricing: <a href="https://api-docs.deepseek.com/quick_start/pricing">https://api-docs.deepseek.com/quick_start/pricing</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/deepseek-v4-1-flash-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/deepseek-v4-1-flash-2026-09/"/>
    <published>2026-09-27T07:50:00.000Z</published>
    <summary>DeepSeek가 9월 10일 공개한 V4.1-Flash를 정리했습니다. 비대칭 인코더-디코더 구조, KV 캐시 절감, 새 API 가격과 피크·비피크 요금, V4-Pro 서비스 방침이 발표 뒤 바뀐 과정까지 공식 문서 기준으로 담았습니다.</summary>
    <title>DeepSeek V4.1-Flash 출시 — 이미지를 이해하는 새 구조의 경량 모델과 API 가격 인하</title>
    <updated>2026-09-29T06:49:32.495Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="xAI" scheme="https://devlog.moonlang.com/tags/xAI/"/>
    <category term="Grok" scheme="https://devlog.moonlang.com/tags/Grok/"/>
    <category term="API 가격" scheme="https://devlog.moonlang.com/tags/API-%EA%B0%80%EA%B2%A9/"/>
    <category term="Grok 4.7" scheme="https://devlog.moonlang.com/tags/Grok-4-7/"/>
    <category term="AI 코딩" scheme="https://devlog.moonlang.com/tags/AI-%EC%BD%94%EB%94%A9/"/>
    <content>
      <![CDATA[<p>Grok 4.7 발표문을 읽으면서 저는 xAI가 무엇을 자랑하는지보다 무엇을 그대로 뒀는지가 더 눈에 들어왔습니다. 가격입니다. 9월 21일(미국 시간) 나온 <strong>Grok 4.7</strong>은 Grok 4.6과 <strong>같은 가격, 같은 속도</strong>로 제공됩니다. <a href="https://x.ai/news/grok-4-7">공식 발표</a>는 이 모델을 코딩과 지식 업무용으로 가장 뛰어난 자사 모델이라고 소개합니다. xAI 공식 사이트에는 회사 이름이 SpaceXAI로 표기돼 있습니다.</p><p><em>기능, 가격, 벤치마크는 xAI 공식 발표문(2026-09-21)을 기준으로 했습니다. 파라미터 수처럼 공식 발표에 없는 내용은 Decrypt 보도임을 밝혀 적었습니다.</em></p><h2 id="오래-걸리는-일을-더-오래-붙잡는-모델"><a href="#오래-걸리는-일을-더-오래-붙잡는-모델" class="headerlink" title="오래 걸리는 일을 더 오래 붙잡는 모델"></a>오래 걸리는 일을 더 오래 붙잡는 모델</h2><p>xAI가 설명한 변화는 단순합니다. Grok 4.6보다 큰 기반 모델을 새로 썼고, 몇 시간씩 걸리는 어려운 문제 위주로 강화학습을 더 오래 돌렸습니다. 그래서 자기 작업을 검증하는 능력과 긴 문맥을 다루는 능력이 좋아졌다고 합니다. 문서와 발표 자료 작성도 나아져서, 전문직 업무를 보는 GDPval과 AA Briefcase에서 Grok 4.6보다 점수가 올랐다고 밝혔습니다.</p><p><a href="https://decrypt.co/378824/xai-launches-grok-4-7">Decrypt</a>는 한 걸음 더 들어갔습니다. Grok 4.7의 파라미터가 2.1조 개로 Grok 4.6(1.5조 개)보다 40% 늘었고, SpaceX의 엔지니어링 데이터로 추가 훈련했다고 전했습니다. 이 수치는 xAI 발표문에는 없습니다.</p><h2 id="표를-끝까지-읽으면-보이는-것"><a href="#표를-끝까지-읽으면-보이는-것" class="headerlink" title="표를 끝까지 읽으면 보이는 것"></a>표를 끝까지 읽으면 보이는 것</h2><p>xAI가 공개한 표에서 Grok 4.7(xHigh)은 Grok 4.6보다 모든 항목에서 높습니다. CursorBench 4.0은 40.4%에서 46.3%로, Terminal-Bench 4.0은 20.3%에서 37.6%로 올랐습니다. 전기공학 과제 EEBench(64.0%)와 법률 과제 Harvey Legal Agent(19.6%)에서는 표에 함께 실린 Anthropic의 Fable 5.1보다도 높습니다.</p><p>그런데 같은 표에서 코딩과 터미널 작업은 아직 Fable 5.1이 앞섭니다. CursorBench 51.8%, Terminal-Bench 57.9%입니다. 임상 추론 HealthBench Professional도 56.7% 대 62.1%로 뒤집니다. 자기 회사 발표 표에 이런 차이를 그대로 실었다는 점은 적어 둘 만합니다.</p><p><img src="/images/posts/xai-grok-4-7-2026-09/01-bench.svg" alt="CursorBench와 Terminal-Bench에서 Grok 4.6, Grok 4.7, Fable 5.1 점수 비교"></p><p>그 차이를 메우는 건 가격입니다. 같은 표에 따르면 100만 토큰당 Fable 5.1은 입력 10달러·출력 50달러이고, Grok 4.7은 입력 2달러·출력 6달러입니다. 출력만 놓고 보면 8배가 넘게 차이 납니다. 출력 속도가 두 배인 fast 변형은 가격도 두 배입니다.</p><p><img src="/images/posts/xai-grok-4-7-2026-09/02-price.svg" alt="100만 토큰당 출력 가격: Grok 4.7 6달러, Fable 5.1 50달러"></p><p>안전장치는 새로 만들었다고 합니다. 위험한 사이버 작업을 보는 자체 벤치마크 HackerBench v0.3에서 위험한 이중 용도 요청의 3.3%만 통과시켰고, LatchBio의 생물안전 벤치마크에서 62.4%로 1위였다고 밝혔습니다. 일부 보안 파트너에게는 초대제로 레드팀 기능을 열었습니다.</p><p>Grok 4.7은 Cursor와 Grok Build에서 바로 쓸 수 있고, Grok API와 서드파티 코딩 도구, 모델 라우터, 클라우드 플랫폼으로도 제공됩니다. Decrypt는 Grok 앱에서도 대기 명단 없이 바로 쓸 수 있다고 전했습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>xAI 발표문에는 국가별 제공 범위가 없습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> Cursor나 API처럼 한국에서도 이미 쓰는 개발 도구로 제공된다는 점을 보면 한국 개발자도 쓸 수 있을 것으로 보이지만, 이는 추론입니다.</p><p>제가 보기에 Grok 4.7은 1등을 노린 모델이라기보다 “이 가격에 이 정도”를 내세운 모델입니다. 모든 작업에 최상위 모델이 필요한 건 아니니, 이런 선택지가 있다는 것 자체가 쓸모 있습니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>xAI(SpaceXAI), “Introducing Grok 4.7” (2026-09-21): <a href="https://x.ai/news/grok-4-7">https://x.ai/news/grok-4-7</a></li><li>Decrypt, Jose Antonio Lanz, “xAI Launches Grok 4.7. It’s Bigger, But Late to the AI Frontier Party” (2026-09-21): <a href="https://decrypt.co/378824/xai-launches-grok-4-7">https://decrypt.co/378824/xai-launches-grok-4-7</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/xai-grok-4-7-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/xai-grok-4-7-2026-09/"/>
    <published>2026-09-27T07:45:00.000Z</published>
    <summary>xAI가 9월 21일 공개한 Grok 4.7을 정리했습니다. 새 기반 모델과 긴 강화학습, 벤치마크에서 앞선 부분과 뒤진 부분, 가격과 제공 채널, 한국 사용자 관점의 확인 사항을 공식 발표 기준으로 담았습니다.</summary>
    <title>Grok 4.7 출시 — 가격은 그대로, 오래 걸리는 코딩 작업에 힘을 준 xAI 새 모델</title>
    <updated>2026-09-29T06:49:32.475Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Claude Code" scheme="https://devlog.moonlang.com/tags/Claude-Code/"/>
    <category term="Claude" scheme="https://devlog.moonlang.com/tags/Claude/"/>
    <category term="Anthropic" scheme="https://devlog.moonlang.com/tags/Anthropic/"/>
    <category term="Claude Opus 5.5" scheme="https://devlog.moonlang.com/tags/Claude-Opus-5-5/"/>
    <category term="API 가격" scheme="https://devlog.moonlang.com/tags/API-%EA%B0%80%EA%B2%A9/"/>
    <content>
      <![CDATA[<p>“40% 싸졌다”는 말을 들으면 저는 먼저 무엇이 40%인지 확인합니다. 9월 22일 Anthropic이 공개한 <strong>Claude Opus 5.5</strong>가 그런 경우였습니다. <a href="https://www.anthropic.com/claude-opus-5-5">공식 발표</a>를 읽어 보면 토큰 가격을 40% 내린 게 아닙니다. 가격은 20% 내렸고, 나머지는 모델이 일을 더 적은 토큰으로 끝내서 생긴 차이입니다. 둘을 합치면 일반적인 작업에서 Opus 5보다 운영 비용이 40%쯤 줄어든다는 게 Anthropic의 계산입니다.</p><p><em>가격, 기능, 제공 범위는 Anthropic 공식 발표문(2026-09-22)을 기준으로 했고 Reuters 보도로 교차 확인했습니다. 벤치마크는 Anthropic이 측정한 값입니다.</em></p><p><img src="/images/posts/anthropic-claude-opus-5-5-2026-09/01-cost.svg" alt="토큰 가격 20% 인하와 과제당 토큰 감소가 합쳐져 비용이 약 40% 줄어든다는 구조"></p><h2 id="가격표에서-제가-본-숫자"><a href="#가격표에서-제가-본-숫자" class="headerlink" title="가격표에서 제가 본 숫자"></a>가격표에서 제가 본 숫자</h2><p>Opus 5.5는 새 Claude 5.5 제품군의 첫 모델이고, Anthropic은 대부분의 작업에서 최상위 모델 Claude Fable 5.1 수준이라고 설명합니다. 100만 토큰당 입력 4달러, 출력 20달러로 Opus 5(5달러, 25달러)보다 20% 낮습니다. 제 눈에 더 크게 들어온 건 캐시 읽기입니다. 0.50달러에서 0.20달러로 60% 내렸는데, Anthropic 스스로 에이전트와 코딩 작업 비용의 대부분이 캐시 읽기라고 적었습니다. 캐시 쓰기는 5달러입니다. 출력 속도는 Opus 5보다 30% 넘게 빨라졌고, Claude Code와 Claude Platform에서는 최대 2.5배 빠른 Fast 모드를 입력 8달러, 출력 40달러에 쓸 수 있습니다.</p><p>긴 작업 사례도 몇 개 실렸습니다. 한 초기 테스터는 68만 줄짜리 코드 마이그레이션을 하루 안에 끝냈고, Anthropic 내부 테스트에서는 웹 트래픽 분산 소프트웨어 HAProxy를 C에서 Rust로 옮기는 일을 Fable 5.1보다 빨리(9.5시간 대 12시간) 마쳤다고 합니다. 벤치마크로는 Terminal-Bench 4.0 66.4%, CursorBench 4.0 57.8%, GDPval-AA v2.1 1846점을 발표했습니다. 다만 Anthropic은 이 수준에서는 벤치마크 차이가 실제 체감 차이를 잘 보여 주지 못한다고 먼저 선을 그었습니다. 저는 이 문장이 표보다 더 정직하다고 느꼈습니다.</p><p>글쓰기도 달라졌다고 합니다. Anthropic은 Opus 5에 대해 가장 많이 들은 피드백 중 하나가 글쓰기와 소통 방식이었다고 직접 적었고, Opus 5.5는 핵심을 앞에 두고 전문 용어를 덜 쓰며 사용자가 준 작성 규칙을 더 잘 따른다고 설명합니다.</p><h2 id="모든-요청을-Opus-5-5가-받지는-않습니다"><a href="#모든-요청을-Opus-5-5가-받지는-않습니다" class="headerlink" title="모든 요청을 Opus 5.5가 받지는 않습니다"></a>모든 요청을 Opus 5.5가 받지는 않습니다</h2><p>이번 발표에서 가장 눈여겨볼 부분은 안전장치입니다. 일상적인 버그 찾기와 수정은 그대로 되지만, 대부분의 사이버보안 작업은 <strong>Opus 4.8로 자동 전환</strong>됩니다. 생물학 분야에도 Fable 5.1과 같은 안전장치가 걸리고, 연구 목적이라면 새로 생긴 Life Sciences Verification Program에 기관 단위로 신청해야 합니다. 검증된 보안 전문가를 위한 Cyber Verification Program에는 곧 Opus 5.5가 추가될 예정입니다.</p><p><img src="/images/posts/anthropic-claude-opus-5-5-2026-09/02-routing.svg" alt="일반 요청은 Opus 5.5가 답하고, 대부분의 사이버보안 작업은 Opus 4.8로 넘어가는 흐름"></p><p>출시 전에는 Frontier Design, METR 같은 외부 기관이 테스트했습니다. 격리 경계를 넘으려는 시도를 보는 새 평가에서는 Opus 5나 Claude Mythos 5.1보다 시도 빈도가 약 85% 낮았다고 합니다.</p><p>API를 쓰는 분이라면 두 가지를 미리 확인하는 게 좋겠습니다. 2026년 8월 31일 이후 만든 API 계정에서는 이전 문맥을 편집해 Claude의 추론을 빼내는 방식을 막는 preserved thinking이 적용됩니다. 그리고 Opus 5.5는 thinking 모드를 끈 상태로는 제공되지 않습니다. 이전 Opus처럼 데이터 무보존 옵션은 그대로 있고, 모델명은 <code>claude-opus-5-5</code>입니다.</p><p>구독 사용자에게도 소식이 있습니다. Pro, Max, Team, 좌석 기반 Enterprise 요금제의 5시간 사용 한도가 늘었고, 사용 한도 초기화를 한 번 받아 저장해 뒀다가 원할 때 쓸 수 있습니다. Opus 5.5는 AWS, Google Cloud, Microsoft Azure를 포함한 모든 플랫폼에서 제공되고, Sonnet 5.5와 Haiku 5.5는 “앞으로 몇 주 안에” 나온다고만 했습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>발표문에는 국가별 제공 범위가 없습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> “모든 플랫폼”이라는 표현과 국가 제한 문구가 없다는 점을 보면 기존 Claude 사용 지역에서 함께 쓸 수 있을 것으로 보이지만, 이는 추론입니다.</p><p>제가 이 발표에서 가져가는 건 두 가지입니다. 비용을 볼 때는 토큰 단가보다 과제당 비용을 봐야 한다는 것, 그리고 강한 모델일수록 어떤 요청은 다른 모델이 대신 답할 수 있다는 것입니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>Anthropic, “Introducing Claude Opus 5.5” (2026-09-22): <a href="https://www.anthropic.com/claude-opus-5-5">https://www.anthropic.com/claude-opus-5-5</a></li><li>Reuters(Moneycontrol 게재), “Anthropic launches Claude Opus 5.5, says new AI model is 40% cheaper to run” (2026-09-22): <a href="https://www.moneycontrol.com/artificial-intelligence/anthropic-launches-claude-opus-5-5-says-new-ai-model-is-40-cheaper-to-run-article-14035790.html">https://www.moneycontrol.com/artificial-intelligence/anthropic-launches-claude-opus-5-5-says-new-ai-model-is-40-cheaper-to-run-article-14035790.html</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/anthropic-claude-opus-5-5-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/anthropic-claude-opus-5-5-2026-09/"/>
    <published>2026-09-27T07:40:00.000Z</published>
    <summary>Anthropic이 9월 22일 공개한 Claude Opus 5.5를 정리했습니다. 토큰 가격과 캐시 가격, 구독 요금제 사용 한도 변화, 사이버·생물 분야 안전장치, API 사용자가 알아야 할 변경점을 공식 발표 기준으로 담았습니다.</summary>
    <title>Claude Opus 5.5 출시 — 가격은 20% 내리고 실제 비용은 40% 줄였다는 새 Opus</title>
    <updated>2026-09-29T06:49:32.507Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Codex" scheme="https://devlog.moonlang.com/tags/Codex/"/>
    <category term="OpenAI" scheme="https://devlog.moonlang.com/tags/OpenAI/"/>
    <category term="API 가격" scheme="https://devlog.moonlang.com/tags/API-%EA%B0%80%EA%B2%A9/"/>
    <category term="GPT-6" scheme="https://devlog.moonlang.com/tags/GPT-6/"/>
    <category term="ChatGPT" scheme="https://devlog.moonlang.com/tags/ChatGPT/"/>
    <content>
      <![CDATA[<p>새 모델 발표를 볼 때 저는 벤치마크 표보다 가격표를 먼저 봅니다. 성능은 몇 주만 지나도 다른 회사가 따라잡지만, 가격은 제가 매일 쓰는 방식을 바로 바꾸기 때문입니다. 9월 22일(미국 시간) OpenAI가 공개한 <strong>GPT-6 Sol</strong>과 <strong>GPT-6 Luna</strong>도 그런 발표였습니다. <a href="https://openai.com/index/introducing-gpt-6-sol-and-luna/">공식 발표</a>의 핵심은 한 문장으로 줄일 수 있습니다. Astra를 만든 것과 비슷한 방법으로 훈련한 모델을 더 싸고 빠르게 내놓았다는 것입니다.</p><p><a href="https://techcrunch.com/2026/09/22/openai-launches-gpt-6-sol-and-luna/">TechCrunch</a>에 따르면 같은 날 Anthropic은 OpenAI 발표 약 90분 전에 Claude Opus 5.5를 내놓았습니다. 두 회사가 하루에 새 모델을 연달아 낸 셈입니다.</p><p><em>이 글의 기능, 가격, 제공 범위는 OpenAI 공식 발표문(2026-09-22)과 OpenAI 개발자 커뮤니티 공지를 기준으로 했습니다. 벤치마크는 모두 OpenAI가 직접 측정한 값입니다.</em></p><h2 id="세-모델은-이제-역할이-분명합니다"><a href="#세-모델은-이제-역할이-분명합니다" class="headerlink" title="세 모델은 이제 역할이 분명합니다"></a>세 모델은 이제 역할이 분명합니다</h2><p>9월 초에 나온 GPT-6 Astra가 가장 어려운 일을 맡는 최상위 모델이라면, Sol은 코딩과 에이전트처럼 복잡한 업무를, Luna는 요약·추출·짧은 질문 같은 대량 작업을 맡습니다. OpenAI는 여전히 최고의 결과가 필요하면 Astra를 고르라고 적었습니다. 그러니까 Sol과 Luna는 Astra를 대체하는 모델이 아니라, 그만큼 깊이가 필요 없는 일을 싸게 처리하는 모델입니다.</p><p><img src="/images/posts/openai-gpt-6-sol-luna-2026-09/01-tiers.svg" alt="GPT-6 모델 세 단계: Astra는 가장 어려운 일, Sol은 코딩과 에이전트, Luna는 대량 작업"></p><h2 id="가격이-절반이-됐지만-기준을-봐야-합니다"><a href="#가격이-절반이-됐지만-기준을-봐야-합니다" class="headerlink" title="가격이 절반이 됐지만, 기준을 봐야 합니다"></a>가격이 절반이 됐지만, 기준을 봐야 합니다</h2><p>API 가격은 100만 토큰당 Sol이 입력 2달러·출력 10달러, Luna가 입력 0.10달러·출력 0.50달러입니다. GPT-5.6 Sol은 4달러·20달러, GPT-5.6 Luna는 0.20달러·1.20달러였으니 절반 안팎입니다. 다만 OpenAI가 비교한 기준은 GPT-5.6의 <strong>프로모션 가격</strong>입니다. 정가가 아니라 할인가 대비 절반이라는 점은 알고 보는 게 좋습니다.</p><p><img src="/images/posts/openai-gpt-6-sol-luna-2026-09/02-price.svg" alt="GPT-5.6 프로모션 가격과 GPT-6 Sol 가격 비교: 입력 4달러에서 2달러, 출력 20달러에서 10달러"></p><p>저는 토큰 단가보다 캐싱 개선이 더 반가웠습니다. 캐시된 입력 토큰을 다시 읽을 때 90% 할인이 붙고, 추론 강도를 바꾸거나 도구를 켜고 꺼도 앞선 문맥의 캐시가 깨지지 않게 바뀌었습니다. 캐시할 앞부분이 어디서 끝나는지 직접 정하는 명시적 브레이크포인트도 생겼습니다. 에이전트는 같은 문맥을 계속 다시 보내기 때문에, 이런 변화가 단가 인하보다 청구서에 더 크게 찍힐 수 있습니다.</p><p>성능 이야기는 짧게만 옮기겠습니다. OpenAI는 사용자들이 틀렸다고 표시한 실제 대화(비식별 처리)로 만든 내부 평가에서 Sol의 오류가 이전 모델의 절반 정도라고 밝혔습니다. 이 평가는 일부러 오류가 잘 나는 대화만 모은 것이라 평소 오류율과는 다르다는 단서도 붙였습니다. 여러 앱을 오가는 업무 흐름을 보는 AutomationBench에서는 Sol(xhigh)이 33.2%로 Claude Opus 5(max)의 26.9%보다 높았고, 과제당 비용은 0.27달러였다고 합니다. 말투도 Astra처럼 전문 용어와 군더더기를 줄이고 조금 더 짧게 답하도록 손봤다고 합니다.</p><h2 id="어디서-쓸-수-있나"><a href="#어디서-쓸-수-있나" class="headerlink" title="어디서 쓸 수 있나"></a>어디서 쓸 수 있나</h2><p>ChatGPT Work와 Codex에서 Plus, Pro, Business, Enterprise, Edu 사용자에게 9월 22일부터 순차 배포됐습니다. Free와 Go 사용자는 데스크톱 앱에서 Luna를 쓸 수 있습니다. 흥미로운 건 일반 Chat 화면에는 <strong>아직 두 모델 모두 들어오지 않았다</strong>고 OpenAI가 명시한 점입니다. API에서는 <code>gpt-6-sol</code>, <code>gpt-6-luna</code>로 바로 부를 수 있습니다.</p><h2 id="한국에서는"><a href="#한국에서는" class="headerlink" title="한국에서는?"></a>한국에서는?</h2><p>OpenAI 발표문은 요금제 기준으로만 제공 범위를 적었고 국가를 나열하지 않았습니다. <strong>한국 출시 여부는 발표되지 않았습니다.</strong> 국가 제한 문구가 없으니 한국의 ChatGPT 유료 사용자와 API 사용자도 대상일 것으로 보이지만, 이는 발표문에서 끌어낸 추론입니다. 가장 빠른 확인 방법은 쓰는 요금제에서 ChatGPT Work나 Codex의 모델 목록을 직접 열어 보는 것입니다.</p><p>제게 이번 발표는 “더 똑똑한 모델”보다 “같은 일을 더 싸게 맡길 수 있는 모델”에 가까워 보입니다. 모델을 고르는 기준이 성능 순위에서 일의 크기로 옮겨 가고 있다는 신호이기도 합니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>OpenAI, “Introducing GPT-6 Sol and Luna” (2026-09-22): <a href="https://openai.com/index/introducing-gpt-6-sol-and-luna/">https://openai.com/index/introducing-gpt-6-sol-and-luna/</a></li><li>OpenAI Developer Community, “Announcing GPT-6 Sol and GPT-6 Luna in the API, Codex and ChatGPT” (2026-09-22): <a href="https://community.openai.com/t/announcing-gpt-6-sol-and-gpt-6-luna-in-the-api-codex-and-chatgpt/1399925">https://community.openai.com/t/announcing-gpt-6-sol-and-gpt-6-luna-in-the-api-codex-and-chatgpt/1399925</a></li><li>TechCrunch, Lucas Ropek, “OpenAI launches GPT-6 Sol and Luna, boasting lower cost and fewer mistakes” (2026-09-22): <a href="https://techcrunch.com/2026/09/22/openai-launches-gpt-6-sol-and-luna/">https://techcrunch.com/2026/09/22/openai-launches-gpt-6-sol-and-luna/</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/openai-gpt-6-sol-luna-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/openai-gpt-6-sol-luna-2026-09/"/>
    <published>2026-09-27T07:35:00.000Z</published>
    <summary>OpenAI가 9월 22일 공개한 GPT-6 Sol과 GPT-6 Luna를 정리했습니다. API 가격 50% 인하, 사실 오류 감소, 캐싱 개선, 요금제별 제공 범위와 한국 사용자 관점의 확인 사항을 공식 발표 기준으로 담았습니다.</summary>
    <title>GPT-6 Sol·Luna 출시 — API 가격 절반, ChatGPT에서는 어디서 쓸 수 있나</title>
    <updated>2026-09-29T06:49:32.531Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="Gemini" scheme="https://devlog.moonlang.com/tags/Gemini/"/>
    <category term="Google Photos" scheme="https://devlog.moonlang.com/tags/Google-Photos/"/>
    <category term="구글 포토" scheme="https://devlog.moonlang.com/tags/%EA%B5%AC%EA%B8%80-%ED%8F%AC%ED%86%A0/"/>
    <category term="AI 사진 편집" scheme="https://devlog.moonlang.com/tags/AI-%EC%82%AC%EC%A7%84-%ED%8E%B8%EC%A7%91/"/>
    <content>
      <![CDATA[<p>구글 포토에 새 기능 다섯 가지가 한꺼번에 들어왔습니다. 구글 포토 프로덕트 매니저 사이먼 리(Simon Li)가 2026년 9월 24일 <a href="https://blog.google/products-and-platforms/products/photos/google-photos-updates/">구글 공식 블로그</a>에 올린 글입니다. 이 소식은 캐나다 IT 매체 <a href="https://www.iphoneincanada.ca/2026/09/25/google-photos-adds-5-new-features-but-canada-misses-some/">iPhone in Canada의 John Quintet 기사</a>를 보고 알게 됐습니다. 그 기사는 “캐나다에서는 일부만 쓸 수 있다”는 관점이었는데, 이 글에서는 같은 질문을 한국 기준으로 다시 던져 봤습니다.</p><p>결론부터 말하면 <strong>기능마다 출시 지역이 제각각</strong>입니다. 구글이 국가를 정확히 적은 기능도 있고, “일부 국가”라고만 적은 기능도 있습니다.</p><blockquote><p><strong>기준.</strong> 기능 설명과 출시 지역은 구글 공식 블로그 글(2026-09-24)과 구글 포토 고객센터 문서를 기준으로 했습니다. 구글이 한국을 따로 언급하지 않은 기능은 “한국 출시 여부는 발표되지 않음”으로 적었습니다.</p></blockquote><h2 id="한눈에-보기"><a href="#한눈에-보기" class="headerlink" title="한눈에 보기"></a>한눈에 보기</h2><table><thead><tr><th>기능</th><th>무엇을 하나</th><th>구글이 밝힌 제공 범위</th><th>한국에서는?</th></tr></thead><tbody><tr><td>Gemini Spark 속 포토</td><td>프롬프트 한 줄로 사진 고르기·보정·공유</td><td>미국, Google AI Pro·Ultra 구독자 중 자격 충족자</td><td>한국 출시 여부는 발표되지 않음</td></tr><tr><td>옷장(Wardrobe)</td><td>사진 속 옷을 자동 정리, 가상 코디·착용</td><td>미국·인도·브라질, 안드로이드·iOS</td><td>한국 출시 여부는 발표되지 않음</td></tr><tr><td>무드(Moods)</td><td>필름·옛 디카 느낌의 편집 스타일</td><td>안드로이드, 전 세계</td><td>안드로이드라면 대상(전 세계 제공)</td></tr><tr><td>리믹스 템플릿 15종</td><td>레드카펫, 생일 카드, 포토부스 등</td><td>안드로이드·iOS, 일부 국가, 18세 이상</td><td>한국 출시 여부는 발표되지 않음</td></tr><tr><td>마크업 도구 개선</td><td>가리기 펜, 굵기 슬라이더, 새 글꼴</td><td>안드로이드, 전 세계 순차 배포</td><td>안드로이드라면 대상(순차 배포)</td></tr></tbody></table><h2 id="1-Gemini-Spark에서-사진-다루기"><a href="#1-Gemini-Spark에서-사진-다루기" class="headerlink" title="1. Gemini Spark에서 사진 다루기"></a>1. Gemini Spark에서 사진 다루기</h2><p>Gemini Spark 안에서 구글 포토를 불러 쓰는 기능입니다. 구글이 든 예시는 “주말 여행에서 찍은 가족사진 중 잘 나온 걸 골라서 밝게 보정하고 공유하기”를 프롬프트 하나로 끝내는 것입니다. 사진을 일일이 넘겨 보며 고르고, 편집 앱을 열고, 공유 버튼을 누르는 과정을 한 번의 요청으로 묶었다고 보면 됩니다.</p><p>다만 제공 대상이 가장 좁습니다. <strong>미국의 Google AI Pro·Ultra 구독자 중 자격을 갖춘 사용자</strong>만 쓸 수 있습니다. 한국 출시 여부는 발표되지 않았습니다.</p><h2 id="2-옷장-Wardrobe-사진으로-만드는-디지털-옷장"><a href="#2-옷장-Wardrobe-사진으로-만드는-디지털-옷장" class="headerlink" title="2. 옷장(Wardrobe): 사진으로 만드는 디지털 옷장"></a>2. 옷장(Wardrobe): 사진으로 만드는 디지털 옷장</h2><p>사진 라이브러리에 찍힌 옷을 AI가 알아서 모아 목록으로 만들어 줍니다. 그 목록으로 옷을 조합해 보고, 가상으로 입어 볼 수도 있습니다. 옷장을 일일이 찍어서 등록할 필요 없이 이미 찍어 둔 사진을 재료로 쓴다는 점이 핵심입니다.</p><p>이번 발표는 새 기능이라기보다 확대 소식에 가깝습니다. 구글은 옷장이 <strong>미국·인도·브라질의 자격 충족 안드로이드·iOS 사용자 전체</strong>에게 제공된다고 밝혔습니다. <a href="https://support.google.com/photos/answer/17125315?hl=en">고객센터 문서</a>에 적힌 조건은 좀 더 까다롭습니다.</p><ul><li>브라질, 인도, 미국에 있어야 합니다.</li><li>얼굴 그룹(Face Groups)을 켜고, 어떤 얼굴이 본인인지 지정해야 합니다.</li><li>AI Pro·Ultra 구독자가 아니라면 본인이 나온 사진이 1,000장을 넘어야 합니다.</li><li>안드로이드는 10 이상이어야 합니다.</li></ul><p>문서에 따르면 만든 코디와 가상 착용 결과물은 저장 용량에 포함됩니다. 한국은 지원 국가 목록에 없고, 한국 출시 여부는 발표되지 않았습니다.</p><h2 id="3-무드-Moods-필름-카메라-옛날-디카-느낌"><a href="#3-무드-Moods-필름-카메라-옛날-디카-느낌" class="headerlink" title="3. 무드(Moods): 필름 카메라, 옛날 디카 느낌"></a>3. 무드(Moods): 필름 카메라, 옛날 디카 느낌</h2><p>사진에 향수 어린 빈티지 분위기를 입히는 편집 스타일입니다. 구글이 예로 든 것은 35mm 필름과 2000년대 디지털카메라(디카) 느낌입니다. 구글은 이 스타일들이 사진마다 알아서 맞춰진다고 설명합니다. 모든 사진에 같은 값을 씌우는 필터와는 다르다는 뜻입니다.</p><p>제공 범위는 <strong>안드로이드용 구글 포토, 전 세계</strong>입니다. 구글이 한국을 따로 적지는 않았지만 전 세계 제공이라고 했으니 한국 안드로이드 사용자도 대상에 들어간다고 볼 수 있습니다. iOS 제공은 이번 발표에 없습니다.</p><h2 id="4-리믹스-템플릿-15종-추가"><a href="#4-리믹스-템플릿-15종-추가" class="headerlink" title="4. 리믹스 템플릿 15종 추가"></a>4. 리믹스 템플릿 15종 추가</h2><p>사진을 다른 장면으로 바꿔 주는 리믹스(Remix)에 템플릿 15개가 추가됐습니다. 구글은 평범한 사진을 레드카펫 장면, 생일 카드, 포토부스 사진 등으로 바꾸는 예를 들었습니다.</p><p>안드로이드와 iOS 모두 지원하지만 <strong>“일부 국가”의 18세 이상 사용자</strong>로 한정됩니다. 구글은 이번 글에서 국가 목록을 밝히지 않았습니다. 그래서 한국 출시 여부는 발표되지 않았다고 보는 게 맞습니다.</p><h2 id="5-마크업-도구-개선-가리기-펜"><a href="#5-마크업-도구-개선-가리기-펜" class="headerlink" title="5. 마크업 도구 개선: 가리기 펜"></a>5. 마크업 도구 개선: 가리기 펜</h2><p>실생활에서 가장 쓸모 있어 보이는 건 이 기능입니다. 마크업 도구에 세 가지가 추가됐습니다.</p><ul><li><strong>가리기(redact) 펜:</strong> 스크린샷이나 사진 속 민감한 정보를 흐리게 처리합니다. 계좌번호, 주소, 전화번호가 찍힌 화면을 공유하기 전에 쓰기 좋습니다.</li><li><strong>굵기 슬라이더:</strong> 손그림 선의 두께를 세밀하게 조절합니다.</li><li><strong>새 글꼴:</strong> 사진에 넣는 텍스트용 글꼴이 늘었습니다.</li></ul><p>제공 범위는 <strong>안드로이드용 구글 포토, 전 세계 순차 배포</strong>입니다. 무드와 마찬가지로 한국 안드로이드 사용자도 대상이지만, 순차 배포라 아직 내 폰에 안 보일 수 있습니다. 이번 발표에 iOS 이야기는 없습니다.</p><h2 id="한국-사용자에게-정리하면"><a href="#한국-사용자에게-정리하면" class="headerlink" title="한국 사용자에게 정리하면"></a>한국 사용자에게 정리하면</h2><ul><li><strong>지금 기대해도 되는 것:</strong> 무드, 마크업 도구 개선. 둘 다 안드로이드 전 세계 대상입니다. 아이폰 사용자는 이번 발표 기준으로 둘 다 해당되지 않습니다.</li><li><strong>기다려야 하는 것:</strong> Gemini Spark 속 포토(미국 한정), 옷장(미국·인도·브라질 한정).</li><li><strong>알 수 없는 것:</strong> 리믹스 새 템플릿. “일부 국가”라고만 발표돼서 한국이 들어가는지 확인할 수 없습니다.</li></ul><p>캐나다 기사가 짚은 흐름은 한국에도 그대로 적용됩니다. 편집 도구처럼 가벼운 기능은 전 세계에 먼저 풀리고, 생성형 AI가 깊이 들어간 기능은 미국 같은 일부 국가부터 시작합니다. 구글 포토 앱을 최신 버전으로 업데이트해 두고, 무드와 가리기 펜부터 써 보면 됩니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><ul><li>Google 공식 블로그, Simon Li, “5 Google Photos updates to make the most of summer memories” (2026-09-24): <a href="https://blog.google/products-and-platforms/products/photos/google-photos-updates/">https://blog.google/products-and-platforms/products/photos/google-photos-updates/</a></li><li>Google 포토 고객센터, “Create your digital closet with Google Photos wardrobe”: <a href="https://support.google.com/photos/answer/17125315?hl=en">https://support.google.com/photos/answer/17125315?hl=en</a></li><li>iPhone in Canada, John Quintet, “Google Photos Adds 5 New Features, but Canada Misses Some” (2026-09-25): <a href="https://www.iphoneincanada.ca/2026/09/25/google-photos-adds-5-new-features-but-canada-misses-some/">https://www.iphoneincanada.ca/2026/09/25/google-photos-adds-5-new-features-but-canada-misses-some/</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/27/google-photos-five-new-features-2026-09/</id>
    <link href="https://devlog.moonlang.com/2026/09/27/google-photos-five-new-features-2026-09/"/>
    <published>2026-09-27T07:30:00.000Z</published>
    <summary>구글 포토가 9월 24일 발표한 5가지 업데이트(Gemini Spark 연동, 옷장, 무드, 리믹스 템플릿 15종, 마크업 도구 개선)를 정리하고, 한국 사용자가 쓸 수 있는 기능과 아직 발표되지 않은 기능을 공식 자료 기준으로 나눴습니다.</summary>
    <title>구글 포토 새 기능 5가지 — 한국에서 바로 쓸 수 있는 건 무엇일까</title>
    <updated>2026-09-29T06:49:26.167Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI Agent Lab" scheme="https://devlog.moonlang.com/categories/AI-Agent-Lab/"/>
    <category term="MCP" scheme="https://devlog.moonlang.com/tags/MCP/"/>
    <category term="AI 에이전트" scheme="https://devlog.moonlang.com/tags/AI-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8/"/>
    <category term="Computer Use" scheme="https://devlog.moonlang.com/tags/Computer-Use/"/>
    <category term="Cua" scheme="https://devlog.moonlang.com/tags/Cua/"/>
    <content>
      <![CDATA[<p>컴퓨터를 대신 조작해 주는 AI 도구를 찾다 보면 Cua(cua.ai, GitHub <code>trycua/cua</code>)가 자주 보입니다. 그런데 Cua는 에이전트 자체가 아닙니다. <strong>Claude Code나 Hermes 같은 에이전트에 붙이는 “손과 컴퓨터”에 가깝습니다.</strong> 그래서 완성형 에이전트 제품과 줄 세우기보다는 같은 역할을 하는 도구들과 비교하는 편이 정확합니다.</p><blockquote><p><strong>기준일.</strong> 이 글의 제품 정보, 버전, 벤치마크 수치는 <strong>2026년 9월 기준</strong>으로 각 회사의 공식 페이지와 문서에서 확인한 내용입니다. 이 분야는 변화가 빨라서 읽는 시점에는 달라져 있을 수 있습니다. 링크는 글 끝 <a href="#%EC%B6%9C%EC%B2%98">출처</a>에 모아 두었습니다.</p></blockquote><h2 id="비교-대상-한눈에-보기"><a href="#비교-대상-한눈에-보기" class="headerlink" title="비교 대상 한눈에 보기"></a>비교 대상 한눈에 보기</h2><table><thead><tr><th>분류</th><th>예시</th><th>Cua와 다른 점</th></tr></thead><tbody><tr><td>완성형 업무 에이전트</td><td>Claude Cowork, ChatGPT Work</td><td>모델과 에이전트가 한 회사 제품으로 묶여 있습니다. Cua는 이미 쓰는 에이전트에 붙이는 방식입니다</td></tr><tr><td>에이전트를 앱이나 프레임워크로 제공하는 도구</td><td>ByteDance UI-TARS Desktop, Microsoft UFO</td><td>UI-TARS Desktop은 자사 UI-TARS 모델 중심입니다. UFO는 Windows 자동화에서 출발했고 지금은 여러 기기로 넓히는 중입니다</td></tr><tr><td>가상 컴퓨터 클라우드</td><td>E2B Desktop</td><td>데스크톱 샌드박스는 Ubuntu 22.04 + XFCE 기반입니다</td></tr><tr><td>브라우저 중심</td><td>Browser-Use, Aside</td><td>웹 작업이 중심이라 데스크톱 앱 조작은 범위 밖입니다</td></tr></tbody></table><p>표의 근거는 다음과 같습니다.</p><ul><li><strong>ChatGPT Work</strong>는 OpenAI 설명대로 “ChatGPT에 실제 업무를 맡기는 방식”입니다. 파일, 플러그인, 승인한 도구를 쓰고, 데스크톱 앱에서는 로컬 파일, 앱, 내장 브라우저까지 다룹니다. (<a href="https://learn.chatgpt.com/docs/get-started-with-work">OpenAI 문서</a>)</li><li><strong>Claude Cowork</strong>는 Anthropic이 “Claude에게 실제 일을 맡기는 곳”이라고 소개합니다. 사용자가 고른 파일과 도구 안에서 여러 단계 작업을 처음부터 끝까지 처리하는 데스크톱 중심 제품입니다. (<a href="https://claude.com/product/cowork">Claude Cowork</a>)</li><li><strong>UI-TARS Desktop</strong>은 README에서 스스로를 “UI-TARS 모델 기반의 네이티브 GUI 에이전트를 제공하는 데스크톱 앱”으로 설명합니다. (<a href="https://github.com/bytedance/UI-TARS-desktop">GitHub</a>)</li><li><strong>Microsoft UFO</strong>는 UFO²가 “Single Windows automation”을, UFO³ Galaxy가 여러 기기에 걸친 협업 워크플로를 맡는 구조입니다. UFO는 자체 모델이 아니라 GPT-4o 같은 외부 LLM을 설정해서 씁니다. (<a href="https://github.com/microsoft/UFO">GitHub</a>)</li><li><strong>E2B</strong>의 컴퓨터 사용 가이드는 에이전트가 만드는 데스크톱 샌드박스를 “Ubuntu 22.04 환경에 XFCE 데스크톱과 기본 앱이 설치된 것”으로 설명합니다. (<a href="https://e2b.dev/docs/use-cases/computer-use">E2B 문서</a>)</li><li><strong>Browser-Use</strong>는 “브라우저를 쓰는 에이전트”와 원격 브라우저 인프라를, <strong>Aside</strong>는 AI 브라우저와 그 안의 브라우저 에이전트를 내세웁니다. (<a href="https://browser-use.com/">Browser-Use</a>, <a href="https://aside.com/features/browser-agent">Aside</a>)</li></ul><h2 id="Cua만의-차별점"><a href="#Cua만의-차별점" class="headerlink" title="Cua만의 차별점"></a>Cua만의 차별점</h2><h3 id="1-사용자와-동시에-쓸-수-있는-백그라운드-조작-가장-큰-차이"><a href="#1-사용자와-동시에-쓸-수-있는-백그라운드-조작-가장-큰-차이" class="headerlink" title="1. 사용자와 동시에 쓸 수 있는 백그라운드 조작 (가장 큰 차이)"></a>1. 사용자와 동시에 쓸 수 있는 백그라운드 조작 (가장 큰 차이)</h3><ul><li>흔한 컴퓨터 조작 에이전트는 화면을 찍고 좌표를 누릅니다. 그동안 마우스와 포커스는 에이전트 차지입니다.</li><li>Cua Driver는 화면 전체가 아니라 <strong>지정한 창</strong>에 입력을 보냅니다. 공식 소개 문구는 “시스템 커서를 움직이지 않고 선택한 창에 입력을 보낸다”입니다. (<a href="https://cua.ai/cua-driver">Cua Driver</a>)</li><li>문서는 이것을 “best-effort background”라고 부릅니다. 기본 경로에서는 실제 마우스 포인터를 옮기지 않고, 대상 창을 앞으로 올리지도 않고, 사용자가 보던 앱도 바꾸지 않습니다. 화면에 보이는 에이전트 커서는 감독용 오버레이입니다. (<a href="https://cua.ai/docs/concepts/the-no-foreground-contract">문서</a>)</li><li>그래서 사용자가 다른 일을 하는 동안 에이전트가 옆 창에서 작업할 수 있습니다. 계산기처럼 단순한 앱으로 먼저 시험해 보면 이 차이가 바로 보입니다.</li><li>다만 “best-effort”라는 이름대로 모든 앱에서 되는 것은 아닙니다. 포커스가 있어야만 입력을 받는 앱은 그 동작 하나만 전경(foreground)으로 재시도해야 합니다.</li></ul><h3 id="2-에이전트와-모델을-가리지-않음"><a href="#2-에이전트와-모델을-가리지-않음" class="headerlink" title="2. 에이전트와 모델을 가리지 않음"></a>2. 에이전트와 모델을 가리지 않음</h3><ul><li>MCP 서버와 CLI(명령줄 도구) 형태로 제공됩니다. GitHub README에는 Claude Code, Cursor, Codex, OpenClaw 같은 클라이언트에서 같은 CLI와 MCP 서버를 쓴다고 나옵니다. (<a href="https://github.com/trycua/cua">GitHub</a>)</li><li>Cua Driver 페이지는 이 드라이버가 <strong>Hermes, Clicky, H Company, Factory Droid</strong>의 컴퓨터 조작 기능을 돌리고 있다고 밝힙니다. 회사 블로그에는 Qwen Code도 채택 사례로 나옵니다. (<a href="https://cua.ai/cua-driver">Cua Driver</a>, <a href="https://cua.ai/blog/computer-use-2-ai-engineer-worlds-fair">Cua 블로그</a>)</li><li>Hermes 쪽 문서도 기본 <code>computer_use</code> 도구 모음이 stdio MCP로 <code>cua-driver</code>와 통신한다고 적고 있습니다. (<a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/computer-use">Hermes Agent 문서</a>)</li><li>다른 에이전트 제품들이 Cua Driver를 부품으로 가져다 쓰고 있다는 뜻입니다.</li></ul><h3 id="3-운영체제-4종을-한-가지-방식으로-다룸"><a href="#3-운영체제-4종을-한-가지-방식으로-다룸" class="headerlink" title="3. 운영체제 4종을 한 가지 방식으로 다룸"></a>3. 운영체제 4종을 한 가지 방식으로 다룸</h3><ul><li>공식 사이트 설명으로는 하나의 API로 Linux, Windows, macOS, Android 머신을 로컬 런타임이나 Cua Cloud에서 띄웁니다. 로컬 백엔드로는 Docker, QEMU, Apple VZ를 씁니다. (<a href="https://cua.ai/">cua.ai</a>)</li><li>클라우드 macOS가 특히 드뭅니다. Cua는 이것을 “특허받은 가상화 스택(patented virtualization stack)” 위에서 돌린다고 설명합니다. 특허 번호 같은 세부 내용은 공개 페이지에서 확인하지 못했습니다. (<a href="https://cua.ai/macos">Cloud macOS</a>)</li><li>비교하면 E2B의 데스크톱 샌드박스는 앞서 본 것처럼 Ubuntu 기반입니다.</li></ul><h3 id="4-코드-실행과-화면-조작을-한-컴퓨터에서"><a href="#4-코드-실행과-화면-조작을-한-컴퓨터에서" class="headerlink" title="4. 코드 실행과 화면 조작을 한 컴퓨터에서"></a>4. 코드 실행과 화면 조작을 한 컴퓨터에서</h3><ul><li>같은 샌드박스 안에서 셸이나 파이썬으로 파일을 준비하고, 그 결과를 앱 화면에서 클릭으로 처리할 수 있습니다.</li><li>Cua 문서 표현으로는 “코드 쪽과 GUI 쪽이 하나의 파일 시스템, 하나의 프로세스 집합, 하나의 OS 상태를 공유”합니다. (<a href="https://cua.ai/docs/concepts/how-sandboxes-work">How sandboxes work</a>)</li><li>회사는 이 접근을 <strong>Computer-Use 2.0</strong>이라고 부릅니다. GUI를 코드, 셸, 파일, API와 나란히 놓인 도구 하나로 다룬다는 뜻입니다. (<a href="https://cua.ai/docs">Cua 문서</a>, <a href="https://cua.ai/blog/computer-use-2-ai-engineer-worlds-fair">Cua 블로그</a>)</li></ul><h3 id="5-평가와-학습까지-한-세트"><a href="#5-평가와-학습까지-한-세트" class="headerlink" title="5. 평가와 학습까지 한 세트"></a>5. 평가와 학습까지 한 세트</h3><ul><li><strong>Cua-Bench</strong>는 과제의 시작 상태, 정답 절차(oracle), 채점기(evaluator)를 한 묶음으로 정의합니다. 과제를 돌리기 전에 정답 절차가 채점기를 통과하는지 먼저 확인해서, 과제나 채점기가 잘못 만들어지지 않았는지 검증하는 흐름입니다. (<a href="https://cua.ai/docs/concepts/cua-bench-task-lifecycle">과제 수명 주기</a>, <a href="https://cua.ai/docs/how-to-guides/cua-bench/run-a-task">과제 실행과 검증</a>)</li><li><strong>Cua Fleets</strong>는 미리 부팅해 둔 머신을 필요할 때 가져다 쓰는 웜 풀(warm pool) 방식이라 대량 실행에 맞습니다. 직접 돌릴 여유가 없는 팀에는 검증된 작업 궤적(trajectory) 데이터셋을 만들어 주는 서비스도 내놓고 있습니다. (<a href="https://cua.ai/">cua.ai</a>)</li><li>에이전트를 쓰는 사람보다 에이전트를 만드는 회사에 더 쓸모 있는 부분입니다.</li></ul><h3 id="6-안전장치가-드라이버-안에-있음"><a href="#6-안전장치가-드라이버-안에-있음" class="headerlink" title="6. 안전장치가 드라이버 안에 있음"></a>6. 안전장치가 드라이버 안에 있음</h3><ul><li>권한 모드는 세 가지입니다. <code>standard</code>(기본), <code>bounded</code>(승인한 매니페스트 범위 밖은 모두 거부), <code>unrestricted</code>(위험 확인 후 승인 절차 생략, 일회용이나 완전히 신뢰하는 환경용). (<a href="https://cua.ai/docs/reference/cua-driver/permission-modes">Permission modes</a>)</li><li><code>bounded</code> 모드에서는 매니페스트에 적은 도구, 앱, 브라우저 출처(origin), 폴더만 허용됩니다. 별도 정책 파일(YAML&#x2F;Rego)로 도구 허용 목록도 만들 수 있고 기본값은 거부입니다. (<a href="https://cua.ai/docs/how-to-guides/driver/install">설치 가이드</a>, <a href="https://cua.ai/docs/how-to-guides/driver/restrict-tool-access">권한 정책</a>)</li><li>안전하게 할 수 없는 동작은 성공한 척하지 않고 명시적으로 거부합니다. 플랫폼 지원 문서에는 합성 입력을 받지 않는 툴킷에 “조용한 성공 대신 명시적 거부”를 돌려준다고 적혀 있습니다. (<a href="https://cua.ai/docs/reference/cua-driver/platform-support">Platform Support</a>)</li><li>다만 문서 스스로도 매니페스트는 런타임 하나의 도구 범위를 제한할 뿐, 컴퓨터 전체를 감싸는 샌드박스가 아니라고 경고합니다.</li></ul><h2 id="약점"><a href="#약점" class="headerlink" title="약점"></a>약점</h2><ul><li><strong>기술 수준의 한계:</strong> 조작 도구가 좋아도 판단은 결국 모델이 합니다. Cua가 공개한 KiCad 전문가 과제 25개 벤치마크에서 가장 잘한 모델도 <strong>6개만 완전히 통과</strong>했습니다. 통과한 과제는 모두 기존 회로도를 고치는 작업이었고, 빈 화면에서 회로도를 새로 만드는 데 안정적으로 성공한 모델은 없었습니다. (<a href="https://cua.ai/cuabench/leaderboard">Cua-Bench 리더보드</a>, <a href="https://cua.ai/cuabench/report">기술 보고서</a>)</li><li><strong>작은 팀, 빠른 버전 변화:</strong> 회사 소개 페이지에 이름이 오른 팀원은 8명입니다. <code>cua-driver</code>는 2026년 9월 기준 <strong>0.29.1</strong>(PyPI, 2026-09-26 KST 배포)로 1.0 이전이고, 릴리스가 자주 나옵니다. 문서나 설치 방식이 자주 달라질 수 있습니다. (<a href="https://cua.ai/about">About</a>, <a href="https://pypi.org/project/cua-driver/">PyPI</a>, <a href="https://github.com/trycua/cua/releases">GitHub Releases</a>)</li><li><strong>Windows의 빈틈:</strong> Windows는 지원 대상이지만 공식 문서도 “일부 백그라운드 Chromium 제스처와 관리자 권한(elevated-integrity) 경계는 아직 불가능하거나 검증되지 않았다”고 적고 있습니다. (<a href="https://cua.ai/docs/reference/cua-driver/platform-support">Platform Support</a>)</li><li><strong>리눅스 샌드박스만 필요하다면:</strong> 이 경우는 E2B가 더 오래 쓰인 선택지입니다. E2B 사이트에는 Manus 공동창업자가 “완전한 가상 컴퓨터가 필요해서 E2B를 쓴다”고 말한 사례가 올라와 있습니다. (<a href="https://e2b.dev/">E2B</a>)</li></ul><h2 id="어떤-환경에-맞을까"><a href="#어떤-환경에-맞을까" class="headerlink" title="어떤 환경에 맞을까"></a>어떤 환경에 맞을까</h2><ul><li><strong>웹 작업이 대부분이라면</strong> (SNS 게시, 쇼핑몰이나 마켓 관리, 이미지 핀 정리 등): Aside 같은 브라우저 에이전트가 더 가볍고 편합니다. 설치할 것도 적고, 웹 안에서는 충분히 할 수 있습니다.</li><li><strong>데스크톱 앱을 다루거나 “코드 수정 후 실제 화면 확인”이 필요하다면</strong> (Word·PDF 작업, 로컬 앱 점검 등): Claude Code나 Cursor에 Cua Driver를 붙이는 조합이 가장 잘 맞는 영역입니다. 코딩 에이전트가 코드를 고치고, 같은 흐름에서 실제 앱 창을 열어 결과를 확인할 수 있습니다.</li></ul><p>그래서 브라우저 에이전트와 Cua Driver는 서로를 대체하는 관계가 아닙니다. 웹은 브라우저 에이전트, 데스크톱과 앱 검증은 Cua Driver로 역할을 나눠 쓰는 조합입니다.</p><h2 id="출처"><a href="#출처" class="headerlink" title="출처"></a>출처</h2><p>모두 2026년 9월 26일(KST)에 확인했습니다.</p><p><strong>Cua</strong></p><ul><li>Cua 공식 사이트: <a href="https://cua.ai/">https://cua.ai/</a></li><li>Cua Driver 소개: <a href="https://cua.ai/cua-driver">https://cua.ai/cua-driver</a></li><li>GitHub <code>trycua/cua</code>: <a href="https://github.com/trycua/cua">https://github.com/trycua/cua</a></li><li>Best-effort background: <a href="https://cua.ai/docs/concepts/the-no-foreground-contract">https://cua.ai/docs/concepts/the-no-foreground-contract</a></li><li>How sandboxes work: <a href="https://cua.ai/docs/concepts/how-sandboxes-work">https://cua.ai/docs/concepts/how-sandboxes-work</a></li><li>Cua 문서 개요(Computer-Use 2.0): <a href="https://cua.ai/docs">https://cua.ai/docs</a></li><li>Computer-Use 2.0 블로그: <a href="https://cua.ai/blog/computer-use-2-ai-engineer-worlds-fair">https://cua.ai/blog/computer-use-2-ai-engineer-worlds-fair</a></li><li>Cloud macOS: <a href="https://cua.ai/macos">https://cua.ai/macos</a></li><li>Permission modes: <a href="https://cua.ai/docs/reference/cua-driver/permission-modes">https://cua.ai/docs/reference/cua-driver/permission-modes</a></li><li>Install Cua Driver: <a href="https://cua.ai/docs/how-to-guides/driver/install">https://cua.ai/docs/how-to-guides/driver/install</a></li><li>Restrict tool access with permission policies: <a href="https://cua.ai/docs/how-to-guides/driver/restrict-tool-access">https://cua.ai/docs/how-to-guides/driver/restrict-tool-access</a></li><li>Platform Support: <a href="https://cua.ai/docs/reference/cua-driver/platform-support">https://cua.ai/docs/reference/cua-driver/platform-support</a></li><li>Cua-Bench 과제 수명 주기: <a href="https://cua.ai/docs/concepts/cua-bench-task-lifecycle">https://cua.ai/docs/concepts/cua-bench-task-lifecycle</a></li><li>Cua-Bench 과제 실행과 검증: <a href="https://cua.ai/docs/how-to-guides/cua-bench/run-a-task">https://cua.ai/docs/how-to-guides/cua-bench/run-a-task</a></li><li>Cua-Bench 리더보드: <a href="https://cua.ai/cuabench/leaderboard">https://cua.ai/cuabench/leaderboard</a></li><li>Cua-Bench 기술 보고서: <a href="https://cua.ai/cuabench/report">https://cua.ai/cuabench/report</a></li><li>About: <a href="https://cua.ai/about">https://cua.ai/about</a></li><li>PyPI <code>cua-driver</code>: <a href="https://pypi.org/project/cua-driver/">https://pypi.org/project/cua-driver/</a></li><li>GitHub Releases: <a href="https://github.com/trycua/cua/releases">https://github.com/trycua/cua/releases</a></li><li>Hermes Agent Computer Use 문서: <a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/computer-use">https://hermes-agent.nousresearch.com/docs/user-guide/features/computer-use</a></li></ul><p><strong>비교 대상</strong></p><ul><li>OpenAI, Get started with ChatGPT Work: <a href="https://learn.chatgpt.com/docs/get-started-with-work">https://learn.chatgpt.com/docs/get-started-with-work</a></li><li>Anthropic, Claude Cowork: <a href="https://claude.com/product/cowork">https://claude.com/product/cowork</a></li><li>ByteDance UI-TARS Desktop: <a href="https://github.com/bytedance/UI-TARS-desktop">https://github.com/bytedance/UI-TARS-desktop</a></li><li>Microsoft UFO: <a href="https://github.com/microsoft/UFO">https://github.com/microsoft/UFO</a></li><li>E2B 컴퓨터 사용 가이드: <a href="https://e2b.dev/docs/use-cases/computer-use">https://e2b.dev/docs/use-cases/computer-use</a></li><li>E2B 공식 사이트: <a href="https://e2b.dev/">https://e2b.dev/</a></li><li>Browser-Use: <a href="https://browser-use.com/">https://browser-use.com/</a></li><li>Aside 브라우저 에이전트: <a href="https://aside.com/features/browser-agent">https://aside.com/features/browser-agent</a></li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/26/cua-computer-use-driver-comparison/</id>
    <link href="https://devlog.moonlang.com/2026/09/26/cua-computer-use-driver-comparison/"/>
    <published>2026-09-26T12:50:00.000Z</published>
    <summary>컴퓨터 조작 도구 Cua를 Claude Cowork, ChatGPT Work, UI-TARS Desktop, Microsoft UFO, E2B Desktop, 브라우저 에이전트와 비교합니다. 백그라운드 조작, 권한 모드, Cua-Bench 결과와 약점까지 공식 자료 기준으로 정리했습니다.</summary>
    <title>Cua는 에이전트가 아니라 '손과 컴퓨터'다: 비슷한 도구들과 비교</title>
    <updated>2026-09-29T06:48:44.471Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="AI News" scheme="https://devlog.moonlang.com/categories/AI-News/"/>
    <category term="AI 에이전트" scheme="https://devlog.moonlang.com/tags/AI-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8/"/>
    <category term="AI News" scheme="https://devlog.moonlang.com/tags/AI-News/"/>
    <category term="AI Daily Briefing" scheme="https://devlog.moonlang.com/tags/AI-Daily-Briefing/"/>
    <category term="Meta Muse" scheme="https://devlog.moonlang.com/tags/Meta-Muse/"/>
    <category term="뮤즈" scheme="https://devlog.moonlang.com/tags/%EB%AE%A4%EC%A6%88/"/>
    <category term="Agentic AI" scheme="https://devlog.moonlang.com/tags/Agentic-AI/"/>
    <content>
      <![CDATA[<p>메타가 9월 8일 미국에서 출시한 개인 AI 에이전트 뮤즈(Muse). 이번 스페셜 에디션에서는 뮤즈의 차별점 세 가지, 즉 “잠들지 않는 에이전트”로서의 구조, 돈을 되찾아 주는 실용 활용법, 그리고 목표 관리와 창의적 사용법을 정리합니다.</p><h2 id="오늘의-세-가지-신호"><a href="#오늘의-세-가지-신호" class="headerlink" title="오늘의 세 가지 신호"></a>오늘의 세 가지 신호</h2><table><thead><tr><th>코너</th><th>확인된 핵심</th><th>실전 영어 표현</th></tr></thead><tbody><tr><td>뮤즈의 구조</td><td>Muse Secure VM(전용 리눅스 컴퓨터+브라우저), 백그라운드 지속 작업, 승인 게이트, Stripe Link 일회용 카드</td><td><code>take the busywork off your plate</code></td></tr><tr><td>돈 버는 사용법</td><td>미수령 보증금 청구, 환불 추적, 수수료 면제, 연 800달러 절약 사례</td><td><code>chase the refund</code></td></tr><tr><td>창의적 사용법</td><td>5탭 UX, 목표 자동 추적, 대화형 아티팩트, WhatsApp·쇼핑 커넥터</td><td><code>off your plate</code></td></tr></tbody></table><h3 id="1-뮤즈는-어떻게-다른가-—-잠들지-않는-개인-에이전트"><a href="#1-뮤즈는-어떻게-다른가-—-잠들지-않는-개인-에이전트" class="headerlink" title="1. 뮤즈는 어떻게 다른가 — 잠들지 않는 개인 에이전트"></a>1. 뮤즈는 어떻게 다른가 — 잠들지 않는 개인 에이전트</h3><p><a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent">Meta 공식 발표</a>에 따르면 뮤즈는 답변이 아니라 작업 수행을 위해 만들어진 에이전트입니다. 클라우드의 격리된 전용 컴퓨터(Muse Secure VM)에서 자기만의 브라우저를 돌리고, 앱을 닫아도 작업을 이어가며, 이메일 발송이나 구매 같은 중요 행동 앞에서는 반드시 승인을 요청합니다. 구매에는 Stripe Link 일회용 카드를 써서 실제 카드 정보가 노출되지 않습니다.</p><p><code>take the busywork off your plate</code>는 “잡일을 대신 짊어져 준다”는 뜻의 뮤즈 대표 표현입니다.</p><h3 id="2-돈을-버는-에이전트-—-환불-추적부터-수수료-면제까지"><a href="#2-돈을-버는-에이전트-—-환불-추적부터-수수료-면제까지" class="headerlink" title="2. 돈을 버는 에이전트 — 환불 추적부터 수수료 면제까지"></a>2. 돈을 버는 에이전트 — 환불 추적부터 수수료 면제까지</h3><p>초기 사용자 사례 모음(<a href="https://sidsaladi.substack.com/p/meta-muse-use-cases-50-real-ways">50 Real Ways</a>, 2026-09-21)에 따르면 가장 화제인 활용법은 ‘돈 되찾기’입니다. 살았던 주의 미수령 보증금 데이터베이스 검색부터, 오지 않는 환불의 마감일·반납처 짚기와 지속 추적, 은행 수수료 면제 요청서 작성까지 맡길 수 있습니다. 한 사용자는 통신비 협상으로 연 800달러 이상을 절약했다고 보고했습니다. 핵심은 사람이 포기하는 “주간 팔로업”을 뮤즈가 대신한다는 점입니다.</p><p><code>chase the refund</code>는 환불을 끝까지 쫓아 확보한다는 표현입니다.</p><h3 id="3-창의적-사용법-—-목표-관리-아티팩트-WhatsApp-에이전트"><a href="#3-창의적-사용법-—-목표-관리-아티팩트-WhatsApp-에이전트" class="headerlink" title="3. 창의적 사용법 — 목표 관리, 아티팩트, WhatsApp 에이전트"></a>3. 창의적 사용법 — 목표 관리, 아티팩트, WhatsApp 에이전트</h3><p><a href="https://www.cnn.com/2026/09/23/tech/meta-muse-ai-agent">CNN 실측 리뷰</a>(2026-09-23)에 따르면 앱은 채팅·피드·아이디어·목표·라이브러리 5탭 구성이며, 대화만 하면 목표 탭에 장기 목표가 쌓이고 뮤즈가 진행을 추적합니다. 지출 추적기·학습 가이드 같은 대화형 아티팩트를 만들어주고, WhatsApp에서도 같은 에이전트와 대화할 수 있습니다. 월마트·갭·세포라 쇼핑 연동과 익스피디아 예약도 연결됐고, 이름·아바타·적극성 커스터마이징도 가능합니다. 사용자 공유 사례는 <a href="https://useofmuse.com/">useofmuse.com</a>에서 검색할 수 있습니다.</p><p><code>off your plate</code>는 할 일 목록에서 빼준다는 관용 표현입니다.</p><h3 id="한국-사용자-참고"><a href="#한국-사용자-참고" class="headerlink" title="한국 사용자 참고"></a>한국 사용자 참고</h3><p>뮤즈는 현재 미국 성인 대상 서비스로 한국 공식 출시 전입니다. 지역 제한 우회 가입은 계정 리스크가 있고 언제든 막힐 수 있다는 점을 유의하세요.</p><h2 id="각주와-출처"><a href="#각주와-출처" class="headerlink" title="각주와 출처"></a>각주와 출처</h2><ul><li>Meta Newsroom, “Introducing Muse” (2026-09-08)</li><li>Sid Saladi, “Meta Muse Use Cases: 50 Real Ways” (2026-09-21)</li><li>CNN Business, “Meta says its Muse AI agent can do things for you. I put it to the test” (2026-09-23)</li><li>Mashable, “10 ways people are using Meta’s Muse AI app” (2026-09-23)</li><li>TechRepublic, “Meta Launches Muse AI Agent” (2026-09-09)</li></ul>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/26/ai-news-2026-09-26/</id>
    <link href="https://devlog.moonlang.com/2026/09/26/ai-news-2026-09-26/"/>
    <link href="https://devlog.moonlang.com/images/ai-news/2026-09-26.png" rel="enclosure"/>
    <published>2026-09-25T23:30:00.000Z</published>
    <summary>메타의 개인 AI 에이전트 뮤즈(Muse)의 구조, 돈을 되찾는 사용법, 창의적 활용법을 검증해 정리했습니다.</summary>
    <title>메타 뮤즈 완전 정복 2026.09.26 — 장점과 창의적 사용법</title>
    <updated>2026-09-29T06:49:26.095Z</updated>
  </entry>
  <entry>
    <author>
      <name>Reasonofmoon</name>
    </author>
    <category term="Learning Notes" scheme="https://devlog.moonlang.com/categories/Learning-Notes/"/>
    <category term="LLM Wiki" scheme="https://devlog.moonlang.com/tags/LLM-Wiki/"/>
    <category term="Education News" scheme="https://devlog.moonlang.com/tags/Education-News/"/>
    <category term="교육뉴스" scheme="https://devlog.moonlang.com/tags/%EA%B5%90%EC%9C%A1%EB%89%B4%EC%8A%A4/"/>
    <category term="RSS" scheme="https://devlog.moonlang.com/tags/RSS/"/>
    <category term="Source Monitoring" scheme="https://devlog.moonlang.com/tags/Source-Monitoring/"/>
    <category term="교육청" scheme="https://devlog.moonlang.com/tags/%EA%B5%90%EC%9C%A1%EC%B2%AD/"/>
    <category term="교육정책" scheme="https://devlog.moonlang.com/tags/%EA%B5%90%EC%9C%A1%EC%A0%95%EC%B1%85/"/>
    <category term="교육부" scheme="https://devlog.moonlang.com/tags/%EA%B5%90%EC%9C%A1%EB%B6%80/"/>
    <content>
      <![CDATA[<p>공문 하나가 책상 위에 놓였다.</p><p>뉴스는 자주 숫자의 얼굴을 하고 온다. 날짜, 비율, 점수, 선정 수, 등급. 숫자는 빠르다. 그러나 교육에서 숫자는 혼자 걷지 않는다. 학생의 생활, 교사의 숨, 학부모의 불안, 학교의 동선이 그 뒤를 따라온다.</p><p>오늘 큐레이션은 1차 RSS 19&#x2F;21개 피드를 먼저 보았다. 여기에 Google News RSS, 선택적 Naver 검색, 교육 블로그&#x2F;영상 RSS 같은 보조 소스 19곳에서 3개 항목을 더했다. 이렇게 모인 원시 항목 1004개 중 교육 관련 후보 321개를 걸렀다. 그중 오늘의 대표 신호로 고른 것은 <strong>[단독] 선심성 현금지원 교육청 8곳 페널티…최대 100억 교부금 삭감</strong>이다.</p><p>나는 이 뉴스를 확정문으로 읽지 않으려 한다.</p><p>먼저 무게를 잰다.</p><h2 id="오늘의-한-가지"><a href="#오늘의-한-가지" class="headerlink" title="오늘의 한 가지"></a>오늘의 한 가지</h2><ul><li><strong>대표 신호</strong>: <a href="https://www.edupress.kr/news/articleView.html?idxno=30479">[단독] 선심성 현금지원 교육청 8곳 페널티…최대 100억 교부금 삭감</a></li><li><strong>출처</strong>: 에듀프레스</li><li><strong>상태</strong>: 공식 확인 필요</li><li><strong>읽는 질문</strong>: 정책은 어느 학생의 이동 경로를 바꾸는가.</li></ul><p>이 항목은 중요한 신호지만, 정책 원문이나 기관 공고로 다시 확인해야 한다.</p><p>중요한 것은 기사 제목을 빨리 외우는 일이 아니다. 이 뉴스가 어떤 종류의 삶을 먼저 움직이는지 보는 일이다. 시험 일정이라면 달력이 바뀌고, 교육청 정책이라면 학교의 동선이 바뀌고, 교권 뉴스라면 교실의 공기부터 바뀐다.</p><h2 id="사실-해석-확인할-것"><a href="#사실-해석-확인할-것" class="headerlink" title="사실, 해석, 확인할 것"></a>사실, 해석, 확인할 것</h2><table><thead><tr><th>층위</th><th>오늘의 기록</th></tr></thead><tbody><tr><td>사실</td><td>에듀프레스 RSS가 위 항목을 교육뉴스 후보로 포착했다.</td></tr><tr><td>해석</td><td>이 신호는 교육정책 영역에서 학생·교사·학교 운영의 다음 행동을 바꿀 수 있다.</td></tr><tr><td>확인</td><td>공식 원문, 교육부·평가원·교육청 공고, 후속 정정 여부를 다시 확인해야 한다.</td></tr></tbody></table><h2 id="같이-읽어둘-신호"><a href="#같이-읽어둘-신호" class="headerlink" title="같이 읽어둘 신호"></a>같이 읽어둘 신호</h2><table><thead><tr><th>뉴스</th><th>출처</th><th>상태</th><th>읽는 법</th></tr></thead><tbody><tr><td><a href="https://www.edupress.kr/news/articleView.html?idxno=30479">[단독] 선심성 현금지원 교육청 8곳 페널티…최대 100억 교부금 삭감</a></td><td>에듀프레스</td><td>공식 확인 필요</td><td>확인 대기</td></tr><tr><td><a href="https://www.edpl.co.kr/news/articleView.html?idxno=21600">중1학년 27.8% 읽기-어휘 문해력 취약 …“점수 아닌 원인별 맞춤 지원 필요”</a></td><td>교육플러스</td><td>공식 확인 필요</td><td>확인 대기</td></tr><tr><td><a href="https://news.unn.net/news/articleView.html?idxno=597879">진주보건대 국가장학금 의혹… 정의당 지역위 “조직적 성적 조작, 총장 사퇴해야”</a></td><td>한국대학신문</td><td>공식 확인 필요</td><td>확인 대기</td></tr><tr><td><a href="https://www.yna.co.kr/view/AKR20260922164200054">순천대 국립의대 추천 효력정지 여부, 내달 초 결정</a></td><td>연합뉴스 교육</td><td>공식 확인 필요</td><td>빠른 신호</td></tr></tbody></table><p>[잠깐 멈춤]</p><p>지금 필요한 것은 더 많은 기사인가. 아니면 이 기사들이 놓인 자리를 분리하는 일인가.</p><p>교육뉴스는 많이 모을수록 똑똑해지는 것이 아니다. 서로 다른 무게의 문장을 한 바구니에 넣는 순간, 판단은 오히려 가벼워진다. 통신사의 빠른 문장, 전문지의 해석, 정부 기관의 원문, 학교 현장의 목소리는 같은 속도로 읽으면 안 된다.</p><h2 id="Thinking-Tool-출처-무게-재기"><a href="#Thinking-Tool-출처-무게-재기" class="headerlink" title="Thinking Tool: 출처 무게 재기"></a>Thinking Tool: 출처 무게 재기</h2><p>목표: 교육뉴스를 읽을 때 빠른 신호와 무거운 확인을 섞지 않는다.</p><p>Rule 1: 제목을 읽은 뒤 출처의 층위를 먼저 적는다.Rule 2: 정책·입시·통계 뉴스는 공식 원문 확인 전까지 확정문으로 쓰지 않는다.Rule 3: 현장 뉴스는 숫자보다 누가 어떤 압력을 받는지 먼저 본다.</p><p>적용 질문:</p><blockquote><p>이 뉴스는 나에게 무엇을 하라고 재촉하는가. 그리고 그 재촉을 받아들이기 전에 어느 출처로 돌아가야 하는가.</p></blockquote><h2 id="LLM-Wiki-노드"><a href="#LLM-Wiki-노드" class="headerlink" title="LLM Wiki 노드"></a>LLM Wiki 노드</h2><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">id:</span> <span class="string">education-news-2026-09-22-policy-local</span></span><br><span class="line"><span class="attr">type:</span> <span class="string">source-signal</span></span><br><span class="line"><span class="attr">topic:</span> <span class="string">교육정책</span></span><br><span class="line"><span class="attr">lead:</span> <span class="string">&quot;[단독] 선심성 현금지원 교육청 8곳 페널티…최대 100억 교부금 삭감&quot;</span></span><br><span class="line"><span class="attr">source:</span> <span class="string">에듀프레스</span></span><br><span class="line"><span class="attr">claim_level:</span> <span class="string">needs_official_check</span></span><br><span class="line"><span class="attr">reading_rule:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">fact</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">interpretation</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">official_check</span></span><br><span class="line"><span class="attr">links:</span></span><br><span class="line">  <span class="bullet">-</span> [[<span class="string">한국</span> <span class="string">교육뉴스</span> <span class="string">RSS</span> <span class="string">대시보드</span>]]</span><br><span class="line">  <span class="bullet">-</span> [[<span class="string">LLM</span> <span class="string">Wiki의</span> <span class="string">핵심은</span> <span class="string">벡터</span> <span class="string">DB가</span> <span class="string">아니라</span> <span class="string">지식</span> <span class="string">아키텍처다</span>]]</span><br></pre></td></tr></table></figure><p>이 노드는 오늘의 결론이 아니라 오늘의 손잡이다. 내일 다른 기사가 들어오면 이 노드는 수정되어야 한다. 교육뉴스를 쓴다는 것은 매일 맞는 말을 남기는 일이 아니라, 매일 틀릴 수 있는 자리를 표시하는 일에 가깝다.</p><h2 id="자료"><a href="#자료" class="headerlink" title="자료"></a>자료</h2><ul><li><a href="/files/education-news/2026-09-22/">오늘의 큐레이션 패키지</a></li><li><a href="/files/education-news/2026-09-22/verification.md">검증 로그</a></li><li><a href="/files/education-news/2026-09-22/summary.json">요약 JSON</a></li><li><a href="/files/education-news/2026-09-22/academy_digest.md">학원 운영 메모</a></li><li><a href="/files/korean-education-news-rss/">한국 교육뉴스 RSS 대시보드</a></li></ul><p>빠르게 보되, 빨리 믿지는 않는다.</p><p>교육뉴스를 매일 쓴다면 그 문장이 먼저 지켜야 할 태도는 이것이다.</p>]]>
    </content>
    <id>https://devlog.moonlang.com/2026/09/22/education-news-2026-09-22/</id>
    <link href="https://devlog.moonlang.com/2026/09/22/education-news-2026-09-22/"/>
    <link href="https://devlog.moonlang.com/files/education-news/2026-09-22/card.svg" rel="enclosure"/>
    <published>2026-09-22T09:32:59.000Z</published>
    <summary>2026.09.22 교육뉴스 RSS 후보 중 교육정책 신호를 골라 사실, 해석, 확인할 점을 분리했다.</summary>
    <title>교육뉴스 2026.09.22: 교육정책은 발표문보다 현장의 동선을 먼저 바꾼다</title>
    <updated>2026-09-29T06:49:26.167Z</updated>
  </entry>
</feed>
