옵시디언 + Claude + Antigravity 연동: 내 노트가 블로그로 자동 발행되는 파이프라인

Obsidian 노트를 Claude AI 에이전트 파이프라인에 연결하면, 주제 입력 한 번으로 웹 리서치, 글 작성, 팩트 검증, 썸네일 생성, SNS 포스트까지 자동 처리됩니다. 2026년 3월 기준 Antigravity(Google DeepMind의 AI 에이전트 IDE)를 실행 환경으로 사용하면 무료 프리뷰 상태에서 Claude 에이전트를 병렬로 돌릴 수 있습니다.

옵시디언에서 글 쓰면 블로그까지 자동으로 올라간다는 이야기, 어디까지 진짜인지 의심부터 했습니다. “결국 마지막에 사람이 복붙하는 거 아냐?” 싶었거든요. 그 의심을 안고 6개월 전부터 직접 구축해본 결과를 정리합니다.

옵시디언 볼트 안에 Claude 에이전트 팀을 구성하고, 주제 하나 던지면 리서치부터 검증까지 돌아가는 파이프라인을 만들었습니다. 지금은 이 시스템으로 월 20개 이상의 블로그 글을 발행하고 있습니다. 과정이 순탄하진 않았습니다. 에이전트가 팩트를 지어내는 일, 도입부가 매번 똑같은 일, HTML 포맷이 깨지는 일을 수없이 겪었고, 그 삽질을 거쳐서 지금의 구조가 만들어졌습니다.

옵시디언 + Claude + Antigravity 연동: 내 노트가 블로그로 자동 발행되는 파이프라인

왜 기존 방식이 답이 아니었나

옵시디언에서 블로그로 발행하는 방법은 여러 가지가 있습니다. obsidian-git 플러그인으로 GitHub에 동기화하고, GitHub Actions로 Hugo나 Jekyll 빌드를 트리거해서 정적 사이트로 배포하는 방식이 대표적입니다.

이 방식은 잘 작동합니다. IRONPARK이나 이예슬님의 블로그에서 실전 사례를 볼 수 있습니다. 문제는 “글을 사람이 직접 다 써야 한다”는 겁니다.

저는 하루에 글을 2~3개씩 발행해야 했습니다. 그런데 리서치에 40분, 글 작성에 60분, 검증에 20분, 썸네일에 15분, SNS 요약에 10분. 한 편에 2시간 반입니다. 하루 3개면 7시간 반이고, 이건 본업이 있는 사람이 유지할 수 있는 구조가 아닙니다.

필요한 건 “발행 자동화”가 아니라 “콘텐츠 생산 자동화”였습니다.

Antigravity가 여기서 어떤 역할을 하는가

여기서 오해가 생기기 쉽습니다. Antigravity는 블로그 발행 플랫폼이 아니라, 에이전트가 일할 수 있는 작업장을 제공하는 IDE입니다.

Antigravity란? Google DeepMind가 2025년 11월에 공개한 AI 에이전트 IDE입니다. VS Code를 포크한 구조로, Gemini 3 Pro, Claude Sonnet 4.5 등의 모델을 병렬로 실행할 수 있습니다. 2026년 3월 현재 무료 프리뷰 상태이며, Gmail 계정만 있으면 사용 가능합니다.

Antigravity의 역할은 간단합니다. 옵시디언 볼트 폴더를 IDE에서 열고, 그 안에 정의된 Claude 에이전트를 실행하는 환경입니다. 글을 쓰는 것도 발행하는 것도 에이전트의 몫이고, Antigravity는 그 에이전트들이 돌아가는 무대입니다.

Cursor에서도 동일한 작업이 가능합니다. 차이점은 Antigravity가 에이전트 병렬 실행에 특화되어 있다는 점입니다. Cursor에서 순차 실행하면 Phase 전체가 약 20분, Antigravity에서 병렬로 돌리면 15분 정도로 줄어드는 체감 차이가 있었습니다.

파이프라인 전체 흐름

실제로 돌아가는 구조를 다이어그램으로 보면 이해가 빠릅니다. 각 Phase 사이에 데이터가 어떻게 흘러가는지 주목하세요.

[옵시디언 inbox 메모 / 글감 시트]
        ↓
