sonnyplot.com
🌏

Astro 다국어(hreflang) 설정하는 법

Astro 사이트를 영어/한국어 이중언어로 만들고 hreflang을 붙이는 방법을 정리했다. 이 사이트를 영어가 기본(/), 한국어는 /kr/ 로 뒤집으면서 한 작업이다.

왜 영어를 기본(수도)으로 했나

두 가지 이유다. 하나, 영어권 방문자가 압도적으로 많고 광고 단가(CPM)도 높다. 둘, 이 사이트 글을 쓰는 게 사람이 아니라 Claude라 이중언어 유지 비용이 거의 0이다. 사람이 두 언어로 다 쓴다면 엄두도 못 낼 일이지만, 나는 시키기만 하면 된다. 개인 블로그로 검색·광고 유입을 노린다면 영어 기본은 진지하게 고려할 값어치가 있다.

Astro 이중언어 설정하는 법

  1. URL 구조 — 영어를 루트(/, /blog)에 두고 한국어는 /kr/ 접두(/kr/blog)로. 공용 컴포넌트에 lang prop을 넘겨 같은 뷰를 두 언어로 렌더한다
  2. 짝 글 연결(translationKey) — 영어판·한국어판 frontmatter에 같은 translationKey를 넣으면 서로 짝인 걸 안다. 이걸로 글 상단 언어 전환 칩hreflang 태그가 자동 생성된다
  3. hreflang — 각 글 <head><link rel="alternate" hreflang="en/ko/x-default">를 자동으로 박아, 구글이 “이 둘은 같은 글의 다른 언어판”임을 알게 한다. x-default는 영어판으로
  4. 구 URL 301 리다이렉트 — 언어 구조를 바꾸면 기존 링크가 깨진다. 예전 /blog/… 주소로 들어와도 새 주소로 넘겨주게 worker에서 301 처리. 이사 가도 우편물은 따라오게

번역이 아니라 각 언어로 자연스럽게 재작성한 게 포인트다(기계 번역은 검색·품질 다 손해). 이 원칙 때문에 기존 블로그 6편·퀘스트 로그 39건을 전부 영어로 다시 썼다. 자판기도 영어판은 한국어 가사 + 로마자 + 영어 뜻풀이 3단으로 만들어 K컬처 체험 부스가 됐다.

그 외 이날 있었던 일 (소소하게)

같은 날 두 가지가 더 있었다. 짧게만:

  • 얼씨구 트로트 여름 신곡얼씨구 트로트에 “더위 날려주는 트로트 10곡”(47분 여름 메들리)을 올렸다. 콘셉트는 20–30대 여성·파워풀·경쾌한 사랑 트로트. trot-song-producer 스킬에 규칙 2개 추가 — ① 메인 제목 안 정하면 먼저 묻기(썸네일 한복판용) ② 가수 스타일·무대를 계절/무드에 맞추기
  • 삽질 — Suno 자동화 1패 — 그동안 곡 생성은 Suno에 가사·태그를 손으로 복붙해 왔다. 이걸 Claude가 브라우저를 직접 조작(Claude in Chrome)해 대신 누르게 해봤다. 1번곡은 성공(Create까지)했는데, 2번곡에서 한글 입력이 깨지고 폼 확인창을 놓치는 등 헤맸고, 무엇보다 손보다 느렸다. 결론: 당분간은 손 복붙이 빠르다. 한글 입력 문제 풀리면 재도전 여지는 남김. (자판기 가사에 숫자가 섞이던 몬스터도 이날 필터에 0–9를 추가해 토벌.)

결과

  • ✅ 영어(/)·한국어(/kr/) 이중언어, 언어 전환 칩 + hreflang 자동, 구 URL 301
  • ✅ 블로그 6편·퀘스트 39건 영어 재작성, 자판기 영어 체험판
  • ✅ 얼씨구 트로트 여름 신곡 10곡 메들리, 스킬 규칙 2개 추가
  • 🤖 Suno 브라우저 자동화는 1패 — 아직은 손이 빠르다
  • ⌨️ 내가 친 코드: 여전히 0줄

오늘의 교훈은 자동화 삽질 쪽이다 — 뭐든 AI한테 넘길 수 있을 것 같아도, 손이 더 빠른 구간이 아직 분명히 있다. 그 경계는 직접 눌러봐야 안다.

← 목록으로