{
    "componentChunkName": "component---node-modules-gatsby-theme-primer-wiki-src-templates-post-query-js",
    "path": "/posts/seo/google-algorithm-rollout/",
    "result": {"data":{"mdx":{"id":"188165f0-ca1a-56f6-a289-303a15d7b6a4","tableOfContents":{"items":[{"url":"#롤아웃-중에는-순위가-흔들리는-게-정상이다","title":"롤아웃 중에는 순위가 흔들리는 게 정상이다"},{"url":"#서비스-배포와-달리-운영자가-제어할-수-없다","title":"서비스 배포와 달리 운영자가 제어할 수 없다"},{"url":"#순위가-떨어져도-바로-원인을-단정하지-않는다","title":"순위가 떨어져도 바로 원인을 단정하지 않는다"},{"url":"#참고","title":"참고"}]},"fields":{"title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","slug":"/posts/seo/google-algorithm-rollout/","url":"https://r0k.wiki/posts/seo/google-algorithm-rollout/","editUrl":"https://github.com/padawanR0k/wiki/blob/master/content/posts/seo/google-algorithm-rollout.md","lastUpdatedAt":"2026-11-07T07:08:27.000Z","lastUpdated":"11/7/2026","gitCreatedAt":"2026-11-07T07:08:27.000Z","shouldShowTitle":true},"frontmatter":{"title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","description":null,"imageAlt":null,"tags":["SEO"],"date":"2026-11-07T00:00:00.000Z","dateModified":null,"language":null,"seoTitle":null,"image":null},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식\",\n  \"date\": \"2026-11-07T00:00:00.000Z\",\n  \"updated\": \"2026-11-07T00:00:00.000Z\",\n  \"tags\": [\"SEO\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Google\\uC774 \\uAC80\\uC0C9 \\uC21C\\uC704 \\uC54C\\uACE0\\uB9AC\\uC998\\uC744 \\uBC14\\uAFC0 \\uB54C\\uB294 \\uD55C \\uBC88\\uC5D0 \\uC801\\uC6A9\\uD558\\uC9C0 \\uC54A\\uACE0, \\uBA70\\uCE60\\uC5D0\\uC11C \\uC218\\uC8FC\\uC5D0 \\uAC78\\uCCD0 \\uC804\\uCCB4 \\uAC80\\uC0C9 \\uACB0\\uACFC\\uC5D0 \\uC810\\uC9C4\\uC801\\uC73C\\uB85C \\uBC18\\uC601\\uD55C\\uB2E4. \\uC774\\uAC78 \\uB864\\uC544\\uC6C3\\uC774\\uB77C\\uACE0 \\uBD80\\uB978\\uB2E4.\"), mdx(\"h2\", {\n    \"id\": \"롤아웃-중에는-순위가-흔들리는-게-정상이다\"\n  }, \"\\uB864\\uC544\\uC6C3 \\uC911\\uC5D0\\uB294 \\uC21C\\uC704\\uAC00 \\uD754\\uB4E4\\uB9AC\\uB294 \\uAC8C \\uC815\\uC0C1\\uC774\\uB2E4\"), mdx(\"p\", null, \"\\uB864\\uC544\\uC6C3\\uC774 \\uC2DC\\uC791\\uB418\\uBA74 \\uAC80\\uC0C9\\uC5B4, \\uD398\\uC774\\uC9C0, \\uC9C0\\uC5ED\\uB9C8\\uB2E4 \\uC21C\\uC704\\uAC00 \\uC624\\uB974\\uB0B4\\uB9B0\\uB2E4. \\uC644\\uB8CC\\uB410\\uB2E4\\uACE0 \\uB05D\\uB3C4 \\uC544\\uB2C8\\uB2E4. \\uADF8 \\uB4A4\\uB85C\\uB3C4 \\uC21C\\uC704\\uB294 \\uACC4\\uC18D \\uBCC0\\uD560 \\uC218 \\uC788\\uB2E4.\"), mdx(\"p\", null, \"\\uC9C0\\uAE08 \\uC9C4\\uD589 \\uC911\\uC778 \\uC5C5\\uB370\\uC774\\uD2B8\\uAC00 \\uC788\\uB294\\uC9C0\\uB294 \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://status.search.google.com/\"\n  }, \"Google Search Status Dashboard\"), \"\\uC5D0\\uC11C \\uD655\\uC778\\uD55C\\uB2E4. (Core Update\\uB294 \\uC644\\uB8CC\\uAE4C\\uC9C0 \\uBCF4\\uD1B5 \\uC5F4\\uD758 \\uB118\\uAC8C \\uAC78\\uB9BC)\"), mdx(\"h2\", {\n    \"id\": \"서비스-배포와-달리-운영자가-제어할-수-없다\"\n  }, \"\\uC11C\\uBE44\\uC2A4 \\uBC30\\uD3EC\\uC640 \\uB2EC\\uB9AC \\uC6B4\\uC601\\uC790\\uAC00 \\uC81C\\uC5B4\\uD560 \\uC218 \\uC5C6\\uB2E4\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uAD6C\\uBD84\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uC11C\\uBE44\\uC2A4 \\uB864\\uC544\\uC6C3\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Google \\uAC80\\uC0C9 \\uB864\\uC544\\uC6C3\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uBCC0\\uACBD \\uC8FC\\uCCB4\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uC11C\\uBE44\\uC2A4 \\uAC1C\\uBC1C\\uD300\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Google\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uC81C\\uC5B4 \\uAC00\\uB2A5\\uC131\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uBC30\\uD3EC\\xB7\\uC911\\uB2E8\\xB7\\uB864\\uBC31 \\uAC00\\uB2A5\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uC0AC\\uC774\\uD2B8 \\uC6B4\\uC601\\uC790\\uAC00 \\uC81C\\uC5B4 \\uBD88\\uAC00\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uAD00\\uCE21 \\uC9C0\\uD45C\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uC624\\uB958\\uC728, \\uC751\\uB2F5\\uC2DC\\uAC04\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\uAC80\\uC0C9 \\uC21C\\uC704, \\uB178\\uCD9C\\uC218, \\uD074\\uB9AD\\uC218\")))), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Google\\uC740 \\uC5B4\\uB5A4 \\uBE44\\uC728\\uACFC \\uC21C\\uC11C\\uB85C \\uBC30\\uD3EC\\uD558\\uB294\\uC9C0 \\uACF5\\uAC1C\\uD558\\uC9C0 \\uC54A\\uB294\\uB2E4.\"), \" \\uCE74\\uB098\\uB9AC \\uBC30\\uD3EC\\uCC98\\uB7FC 5% \\u2192 20% \\u2192 100%\\uB85C \\uAC04\\uB2E4\\uACE0 \\uC0DD\\uAC01\\uD558\\uBA74 \\uC548 \\uB41C\\uB2E4.\"), mdx(\"h2\", {\n    \"id\": \"순위가-떨어져도-바로-원인을-단정하지-않는다\"\n  }, \"\\uC21C\\uC704\\uAC00 \\uB5A8\\uC5B4\\uC838\\uB3C4 \\uBC14\\uB85C \\uC6D0\\uC778\\uC744 \\uB2E8\\uC815\\uD558\\uC9C0 \\uC54A\\uB294\\uB2E4\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uB864\\uC544\\uC6C3 \\uC911\\uC5D0\\uB294 \\uC9C0\\uCF1C\\uBCF4\\uAE30\\uB9CC \\uD55C\\uB2E4\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC644\\uB8CC\\uB418\\uACE0 \\uCD5C\\uC18C 1\\uC8FC\\uC77C \\uB4A4\\uC5D0 Search Console \\uB370\\uC774\\uD130\\uB97C \\uBE44\\uAD50\\uD55C\\uB2E4\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uB178\\uCD9C\\uC218, \\uD074\\uB9AD\\uC218, CTR, \\uD3C9\\uADE0 \\uAC8C\\uC7AC\\uC21C\\uC704\\uB97C \\uD398\\uC774\\uC9C0\\xB7\\uAC80\\uC0C9\\uC5B4 \\uB2E8\\uC704\\uB85C\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC54C\\uACE0\\uB9AC\\uC998 \\uB54C\\uBB38\\uC778\\uC9C0, \\uC0AC\\uC774\\uD2B8 \\uC790\\uCCB4\\uC758 \\uC0C9\\uC778\\xB7\\uB80C\\uB354\\uB9C1\\xB7\\uCF58\\uD150\\uCE20 \\uBB38\\uC81C\\uC778\\uC9C0 \\uBD84\\uB9AC\\uD574\\uC11C \\uBCF8\\uB2E4\")), mdx(\"h2\", {\n    \"id\": \"참고\"\n  }, \"\\uCC38\\uACE0\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://status.search.google.com/\"\n  }, \"Google Search Status Dashboard\"), \" \\u2014 \\uC9C4\\uD589 \\uC911\\uC774\\uAC70\\uB098 \\uC644\\uB8CC\\uB41C \\uC21C\\uC704 \\uC5C5\\uB370\\uC774\\uD2B8 \\uC774\\uB825\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://developers.google.com/search/docs/appearance/core-updates?hl=ko\"\n  }, \"Google \\uD575\\uC2EC \\uC5C5\\uB370\\uC774\\uD2B8 \\uAC00\\uC774\\uB4DC\"), \" \\u2014 \\uC5C5\\uB370\\uC774\\uD2B8 \\uC774\\uD6C4 \\uC21C\\uC704 \\uBCC0\\uD654 \\uB300\\uC751\")));\n}\n;\nMDXContent.isMDXComponent = true;","rawBody":"---\ntitle: Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식\ndate: 2026-11-07\nupdated: 2026-11-07\ntags:\n  - SEO\n---\n\nGoogle이 검색 순위 알고리즘을 바꿀 때는 한 번에 적용하지 않고, 며칠에서 수주에 걸쳐 전체 검색 결과에 점진적으로 반영한다. 이걸 롤아웃이라고 부른다.\n\n## 롤아웃 중에는 순위가 흔들리는 게 정상이다\n\n롤아웃이 시작되면 검색어, 페이지, 지역마다 순위가 오르내린다. 완료됐다고 끝도 아니다. 그 뒤로도 순위는 계속 변할 수 있다.\n\n지금 진행 중인 업데이트가 있는지는 [Google Search Status Dashboard](https://status.search.google.com/)에서 확인한다. (Core Update는 완료까지 보통 열흘 넘게 걸림)\n\n## 서비스 배포와 달리 운영자가 제어할 수 없다\n\n| 구분         | 서비스 롤아웃       | Google 검색 롤아웃        |\n| ------------ | ------------------- | ------------------------- |\n| 변경 주체    | 서비스 개발팀       | Google                    |\n| 제어 가능성  | 배포·중단·롤백 가능 | 사이트 운영자가 제어 불가 |\n| 관측 지표    | 오류율, 응답시간    | 검색 순위, 노출수, 클릭수 |\n\n**Google은 어떤 비율과 순서로 배포하는지 공개하지 않는다.** 카나리 배포처럼 5% → 20% → 100%로 간다고 생각하면 안 된다.\n\n## 순위가 떨어져도 바로 원인을 단정하지 않는다\n\n- 롤아웃 중에는 지켜보기만 한다\n- 완료되고 최소 1주일 뒤에 Search Console 데이터를 비교한다\n\t- 노출수, 클릭수, CTR, 평균 게재순위를 페이지·검색어 단위로\n- 알고리즘 때문인지, 사이트 자체의 색인·렌더링·콘텐츠 문제인지 분리해서 본다\n\n## 참고\n\n- [Google Search Status Dashboard](https://status.search.google.com/) — 진행 중이거나 완료된 순위 업데이트 이력\n- [Google 핵심 업데이트 가이드](https://developers.google.com/search/docs/appearance/core-updates?hl=ko) — 업데이트 이후 순위 변화 대응\n","excerpt":"Google이 검색 순위 알고리즘을 바꿀 때는 한 번에 적용하지 않고, 며칠에서 수주에 걸쳐 전체 검색 결과에 점진적으로 반영한다. 이걸 롤아웃이라고 부른다. 롤아웃 중에는 순위가 흔들리는 게 정상이다 롤아웃이 시작되면 검색어, 페이지, 지역마다 순…","outboundReferences":[],"inboundReferences":[]},"tagsOutbound":{"nodes":[{"frontmatter":{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","tags":["SEO","i18n"]},"fields":{"slug":"/posts/seo/hreflang-canonical/","title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","lastUpdated":"6/30/2026","lastUpdatedAt":"2026-06-30T12:28:37.000Z","gitCreatedAt":"2026-06-30T12:28:37.000Z"}},{"frontmatter":{"title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","tags":["SEO"]},"fields":{"slug":"/posts/seo/google-algorithm-rollout/","title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","lastUpdated":"11/7/2026","lastUpdatedAt":"2026-11-07T07:08:27.000Z","gitCreatedAt":"2026-11-07T07:08:27.000Z"}},{"frontmatter":{"title":"next.js SEO 개선하기","tags":["SEO"]},"fields":{"slug":"/posts/seo/nextjs dynamic sitemap/","title":"next.js SEO 개선하기","lastUpdated":"9/16/2023","lastUpdatedAt":"2023-09-16T09:29:27.000Z","gitCreatedAt":"2022-11-13T14:57:43.000Z"}},{"frontmatter":{"title":"SEO 클로킹과 콘텐츠 게이팅","tags":["SEO"]},"fields":{"slug":"/posts/seo/seo-cloaking-and-content-gating/","title":"SEO 클로킹과 콘텐츠 게이팅","lastUpdated":"4/18/2026","lastUpdatedAt":"2026-04-18T07:10:38.000Z","gitCreatedAt":"2026-04-18T07:10:38.000Z"}}]}},"pageContext":{"tags":["SEO"],"slug":"/posts/seo/google-algorithm-rollout/","sidebarItems":[{"title":"","items":[{"title":"Recently Updated","url":"/latest/","collapse":true,"indent":false,"items":[{"title":"11-07: Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","url":"/posts/seo/google-algorithm-rollout/"},{"title":"11-04: 관심이 가는 글들","url":"/posts/reading-notes/"},{"title":"10-04: pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"10-04: tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"},{"title":"10-04: cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"09-06: 일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"08-23: 에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"},{"title":"07-27: 자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"07-05: 관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"06-30: 다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]}]},{"title":"Tags","items":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","url":"/posts/seo/google-algorithm-rollout/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"},{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"관찰","type":"tag","url":"/tags/관찰/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"},{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"}]},{"title":"설정무시","type":"tag","url":"/tags/설정무시/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"}]},{"title":"읽을거리","type":"tag","url":"/tags/읽을거리/","items":[{"title":"관심이 가는 글들","url":"/posts/reading-notes/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"},{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}]}],"tagsGroups":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","url":"/posts/seo/google-algorithm-rollout/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"},{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"관찰","type":"tag","url":"/tags/관찰/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"},{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"}]},{"title":"설정무시","type":"tag","url":"/tags/설정무시/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"}]},{"title":"읽을거리","type":"tag","url":"/tags/읽을거리/","items":[{"title":"관심이 가는 글들","url":"/posts/reading-notes/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"},{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}],"latestPosts":[{"fields":{"slug":"/posts/seo/google-algorithm-rollout/","title":"Google 검색 롤아웃 - 알고리즘 업데이트가 반영되는 방식","lastUpdatedAt":"2026-11-07T07:08:27.000Z","lastUpdated":"11/7/2026"},"frontmatter":{"draft":false,"tags":["SEO"]}},{"fields":{"slug":"/posts/reading-notes/","title":"관심이 가는 글들","lastUpdatedAt":"2026-11-04T11:37:27.000Z","lastUpdated":"11/4/2026"},"frontmatter":{"draft":false,"tags":["읽을거리"]}},{"fields":{"slug":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/","title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","lastUpdatedAt":"2026-10-04T07:54:32.000Z","lastUpdated":"10/4/2026"},"frontmatter":{"draft":false,"tags":["관찰","설정무시"]}},{"fields":{"slug":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/","title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","lastUpdatedAt":"2026-10-04T07:54:32.000Z","lastUpdated":"10/4/2026"},"frontmatter":{"draft":false,"tags":["관찰","설정무시"]}},{"fields":{"slug":"/posts/cloud/cloudflare/cloudflare infra/","title":"cloudflare 인프라 간단 정리","lastUpdatedAt":"2026-10-04T07:54:32.000Z","lastUpdated":"10/4/2026"},"frontmatter":{"draft":false,"tags":["cloudflare"]}},{"fields":{"slug":"/posts/frontend/일본어 폰트-타이포그래피 가이드/","title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","lastUpdatedAt":"2026-09-06T06:00:56.000Z","lastUpdated":"9/6/2026"},"frontmatter":{"draft":false,"tags":["i18n","css","javascript"]}},{"fields":{"slug":"/posts/ai/agent-prompting/","title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","lastUpdatedAt":"2026-08-23T05:57:19.000Z","lastUpdated":"8/23/2026"},"frontmatter":{"draft":false,"tags":["ai","프롬프팅"]}},{"fields":{"slug":"/posts/javascript/자바스크립트 데드 코드 제거/","title":"자바스크립트 데드 코드 제거","lastUpdatedAt":"2026-07-27T01:49:45.000Z","lastUpdated":"7/27/2026"},"frontmatter":{"draft":false,"tags":["javascript","개선"]}},{"fields":{"slug":"/posts/monitoring/cardinality-and-dimensionality/","title":"관찰 가능성 - 카디널리티와 디멘셔널리티","lastUpdatedAt":"2026-07-05T07:49:54.000Z","lastUpdated":"7/5/2026"},"frontmatter":{"draft":false,"tags":["모니터링"]}},{"fields":{"slug":"/posts/seo/hreflang-canonical/","title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","lastUpdatedAt":"2026-06-30T12:28:37.000Z","lastUpdated":"6/30/2026"},"frontmatter":{"draft":false,"tags":["SEO","i18n"]}}]}},
    "staticQueryHashes": ["2320115945","2650345336","3495835395","451533639"]}