[Antigravity 또는 Cursor에서 Vault 열기]
        ↓

[blog-pipeline-team 에이전트 호출]

Phase 1: blog-researcher → 웹 검색 + 볼트 참조 + 경쟁 분석 Phase 2: blog-writer → E-E-A-T 구조 + 채널별 포맷으로 작성 Phase 3: blog-reviewer → 팩트 대조 + AI냄새 체크 + 분량 검증 Phase 4: 저장 + SNS 포스트 + blog-ideas 상태 업데이트 ↓ [02.Areas/blog/ 채널별 경로에 MD 또는 HTML 저장] ↓ [(선택) 외부 블로그에 수동/API 발행]

핵심은 .claude/agents/blog-pipeline-team/ 폴더 안에 에이전트 정의 파일들이 있다는 겁니다. blog-lead.md가 오케스트레이터이고, blog-researcher.mdblog-writer.mdblog-reviewer.md가 각 Phase를 담당합니다. 이 파일들이 옵시디언 볼트 안에 있으니, 볼트를 IDE에서 열기만 하면 바로 실행할 수 있습니다.

Phase 1: 리서치 (5분)

@blog-pipeline-team "주제" 한 줄이면 시작됩니다. researcher 에이전트가 웹 검색 5회 이상을 돌리고, 볼트 내 기존 노트를 Grep으로 검색해서 중복을 체크합니다. 경쟁 블로그 상위 3개도 분석합니다.

모든 팩트에는 출처, 날짜, 신뢰도(공식 ⭐⭐⭐ / 매체 ⭐⭐ / 커뮤니티 ⭐)가 붙습니다. 이 단계에서 출처 없는 숫자가 하나라도 있으면 나중에 reviewer가 걸러냅니다.

Phase 2: 글 작성 (8분)

리서치 패키지를 받은 writer 에이전트가 글을 씁니다. 이 부분에서 가장 중요한 설정이 두 가지입니다.

첫째, 채널별 포맷 분기입니다. TECHTAEK은 Markdown, 배당노마드는 인라인 HTML(Blogger용), coinpost는 Markdown입니다. 에이전트가 채널을 자동으로 판단해서 맞는 포맷으로 출력합니다.

둘째, 도입부 패턴 반복 방지입니다. .claude/MEMORY/warm/recent-patterns.md에 최근 사용한 도입부 유형이 기록되어 있고, writer가 이 파일을 읽어서 최근 3개와 겹치지 않는 유형을 선택합니다. “결론부터 말하면”이나 “오늘은 X를 알아보겠습니다” 같은 AI 패턴도 자동으로 피합니다.

Phase 3: 검증 게이트 (3분)

쓰는 사람과 검증하는 사람을 분리했습니다. reviewer 에이전트가 16개 항목을 체크합니다.

  • AI냄새: “결론부터 말하면”, “~에 대해 알아보겠습니다” 등 7가지 패턴
  • Tropes: 반전 병렬, 자문자답, em dash 과다 등 4가지 구조
  • E-E-A-T: 성찰 섹션 3가지 존재 여부, 구체 경험 존재 여부
  • 팩트대조: 리서치 패키지의 숫자와 글 본문 숫자 일치 여부
  • 분량: Markdown 120줄 이상, 핵심 섹션 12줄 이상

NG가 0개면 PASS, 1~2개면 REVISE(수정 후 재검증), 3개 이상이면 FAIL입니다. 실제로 지금까지 쓴 글의 약 40%가 첫 검증에서 REVISE를 받았습니다. 가장 흔한 이유는 em dash 과다 사용과 팩트 수치 불일치였습니다.

Phase 4: 저장 + 후처리 (1분)

PASS된 글은 채널별 경로에 저장됩니다. 동시에 SNS 포스트(X 280자 + 스레드 500자)가 글 맨 아래에 추가되고, blog-ideas.md의 해당 글감 상태가 🔥에서 ✅로 바뀝니다. recent-patterns.md에 사용한 도입부 유형도 기록됩니다.

6개월 운영하면서 배운 것들

CLAUDE.md가 전부의 시작

볼트 루트에 CLAUDE.md를 놓으면 Claude가 세션 시작 시 자동으로 읽습니다. 여기에 볼트 구조, 에이전트 목록, 행동 원칙을 적어두면 매번 컨텍스트를 설명할 필요가 없습니다.

