기술 블로그를 운영하면서 가장 큰 고민은 “어떻게 하면 꾸준히 양질의 글을 쓸 수 있을까"입니다. 특히 다국어로 콘텐츠를 제공하고 싶다면 번역까지 신경 써야 하니, 부담이 배로 늘어나죠.
/dev/write는 이런 고민에서 시작했습니다. Hugo 정적 사이트 생성기에 GitHub Copilot을 결합해서, 글쓰기에만 집중할 수 있는 환경을 만들어봤습니다.
왜 또 블로그 시스템인가?
솔직히 말하면, 기존 블로그 플랫폼들도 충분히 좋습니다. Medium, velog, 티스토리 모두 훌륭한 선택지예요. 하지만 몇 가지 아쉬운 점이 있었습니다.
첫째, 다국어 지원입니다. 한국어로 쓴 글을 영어와 일본어로도 제공하고 싶었는데, 대부분의 플랫폼에서는 별도 계정이나 복잡한 설정이 필요했습니다.
둘째, AI 학습 데이터로 사용되는 것에 대한 우려입니다. 열심히 쓴 글이 동의 없이 AI 모델 학습에 사용되는 건 썩 유쾌하지 않더라고요.
셋째, 자동화된 워크플로우입니다. 글을 쓰고, 검토하고, 번역하고, 발행하는 과정을 최대한 자동화하고 싶었습니다.
그래서 Hugo + PaperMod 테마를 기반으로, 이 세 가지를 해결하는 시스템을 직접 만들었습니다.
GitHub Copilot과 함께 글쓰기
/dev/write에서 가장 재미있는 부분은 GitHub Copilot을 글쓰기 도구로 활용하는 방식입니다. VS Code에서 / 명령어를 입력하면 다양한 프롬프트를 호출할 수 있어요.
/create-draft Docker 컨테이너 네트워킹에 대해 써줘
이렇게 주제만 던져도 되고, 좀 더 구체적으로 개요를 제공할 수도 있습니다.
/create-draft
- 주제: Kubernetes 입문
- 다룰 내용: Pod, Service, Deployment 개념
- 대상 독자: Docker는 아는 개발자
기존에 작성해둔 README나 문서가 있다면, 그걸 기반으로 튜토리얼을 만들어달라고 할 수도 있어요.
/create-draft 이 README 파일을 기반으로 튜토리얼 포스트를 만들어줘
#file:README.md
AI가 전부 쓰는 게 아니에요
물론 AI에게 처음부터 끝까지 맡기는 것만이 답은 아닙니다. 오히려 내가 먼저 초안을 쓰고, AI가 살을 붙이는 방식이 더 좋은 결과를 내는 경우가 많아요.
예를 들어, 예전에 다른 블로그에서 썼던 글을 가져와서 기술 블로그 스타일로 다시 정리하고 싶다면:
/complete-manual-post 이 글을 기술 블로그 스타일로 다시 써줘
#file:my-old-post.md
직접 쓴 초안이 있다면, 코드 예제를 추가하거나 설명을 보강해달라고 할 수도 있습니다.
내가 쓴 이 초안을 기반으로 내용을 더 풍부하게 만들어줘.
코드 예제를 추가하고, 설명을 더 자세하게 해줘.
#file:2025-12-05-my-draft.md
개인적인 경험이나 의견이 중요한 글, 기술적 정확성을 직접 검증하고 싶은 글은 이 방식이 훨씬 효과적입니다. AI는 도우미일 뿐, 최종 판단은 사람이 하는 거니까요.
글 하나 쓰면 세 개가 나온다
/dev/write의 또 다른 특징은 자동 번역입니다. 한국어로 글을 쓰면 영어와 일본어 버전이 자동으로 생성됩니다.
물론 기계 번역의 한계는 있습니다. 하지만 처음부터 세 개 언어로 글을 쓰는 것보다는 훨씬 낫죠. 번역된 결과를 검토하고 필요한 부분만 수정하면 됩니다.
번역 과정에서 일관성을 유지하기 위해 몇 가지 규칙이 있어요.
slug,translationKey,date같은 메타데이터는 모든 언어에서 동일하게 유지- 제목, 태그, 요약, 본문은 각 언어로 번역
- 코드 블록은 번역하지 않음 (당연하죠!)
영어는 American English로, 일본어는 です/ます체로 작성됩니다. 기술 용어는 원어를 유지하거나 괄호로 병기해요. “컨테이너(Container)” 이런 식으로요.
번역이 끝나면 검증 스크립트로 세 언어 버전이 제대로 맞춰졌는지 확인합니다.
.\scripts\validate-translations.ps1
기술 문서의 정확성 검증
기술 블로그에서 가장 중요한 건 정확성입니다. 특히 Azure나 .NET 같은 Microsoft 기술을 다룰 때는 공식 문서와 일치하는지 확인하는 게 필수죠.
/dev/write는 MS Learn MCP 서버를 통해 이 과정을 자동화했습니다. mcp.json 파일에 MCP 서버를 등록해두고 이를 사용하도록 했습니다.
MCP 서버가 Microsoft 공식 문서를 조회해서 최신 API 버전인지, deprecated된 기능은 없는지, 공식 권장 사항과 맞는지 검토해줍니다. 블로그 글에 “이 방법은 더 이상 권장되지 않습니다"라는 댓글이 달리는 걸 미리 방지할 수 있어요.
소셜 미디어를 고려한 예약 발행
글을 다 썼으면 발행해야죠. /dev/write는 예약 발행을 지원합니다. date 필드에 미래 날짜를 설정하면 그 시간에 자동으로 발행됩니다.
date: 2025-12-10T08:00:00+09:00 # 12월 10일 오전 8시에 발행
예약 발행은 GitHub Actions의 cron 트리거로 동작합니다. 하루 종일 돌리면 러너 비용이 아까우니까, 소셜 미디어 피크 타임에 맞춰 하루 3번 실행하도록 설정했어요.
- 오전 8시: 출근길에 스마트폰 확인하는 시간
- 오후 12시: 점심시간에 잠깐 브라우징하는 시간
- 오후 5시: 퇴근 전 마지막으로 피드 확인하는 시간
schedule:
- cron: '0 23 * * *' # KST 08:00
- cron: '0 3 * * *' # KST 12:00
- cron: '0 8 * * *' # KST 17:00
만약 더 세밀한 발행 스케줄이 필요하다면, 로컬 환경에서 직접 트리거를 설정할 수도 있습니다. Windows 작업 스케줄러나 crontab을 활용하면 1시간 간격, 30분 간격 등 원하는 대로 조정 가능해요. GitHub Actions 무료 사용량도 아끼고, 발행 타이밍도 더 정밀하게 잡을 수 있죠.
AI 크롤러 차단
요즘 AI 학습용 크롤러들이 웹사이트를 마구 긁어가는 게 이슈인데요. /dev/write는 주요 AI 크롤러를 차단하는 설정이 기본으로 포함되어 있습니다.
GPTBot, Google-Extended, CCBot, anthropic-ai 등 대부분의 AI 학습 크롤러를 robots.txt로 차단하고, 메타 태그로도 이중 방어합니다. 물론 악의적인 크롤러는 이걸 무시할 수 있지만, 적어도 공식적으로는 “내 콘텐츠를 AI 학습에 사용하지 마세요"라는 의사를 표시한 셈이죠.
로컬에서 미리보기
글을 발행하기 전에 어떻게 보이는지 확인하고 싶다면, Hugo 서버를 로컬에서 실행하면 됩니다.
hugo server -D
-D 옵션을 붙이면 draft: true인 글도 볼 수 있어요. 브라우저에서 http://localhost:1313으로 접속하면 실시간으로 미리보기가 됩니다. 파일을 수정하면 자동으로 새로고침되니까 편하게 확인할 수 있어요.
마무리
/dev/write는 아직 완벽하진 않습니다. 하지만 글쓰기에 집중하고, 나머지는 자동화한다는 목표는 어느 정도 달성한 것 같아요.
다국어 지원, AI 기반 편집, 예약 발행, 크롤러 차단까지. 기술 블로그 운영에 필요한 기본기는 갖춰진 셈입니다. 앞으로도 계속 개선해나갈 예정이에요.
혹시 관심이 있으시다면 GitHub 저장소를 방문해 주세요. 피드백은 언제나 환영합니다! 🚀

