한/영 경제뉴스 블로그를 자동화로 굴려보기로 하고, 소스 조사부터 디자인, SEO 구조, OAuth 인증, 이후 자동화 아키텍처 고민까지 클로드와 함께 하루 만에 뼈대를 세운 기록이다.
1단계: 뉴스·데이터 소스부터 확정
제일 먼저 막힌 지점은 "어디서 데이터를 가져올까"였다. GDELT, Finnhub 같은 애그리게이터부터 FRED, SEC EDGAR, 한국은행 ECOS, 정책브리핑 RSS까지 하나씩 상업적 이용 가능 여부를 따졌다. yfinance와 FMP 무료 티어는 개인 비상업용으로만 허용된다는 걸 확인하고 제외했고, 한국 언론사 RSS도 AI학습·상업이용 금지 조항이 있어서 트렌드 모니터링용으로만 남겼다. 결국 정부·기관 공식 API(FRED, SEC EDGAR, ECOS, 공공데이터포털, 정책브리핑) 중심으로 소스를 확정했다.
2단계: 전체 자동화가 실제로 가능한지 검증
Blogger API, Instagram Graph API, Threads API 모두 공식적으로 포스팅 자동화를 지원한다는 걸 확인했다. 다만 인스타그램은 비즈니스 계정 전환이 필요했고, Blogger는 OAuth만 붙이면 바로 되는 구조였다. 처음부터 완전 무인화보다는, 발행 직전에 사람이 검수하는 반자동 구조로 시작하기로 했다.
3단계: 빈티지 신문 콘셉트로 테마 디자인
전문적인 느낌을 원해서 옛날 신문 스타일로 방향을 잡았다. 세리프 폰트, 크림톤 배경, 드롭캡, 2단 컬럼 구조로 한/영 시안을 각각 그려보고 확인받은 뒤, 실제 Blogger XML 테마 코드로 옮겼다.
4단계: 다국어 SEO 구조 설계
한/영 콘텐츠를 한 URL에 섞으면 검색엔진이 언어를 헷갈려한다는 문제 때문에 블로그를 완전히 분리하기로 했다. "한 구글 계정, 블로그 2개" 구조로 정리했는데, OAuth 토큰 하나로 blogId만 바꿔가며 두 블로그를 제어할 수 있어서 자동화 관점에서도 오히려 더 단순해졌다.
5단계: 애드센스 리스크 미리 점검
뉴스 요약·번역 위주 콘텐츠는 애드센스의 "재구성 콘텐츠" 정책에 걸릴 수 있다는 걸 알게 됐다. 원문 재가공에 그치지 않고 독자적 해석을 더하고, 발행 전 사람이 검수하는 구조를 설계에 넣었다. 또한 계정 하나로 여러 블로그를 등록해도 사이트별 심사는 별도로 필요하다는 점도 확인했다.
6단계: 실제 블로그 개설과 도메인 선택
무료 도메인(.tk, .ml 등)은 스팸 이력 때문에 신뢰도에 오히려 해가 된다는 걸 확인하고, 우선 blogspot.com 무료 주소로 시작하기로 했다. 영어 블로그를 메인으로, 한글 블로그는 콘텐츠가 쌓이기 전까지 검색엔진 노출을 꺼둔 채 대기 상태로 만들었다. 이 과정에서 "검색엔진 노출 차단"과 "블로그 완전 비공개"가 서로 다른 설정이라는 걸 새로 알게 됐다.
7단계: Google Cloud와 Blogger API 인증
Google Cloud Console에서 프로젝트를 만들고, Blogger API를 켜고, OAuth 클라이언트(데스크톱 앱)를 발급받았다. 인증 스크립트로 두 블로그의 blogId를 확인한 뒤, 초안(draft) 방식으로 안전하게 테스트 포스팅하는 스크립트까지 완성했다.
8단계: 인스타그램·쓰레드 계정 준비
인스타그램은 일반 계정으로 먼저 가입한 뒤 비즈니스 계정으로 전환하면 된다는 걸 확인했다. Instagram API with Instagram Login 경로를 쓰면 페이스북 페이지 연결 없이도 API 연동이 가능해서, 별도 페이지를 안 만들어도 됐다. 쓰레드는 인스타그램 계정만 있으면 자동으로 프로필이 생성돼서 따로 가입할 필요가 없었다.
9단계: 자동화 아키텍처 방향 정리
클로드에 100% 의존하는 구조는 토큰 비용이 크다는 우려가 있었는데, 실제로는 오케스트레이션(스케줄링)과 생성(요약·번역) 로직을 분리하면 문제가 안 된다는 걸 정리했다. 생성 로직을 provider 값으로 교체 가능하게 함수화해두면, 나중에 로컬 Ollama나 n8n 같은 오픈소스 오케스트레이션 도구로 옮길 때도 뼈대를 다시 짤 필요가 없다.
10단계: 작업 도구 전환과 세션 인계
스크린샷 기반으로 하나씩 확인하며 진행하던 방식에서, 다음 단계(데이터 수집 스크립트)부터는 Claude Code로 옮기기로 했다. Cowork는 비개발자용 워크플로 자동화에 강하고, 지금처럼 파일을 직접 만들고 실행하며 디버깅하는 작업엔 Claude Code가 더 맞았다. 세션 간 맥락이 자동으로 넘어가지 않는다는 점을 확인하고, 지금까지의 결정사항과 다음 할 일을 CLAUDE.md 파일로 정리해 다음 세션에 넘겼다.
Trouble Shooting
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| 언어 전환 링크가 blog.locale 기준으로 잘못 표시됨 | locale 값이 실제 콘텐츠 언어가 아니라 관리자 인터페이스 언어를 따라감 | 블로그별로 현재 언어를 하드코딩하는 방식으로 변경 |
| Blogger API 라이브러리 검색 시 "v3"가 안 보임 | v2가 종료되며 이름이 그냥 "Blogger API"로 단일화됨 | 버전 표기 없는 "Blogger API"가 곧 v3임을 확인하고 진행 |
| 인증 시도 시 403 access_denied 발생 | OAuth 동의화면이 테스트 모드인데 본인 계정을 테스터로 등록하지 않음 | 대상(Audience) 메뉴에서 테스트 사용자로 본인 이메일 추가 후 재시도 |
| 한글 블로그 비공개 처리가 안 됐다고 착각 | "검색엔진 노출 차단"과 "블로그 완전 비공개"가 서로 다른 별개 설정임 | 설정 위치를 구분해서 안내, 지금은 노출 차단만으로 충분하다고 정리 |
느낀 점 / 다음에 할 일
소스 검증부터 디자인, SEO 구조, 인증, 아키텍처 고민까지 하루 만에 정리할 수 있었던 건 각 단계를 바로 코드와 문서로 옮기면서 진행했기 때문이다. 다음 세션에는 Claude Code에서 FRED·GDELT 데이터 수집 스크립트와 요약·번역 로직을 붙이고, 인스타그램/쓰레드 계정 실제 개설까지 이어갈 예정이다.
댓글
댓글 쓰기