저는 PARA 구조(Projects/Areas/Resources/Archive), 에이전트 호출 규칙, 블로그 규칙 파일 경로를 CLAUDE.md에 넣어두고 있습니다. 에이전트가 “이 볼트는 어떻게 구성되어 있지?”를 묻지 않아도 되니 실행 시간이 줄었습니다.

writer와 reviewer를 분리한 이유

처음에는 하나의 에이전트가 글 쓰기와 검증을 다 했습니다. 결과는 자기가 쓴 글에 자기가 PASS를 줬습니다. 당연한 겁니다. 자기 글의 문제를 자기가 못 봅니다.

분리한 뒤로 검증 품질이 확 올라갔습니다. 특히 팩트대조에서 효과가 컸습니다. researcher가 수집한 숫자와 writer가 쓴 숫자가 다른 경우를 reviewer가 잡아냅니다. 이건 같은 에이전트가 하면 절대 발견 못 합니다.

모델 선택이 중요하다

현재 설정은 researcher와 reviewer에 haiku급(가벼운 모델), writer에 opus급(무거운 모델)을 쓰고 있습니다. 리서치와 검증은 속도가 중요하고, 글 쓰기는 품질이 중요하기 때문입니다.

모든 Phase에 같은 모델을 쓰면 비용이 3배 넘게 늘어나는데, 품질 차이는 writer 단계에서만 체감됩니다. researcher가 opus급이어도 수집하는 팩트의 수나 정확도에 큰 차이가 없었습니다.

Cursor와 Antigravity, 뭘 쓸까

솔직히 둘 다 됩니다. 파이프라인 자체는 .claude/agents/ 폴더 구조에 의존하지, 특정 IDE에 종속되지 않습니다.

다만 차이가 있습니다. Cursor는 안정적이고, Max Mode에서 opus급 모델을 바로 쓸 수 있습니다. Antigravity는 에이전트 병렬 실행이 되고, 무료 프리뷰 기간에는 비용 부담이 적습니다.

저는 평소에 Cursor를 쓰고, 한 번에 여러 글을 돌릴 때 Antigravity를 씁니다. 하나의 글만 쓸 때는 Cursor의 안정성이 더 편하고, 5개 글을 동시에 리서치할 때는 Antigravity의 병렬 처리가 빠릅니다.

실전 사례: 이 글이 만들어진 과정

이 글 자체가 이 파이프라인으로 만들어졌습니다. 과정을 투명하게 공개합니다.

  1. blog-ideas.md에 글감이 있었습니다. [id:: BLOG-20260311-001], priority 9, status backlog.
  2. Cursor에서 @blog-pipeline-team "옵시디언 + Claude + Antigravity 연동" 명령을 실행했습니다.
  3. Phase 1에서 researcher가 8회 웹 검색을 돌렸습니다. Antigravity 공식 FAQ, IRONPARK의 Obsidian 발행 글, Claude Code + Obsidian MCP 가이드 등을 수집했습니다. 볼트 내 기존 글 260111(편집 꿀팁), Clawdbot 연동 글과의 중복 여부도 체크했습니다.
  4. Phase 2에서 writer가 리서치 패키지를 받아 초안을 작성했습니다. 채널이 TECHTAEK이라 Markdown 포맷이 적용됐고, recent-patterns.md를 참조해서 최근 사용한 TYPE 2, 8, 9를 피한 도입부를 선택했습니다.
  5. Phase 3에서 reviewer가 16개 항목을 검증했습니다. 첫 검증에서 NG 6개를 받았습니다. 도입부 패턴 혼동, 시간 수치 불일치, fragment paragraph 과다, 분량 미달 등이었습니다.
  6. 수정 후 재검증을 통과했고, Phase 4에서 MD 파일 저장, blog-ideas 상태 업데이트, SNS 포스트 생성까지 완료됐습니다.

총 소요 시간은 파이프라인 실행 약 15분 + 수정 10분 + 사람 편집 20분입니다. 리서치부터 시작했으면 3시간은 걸렸을 작업입니다.

자주 발생하는 문제와 해결법

