프론트매터와 코드 블록 깨짐 없는 마크다운 다국어 번역: LLM API와 Astro를 활용한 해외 타겟 블로그 운영법

전 세계 사용자를 타겟으로 기술 블로그를 운영하는 것은 트래픽 유입 면에서 매우 강력한 전략입니다. 특히 Astro와 같은 현대적인 정적 사이트 생성기(SSG)는 뛰어난 성능과 내장된 다국어 라우팅(i18n) 기능 덕분에 해외 타겟 블로그를 구축하기에 가장 이상적인 도구로 꼽힙니다.

하지만 글로벌 블로그 운영의 가장 큰 장벽은 ’번역 작업의 생산성’입니다. 일반적인 번역 도구(구글 번역, DeepL UI 등)에 마크다운(Markdown) 문서를 그대로 붙여넣으면 YAML 프론트매터(Frontmatter)의 Key 값이 번역되어 빌드 에러가 나거나, 코드 블록 내부의 예약어가 번역되는 등 포맷이 완전히 깨져버립니다.

이 글에서는 LLM API(GPT, Claude)를 활용하여 프론트매터와 코드 블록을 원본 그대로 보존하면서 콘텐츠만 정교하게 번역하는 마크다운 다국어 번역 자동화 시스템 구축법을 다룹니다.


1. 기존 번역 방식의 한계와 LLM API의 등장

마크다운 문서는 단순한 텍스트가 아니라 구조화된 데이터입니다. 기존의 기계 번역 엔진과 최신 LLM API가 마크다운을 다루는 방식에는 근본적인 차이가 있습니다.

비교 항목 일반 기계 번역 (DeepL / Google) LLM API (GPT-4o, Claude 최신 모델)
마크다운 문법 인지 낮음 (백틱, 샵 등 특수문자 누락 빈번) 매우 높음 (문법 구조를 이해하고 보존함)
프론트매터(YAML) 처리 불가능 (Key와 Value를 구분하지 못하고 전체 번역) 가능 (특정 Key만 선택적으로 번역하도록 제어 가능)
코드 블록 보호 낮음 (코드 내 주석 외에 코드 자체를 한글화/영어화함) 높음 (코드는 유지하고 주석만 번역 가능)
용어 일관성 (Glossary) 단순 1:1 매칭 수준만 지원 컨텍스트를 이해한 자연스러운 용어 통일
자동화 파이프라인 연동 API 비용이 고정적이고 커스텀 로직 적용이 어려움 스크립트(Node.js, Python)로 완전 자동화 가능

기존 번역 서비스는 마크다운 태그 자체를 하나의 ’단어’나 ’문장 부호’로 취급하기 때문에 번역 과정에서 위치가 뒤바뀌거나 누락되는 치명적인 문제가 발생합니다. 반면, 적절한 프롬프트를 주입한 LLM API는 개발자가 지정한 추상 구문 트리(AST) 수준의 규칙을 완벽하게 준수하며 텍스트만 영리하게 번역해 냅니다.


2. 프론트매터와 코드 블록을 지키는 프롬프트 엔지니어링

LLM을 이용한 마크다운 다국어 번역 자동화의 핵심은 **“무엇을 번역하고, 무엇을 번역하지 말아야 하는지”**를 명확하게 규정하는 시스템 프롬프트(System Prompt)입니다.

Astro 블로그에서 주로 사용하는 .md 또는 .mdx 파일을 깨뜨리지 않기 위해 실제로 사용할 수 있는 고도로 정제된 시스템 프롬프트 예시를 소개합니다.

주 역할: 
당신은 마크다운(Markdown) 및 MDX 포맷을 완벽하게 이해하는 전문 기술 번역가입니다. 원본 마크다운 문서의 포맷, 문법, 기술적 요소를 100% 보존하면서 자연스러운 [대상_언어]로 번역하세요.

준수해야 할 규칙:
1. YAML 프론트매터 (Frontmatter) 제어:
   - 문서 최상단의 `---`와 `---` 사이 영역을 인식하세요.
   - 'title', 'description'의 값(Value)만 [대상_언어]로 번역하세요.
   - 'layout', 'date', 'slug', 'tags', 'category' 등의 Key와 Value는 절대 수정하거나 번역하지 말고 원본 그대로 유지하세요.

