Skip to content

fix(blog): 본문 H1 중복 제거 (#98)#112

Merged
Malloc72P merged 1 commit into
mainfrom
claude/issue-98-h1-dedup
Jun 29, 2026
Merged

fix(blog): 본문 H1 중복 제거 (#98)#112
Malloc72P merged 1 commit into
mainfrom
claude/issue-98-h1-dedup

Conversation

@Malloc72P

Copy link
Copy Markdown
Owner

요약

ArticleHeadermetadata.title을 페이지의 <h1>로 렌더하기 때문에, 본문 MDX에서 마크다운 H1(# )을 사용하면 문서당 H1이 2개 이상이 되어 SEO/헤딩 위계가 깨집니다. 이 PR은 대상 11개 포스트의 본문 H1을 H2(## )로 강등하여 문서당 H1 1개 원칙을 복원합니다.

  • 강등 원칙: 본문 # 헤딩## 로 강등. 기존 H2/H3는 그대로 둡니다(최소 변경).
  • 제목 중복(metadata.title과 사실상 동일한 본문 H1) 케이스는 이번 대상 파일에 없어, 삭제한 헤딩은 없습니다. 강등 대상 H1은 모두 하위에 H2/H3가 달린 실제 섹션 헤더입니다.
  • 코드펜스 내부의 # 줄(셸/주석)은 마크다운 헤딩이 아니므로 변경하지 않았습니다. 각 파일의 코드펜스 상태를 추적해 헤딩과 코드블록 주석을 구분했고, 검증 스크립트로 코드블록 밖 H1이 0개임을 확인했습니다.

변경한 파일과 강등 내역

파일 강등(개) 강등한 헤딩
frontend/monorepo/page.mdx 3 pnpm workspace로 monorepo를 구성하는 방법, Turborepo, 마치며
frontend/execution-context/page.mdx 3 VariableEnvironment와 LexicalEnvironment, LexicalEnvironment, 스코프 체인
frontend/ts-why-use-typescript/page.mdx 2 타입스크립트의 타입 시스템, 정리
frontend/ts-type-compatibility/page.mdx 6 타입 호환성을 결정하는 규칙, 함수에 대한 타입 호환성, Enum의 타입 호환성, 클래스의 타입 호환성, 제네릭의 타입 호환성, 정리
frontend/ts-object-type-advanced/page.mdx 3 인덱스 시그니쳐(Index Signature), 초과 속성 검사(Excess Property Checks), 정리
frontend/ts-type-vs-interface/page.mdx 3 Interfaces vs Intersections(Type), Mapped Type, 정리
ai/ai-tool/page.mdx 2 들어가며, Tool Calling 실습, Next.js에서 Tool Calling을 구현하여 채팅메시지로 차트 생성 및 수정하기
ai/git-worktree/page.mdx 0 본문 H1 없음(코드블록 내 sh 주석만 존재) → 변경 없음
ai/sse-exam/page.mdx 0 본문 H1 없음(코드블록 내 sh 주석만 존재) → 변경 없음
ai/antigravity/page.mdx 0 본문 H1 없음(코드블록 내 SKILL.md 예시 주석만 존재) → 변경 없음
fullstack/nextjs-grid-app-1/page.mdx 0 본문 H1 없음(코드블록 내 sh 주석만 존재) → 변경 없음

합계: 7개 파일에서 H1 22개를 H2로 강등, 삭제한 헤딩 0개, 변경 없는 파일 4개.

ToC에 미치는 영향

post-detail.tsx의 ToC는 article.querySelectorAll('h2, h3')로 헤딩을 수집합니다. 따라서 H1에서 H2로 강등된 섹션은 이제 ToC에 새로 노출됩니다. 이는 의도된 개선입니다(기존에는 H1이라 ToC에서 누락됐던 최상위 섹션이 목차에 정상적으로 포함됨).

검증 결과

  • build: pnpm run build 성공 — MDX 컴파일 오류 없음, 모든 대상 포스트 정적 생성 확인 (✓ Compiled successfully)
  • lint: pnpm run lint 통과 (exit 0, --max-warnings 0)
  • test: pnpm run test 통과 — 17개 스위트 / 63개 테스트 전부 성공

Closes #98

🤖 Generated with Claude Code

ArticleHeader가 metadata.title을 페이지 H1로 렌더하므로, 본문 MDX의
마크다운 H1(# )은 문서당 H1이 중복되어 SEO/헤딩 위계를 깨뜨린다.
대상 11개 포스트의 본문 H1을 H2(## )로 강등했다.

- frontend/monorepo: 3개 강등 (코드블록 내 sh 주석 1개는 보존)
- frontend/execution-context: 3개 강등
- frontend/ts-why-use-typescript: 2개 강등
- frontend/ts-type-compatibility: 6개 강등
- frontend/ts-object-type-advanced: 3개 강등
- frontend/ts-type-vs-interface: 3개 강등
- ai/ai-tool: 2개 강등
- ai/git-worktree, ai/sse-exam, ai/antigravity, fullstack/nextjs-grid-app-1:
  본문 H1 없음(코드블록 내 주석만 존재)으로 변경 없음

코드펜스 상태를 추적해 코드블록 내부 # 주석은 변경하지 않았다.
ToC는 h2/h3를 수집하므로 강등된 섹션이 새로 노출된다(의도된 개선).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
blog Ignored Ignored Jun 29, 2026 5:32am

@Malloc72P Malloc72P merged commit c9cb618 into main Jun 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[SEO] 본문 H1 중복 제거 (11개 MDX)

1 participant