6개월 동안 약 120편의 글을 이 파이프라인으로 돌리면서 반복적으로 만난 문제들이 있습니다.

에이전트가 숫자를 지어내는 문제. researcher가 웹 검색에서 가져온 숫자와 writer가 본문에 쓴 숫자가 다른 경우가 잦았습니다. 해결책은 reviewer의 팩트대조 항목을 강화하는 것이었습니다. 리서치 패키지에 “핵심 팩트 테이블”을 만들고, reviewer가 본문의 모든 숫자를 이 테이블과 1:1 대조하도록 규칙을 넣었습니다.

도입부가 매번 “결론부터 말하면”으로 시작하는 문제. recent-patterns.md에 최근 사용한 도입부 유형을 기록하고, writer가 이 파일을 읽어서 겹치지 않는 유형을 선택하게 만들었습니다. 11가지 도입부 유형(의심, 고백, 공감, 놀라움 등)을 정의해두고 순환시키는 방식입니다.

인라인 HTML 채널에서 스타일이 깨지는 문제. 배당노마드 채널은 Blogger용 인라인 HTML을 출력해야 합니다. <style> 태그를 쓰면 안 되고, 모든 스타일을 style="" 속성에 넣어야 합니다. 처음에는 writer가 이 규칙을 자주 어겼는데, HTML 템플릿 파일을 별도로 만들어서 writer에게 참조하게 한 뒤로 오류율이 크게 줄었습니다.

발행은 어떻게 하나

파이프라인의 최종 출력물은 옵시디언 볼트 안의 Markdown 파일입니다. 여기서 실제 블로그에 올리는 방법은 여러 가지입니다.

  • 수동 복사: MD 파일을 열어서 블로그 에디터에 붙여넣기. 가장 단순하고 확실합니다.
  • Git + 정적 사이트: Hugo/Jekyll/VitePress에 볼트를 연결하면 커밋 시 자동 배포됩니다.
  • Tistory API: obsidian-tistory-plugin이나 Python 스크립트로 티스토리에 자동 포스팅이 가능합니다.
  • WordPress REST API: WP 사이트가 있다면 API로 MD → 포스트 변환 자동화가 됩니다.

저는 현재 수동 복사를 쓰고 있습니다. “자동화의 끝이 왜 수동이냐”고 물을 수 있는데, 발행 전에 한 번 눈으로 훑어보는 과정이 필요하다고 판단했기 때문입니다. 에이전트가 검증까지 해줬다 해도, 최종 발행 버튼은 사람이 누르는 게 맞다고 생각합니다.

내가 느낀 점

이 파이프라인을 만들면서 가장 크게 바뀐 건 “블로그 글 쓰기”에 대한 인식입니다.

예전에는 글 하나를 쓰려면 심적 준비가 필요했습니다. “오늘 이거 써야 하는데” 하면서 미루다가 결국 밤에 급하게 쓰는 패턴이 반복됐습니다. 지금은 출근 전에 주제만 던져놓으면 점심 때 초안이 나와 있습니다. 그걸 읽고 수정하는 건 20분이면 됩니다.

글쓰기의 중심이 창작 쪽에서 편집 쪽으로 옮겨간 느낌입니다. 에이전트가 초안을 쓰고, 저는 그 위에 제 경험과 관점을 덧붙입니다. 이게 AI와 협업하는 가장 현실적인 방식이 아닐까 싶습니다.

솔직한 마음

걱정도 있습니다. AI가 쓴 글이 넘쳐나는 시대에, 이런 파이프라인이 오히려 “양산형 콘텐츠”를 만드는 도구가 될 수 있다는 우려요.

그래서 reviewer 게이트를 엄격하게 만들었고, 성찰 섹션 3가지를 필수로 넣었습니다. AI가 절대 흉내 낼 수 없는 건 “내가 이걸 써보고 어떤 감정이 들었는지”입니다. 기술적 팩트는 에이전트가 수집하고, 감정과 판단은 제가 넣습니다.

이 균형이 무너지면 이 파이프라인은 그냥 스팸 생성기가 됩니다. 그래서 매주 발행된 글을 읽으면서 “이건 정말 내 글인가?”를 스스로에게 묻고 있습니다. 답이 “아니오”인 글은 비공개로 돌립니다.