2. 코드 블록 (Code Blocks) 제어:
   - ```로 시작하는 코드 블록 내부의 소스코드는 절대 번역하거나 수정하지 마세요.
   - 단, 코드 블록 내부의 '주석(Comments)'은 개발자가 이해하기 쉽도록 [대상_언어]로 번역하세요.

3. 인라인 요소 및 MDX 컴포넌트:
   - 인라인 코드(`code`) 내의 예약어나 변수명은 번역하지 마세요.
   - `<CustomComponent prop="value">`와 같은 MDX/JSX 태그는 속성과 구조를 그대로 유지해야 하며, 태그 내부의 일반 텍스트만 번역하세요.

4. 번역 톤앤매너:
   - IT 기술 블로그에 걸맞게 격식 있으면서도 친근한 어조(예: "~합니다", "~입니다")를 유지하세요.
   - 업계 관행상 한글보다 영어 표현이 자연스러운 기술 용어(예: Rendering, Hydration, Deployment 등)는 억지로 한글화하지 말고 영문 그대로 두거나 음차해서 표기하세요.

이 프롬프트를 기반으로 API 호출 시 원본 마크다운 텍스트를 메시지로 전달하면, 프론트매터의 이탈 없이 순수 본문과 메타데이터만 깔끔하게 번역된 결과물을 얻을 수 있습니다.


3. Astro 환경에서의 자동화 파이프라인 구축 및 워크플로우

여기서 흔히 오해하는 부분이 있습니다. Astro의 콘텐츠 컬렉션(src/content/)에 파일을 넣는 것만으로 페이지나 URL이 자동으로 생기지는 않습니다. 파일 배치만으로 라우트가 자동 생성되는 곳은 src/pages/ 뿐입니다. 번역된 콘텐츠를 실제 페이지로 노출하려면, src/pages/ 안에 getCollection()으로 컬렉션 데이터를 가져오고 getStaticPaths()로 경로를 만드는 동적 라우트 컴포넌트(예: src/pages/[lang]/blog/[...slug].astro)를 먼저 구성해 둬야 합니다. (이 블로그도 실제로 src/pages/blog/[...slug].astro에서 getCollection('blog', ...)getStaticPaths()로 라우트를 만드는 구조입니다.)

이 동적 라우트가 미리 준비되어 있다는 전제하에, 콘텐츠 폴더 구성은 예를 들어 다음과 같이 세팅할 수 있습니다.

src/
└── content/
    └── blog/
        ├── ko/
        │   └── markdown-translation-automation.md  (원본)
        └── en/
            └── markdown-translation-automation.md  (번역본 자동 생성)

이렇게 해 두면, 그 다음부터는 번역된 마크다운 파일을 폴더 구조에 맞게 추가하는 것만으로 빌드 시점에 해당 언어의 페이지가 자동으로 생성됩니다.

자동화 스크립트 작동 프로세스

  1. 파일 감시 및 로드: 로컬 Node.js 스크립트 또는 GitHub Actions가 src/content/blog/ko/ 폴더 내의 새로운 마크다운 파일 생성을 감지합니다.
  2. API 호출: 스크립트가 파일을 읽어와 위에서 정의한 시스템 프롬프트와 함께 LLM API(예: OpenAI gpt-4o나 Anthropic의 최신 Claude 모델)에 전송합니다.
  3. 결과물 검증: 반환된 데이터가 올바른 YAML 구조를 유지하고 있는지 파싱 테스트를 거칩니다.
  4. 저장: 검증이 완료되면 src/content/blog/en/ 폴더에 동일한 파일명으로 번역본을 저장합니다.

이 방식을 통해 개발자는 한국어로 글을 작성하고 Git에 Push하기만 하면, 배포 파이프라인(CI/CD) 과정에서 자동으로 영문 번역본이 생성되어 전 세계에 동시에 배포되는 환경을 완성할 수 있습니다.


4. 번역 비용은 실제로 어느 정도인가 (추정)

이 파이프라인을 장기간 운영한 실측 데이터는 없습니다. 다만 각 모델의 공식 토큰 단가로 대략적인 규모는 계산해 볼 수 있습니다.

한국어 3,000자 분량 글 하나를 번역한다고 하면, 입력·출력을 합쳐 대략 5,000~6,000 토큰 안팎이 오갑니다. 2026년 8월 기준 공식 단가로 계산하면 다음과 같습니다.

참고로 이전 절에서 예시로 든 “Claude 3.5 Sonnet”은 2026년 2월을 기점으로 신규 프로젝트에는 권장되지 않는 레거시 모델로 전환되었습니다. 현재는 Anthropic의 최신 Sonnet 계열(2026년 8월 기준 프로모션가 입력 $2.00 / 출력 $10.00, 1M 토큰)을 쓰는 것이 맞습니다.

즉 번역 자체의 API 비용은 포스트 1건당 몇 센트 수준으로 작습니다. 실제로 시간이 드는 지점은 API 호출료가 아니라, 포맷이 깨졌을 때 사람이 직접 프론트매터를 복구하거나 코드 블록을 다시 맞추는 수동 개입 쪽입니다. 이 수동 개입을 줄이는 방법은 번역 요청 전 마크다운을 프론트매터 영역과 본문 영역으로 미리 분리해 두고, 본문만 API로 넘기고 프론트매터는 코드 단에서 필요한 Key만 골라 번역하여 재조립하는 하이브리드 방식입니다. 이렇게 하면 프론트매터 자체가 애초에 모델 출력에 노출되지 않으므로, 적어도 프론트매터 관련 포맷 깨짐은 구조적으로 줄일 수 있습니다.


5. 빌드 장애 예방을 위한 단계별 체크리스트

자동화 시스템이 실시간으로 작동할 때, 단 하나의 문법 오류가 전체 사이트의 빌드 실패(Build Fail)로 이어질 수 있습니다. 안전한 무중단 배포를 위해 자동화 스크립트에 반드시 아래 안전장치를 포함해야 합니다.


자연스러운 다국어 확장이 가져다주는 기회

과거에는 1인 개발자나 소규모 팀이 글로벌 기술 블로그를 운영하려면 번역가 고용 비용이나 끝없는 수동 복사-붙여넣기 작업에 치여 중도 포기하는 경우가 많았습니다. 하지만 LLM API를 활용한 마크다운 다국어 번역 자동화는 기술 문서의 구조적 정밀함을 유지하면서도 원어민에 가까운 자연스러운 다국어 콘텐츠를 무한히 찍어낼 수 있는 환경을 선사합니다.

Astro의 강력한 정적 성능에 LLM의 유연함을 더한 파이프라인을 구축해 보세요. 한 번의 마크다운 작성으로 전 세계 개발자들과 소통하고 글로벌 검색 엔진 오가닉 트래픽을 선점하는 일, 이제 더 이상 먼 미래의 이야기가 아닙니다.