앞으로 할 것들

  1. 발행 자동화 마지막 단계 연결. 현재 수동 복사인 발행 단계를 WordPress REST API로 연결해서, PASS된 글을 “draft” 상태로 자동 업로드하는 걸 3월 안에 테스트할 계획입니다.
  2. 성과 피드백 루프 구축. Google Analytics 데이터를 에이전트에 연결해서 “어떤 유형의 글이 트래픽을 받는가”를 파이프라인에 반영하려 합니다. 지금은 제가 수동으로 판단하고 있는데, 이것도 자동화할 여지가 있습니다.
  3. 다국어 확장. TECHTAEK에 영어 채널(techtaek-en)을 추가했습니다. 같은 파이프라인에서 --lang en 플래그만 붙이면 영어 글이 나옵니다. 한국어 개발자 관점의 영어 기술 블로그가 차별화 포인트가 될 수 있다고 봅니다.

FAQ

Q. Antigravity 없이도 이 파이프라인을 쓸 수 있나요?

네. Cursor에서도 동일하게 작동합니다. 파이프라인은 .claude/agents/ 폴더 구조에 의존하지 특정 IDE에 종속되지 않습니다. Antigravity의 장점은 병렬 실행과 무료 프리뷰입니다.

Q. Claude 비용이 얼마나 드나요?

글 한 편당 Phase 1~4를 전부 돌리면 약 $0.5~1.5 정도입니다. researcher/reviewer는 haiku급이라 저렴하고, writer가 opus급이라 비용의 80% 이상을 차지합니다. 월 20편 기준 $15~30 수준입니다.

Q. 옵시디언 플러그인이 필요한가요?

기본 파이프라인에는 필요 없습니다. 볼트 폴더를 IDE(Antigravity/Cursor)에서 열고 에이전트를 실행하는 방식입니다. 다만 obsidian-git을 쓰면 버전 관리가 편해지고, obsidian-tistory-plugin을 쓰면 티스토리 발행이 자동화됩니다.

Q. 글 품질은 사람이 쓴 것과 비교하면 어떤가요?

초안 기준으로 70~80점이라고 봅니다. 팩트는 정확하고 구조도 잡혀 있지만, “이 사람이 진짜 써봤구나”라는 느낌은 사람이 넣어야 합니다. 성찰 섹션, 실패담, 감정 표현을 20분 정도 직접 수정하면 90점 이상으로 올라갑니다.

Q. 기존에 쓴 260111 글이랑 뭐가 다른가요?

260111은 “Cursor/Antigravity에서 옵시디언 편집하고 Claude Skill 쓰는 법”입니다. 이 글은 “노트에서 블로그까지 전체 파이프라인(리서치→작성→검증→발행)이 어떻게 연결되는가”에 초점을 맞추고 있습니다. 편집 vs 파이프라인이라는 차이입니다.

Q. blog-pipeline-team 에이전트 정의 파일을 공유할 수 있나요?

.claude/agents/blog-pipeline-team/ 폴더에 blog-lead.mdblog-researcher.mdblog-writer.mdblog-reviewer.md가 있습니다. 이 파일들은 Markdown으로 작성되어 있어서 누구나 자신의 볼트에 복사해서 수정할 수 있습니다. 구체적인 구조는 별도 글로 정리할 예정입니다.

결론

옵시디언에서 블로그까지의 자동화는 “발행”이 아니라 “생산”에서 시작해야 합니다. Git hooks나 API 연동으로 발행을 자동화해봤자, 글 쓰는 시간 2시간 반은 그대로입니다.

Claude 에이전트 파이프라인은 그 2시간 반을 20분으로 줄여줍니다. 리서치, 초안, 검증까지 에이전트가 하고, 사람은 경험과 판단을 얹는 구조입니다. Antigravity든 Cursor든, IDE에서 볼트를 열고 @blog-pipeline-team 한 줄이면 됩니다.

다만 이 도구가 “내 글”을 만들어주는 건 아닙니다. 에이전트는 재료를 준비하고, 글의 주인은 여전히 사람입니다. 그 균형을 지키는 한, 이 파이프라인은 1인 블로거에게 현실적인 무기가 됩니다.

참고 자료