📚 이 글은 “개발자가 AI 자동화로 부업하는 실전 기록” 시리즈입니다.
- 📌 1편: AI 자동화로 개발자 부업하는 법 — 실패 3번 하고 나서야 알게 된 것들
- 📌 2편: WordPress + Claude API Day 1 세팅 기록
- 📌 3편: Slack 봇으로 블로그 자동 발행 트리거 만들기 — 개발자 부업 Day 2
- 📌 4편: Threads API 연동으로 블로그 발행과 SNS 자동 배포 연결하기 — Day 3
- 📌 5편: Notion API로 블로그 발행 기록 자동화하기
- 📌 6편: Windows Task Scheduler로 블로그 자동 발행 스케줄러 만들기 — 개발자 부업 Day 5
- 📌 7편: 블로그 SEO 최적화 실전 — Yoast SEO + 키워드 전략부터 검색 상위 노출까지
- 📌 8편: 블로그 자동화 2주 운영 결과 공개 — 트래픽, 비용, 배운 것들 (현재 글)
- 📌 9편: 쿠팡파트너스 가입부터 자동화까지 — 개발자가 수익화 채널 추가하는 실전기 (예정)
- 📌 10편: 구글 애드센스 신청 도전기 — 10개 글 채우고 드디어 신청했다 (예정)
← 7편: 블로그 SEO 최적화 실전 — Yoast SEO + 키워드 전략부터 검색 상위 노출까지
솔직히 말하면, 2주 결과를 정리하면서 두 가지 감정이 동시에 왔다. 하나는 “생각보다 되네?”라는 뿌듯함, 다른 하나는 “이게 돈이 되긴 하나?”라는 냉정한 현실 인식. 기대도 실망도 아닌 묘한 중간 어딘가.
이 시리즈를 1편부터 따라오신 분들은 아시겠지만, 처음 세팅하는 데만 5일이 걸렸고, 티스토리·네이버 블로그에서 두 번 막혔고, 2달 동안 설계만 하다가 글을 한 편도 못 올린 적도 있었다. 그 전력을 가진 내가 이번에는 실제로 2주를 버텼다. 그것만으로도 일단 합격점이라고 생각한다.
오늘은 숫자를 다 꺼내놓는다. 트래픽, 비용, 그리고 내가 틀렸던 것들.
2주 동안 실제로 어떻게 운영했나 — 자동화 루틴 요약
먼저 운영 방식부터 정리하고 넘어가야 할 것 같다. 숫자만 보면 맥락이 없으니까.
2주 동안 총 14편의 글을 발행했다. 하루에 한 편 꼴. 물론 매일 손으로 쓴 게 아니다. 6편에서 구축한 Windows Task Scheduler가 매일 오전 10시에 Python 스크립트를 실행하고, Claude API가 글을 생성하고, WordPress REST API로 자동 발행한다. 나는 그날 오전에 Slack 알림을 확인하고 간단히 훑어보는 게 전부다.
실제 내가 손을 댄 건 주제 키워드 세팅 정도다. 매주 일요일 저녁에 30분 정도 앉아서 다음 주 7개 키워드를 Notion 데이터베이스에 입력한다. Python 스크립트가 그 DB를 읽어서 하루에 하나씩 소비하는 구조다. 처음에 이게 잘 될까 반신반의했는데, 진짜로 돌아가고 있다.
발행된 14편 중 내가 직접 수정한 글은 3편이다. 나머지 11편은 자동 생성 그대로 올라갔다. 수정한 3편은 클로드가 사실 관계를 애매하게 서술한 경우와, 내 경험담이 필요한 섹션에서 너무 일반적인 내용을 쓴 경우였다.
키워드 세팅 주 30분 + Slack 확인 매일 5분. 이게 내 실제 투입 시간의 전부였다.
트래픽 결과 — 숫자 그대로 공개
Google Search Console 기준으로 정리한다. 블로그를 개설한 날을 Day 1으로 잡으면, 2주차 종료 시점(Day 14)까지의 누적 수치다.
| 지표 | 1주차 (Day 1~7) | 2주차 (Day 8~14) |
|---|---|---|
| 총 클릭수 | 12 | 47 |
| 총 노출수 | 184 | 1,203 |
| 평균 CTR | 6.5% | 3.9% |
| 평균 게재순위 | 38.2위 | 24.7위 |
| 색인된 글 수 | 6편 | 13편 |
1주차에 클릭 12건. 처음엔 “이게 말이 되나?” 싶었다. 근데 냉정하게 생각해보면, 도메인 나이가 1주도 안 됐고 색인도 절반밖에 안 된 상황에서 뭘 기대한 건지 싶기도 했다. 2주차에 노출이 6배 넘게 뛴 건 7편에서 정리한 Yoast SEO 설정과 내부 링크 작업이 효과를 낸 것 같다.
가장 많이 클릭된 글은 뜻밖에도 “Windows Task Scheduler 블로그 자동화” 키워드로 쓴 6편 관련 글이었다. 국내에 이 조합으로 검색하는 사람이 적지 않은데 경쟁 글도 적다는 걸 몸으로 배웠다. 롱테일 키워드가 진짜라는 걸 숫자로 확인한 순간이었다.
반대로 가장 실망한 건 “개발자 부업”처럼 검색량이 많아 보이는 키워드로 쓴 글들이다. 노출은 됐는데 순위가 워낙 낮아서 클릭까지 이어지지 않았다. 새 도메인이 고경쟁 키워드에서 버티기는 역시 쉽지 않다.
2주차에 노출 1,200회, 클릭 47건. 초라해 보이지만 방향성은 맞다. 고경쟁 키워드보다 롱테일이 훨씬 실속 있었다.
실제 비용 — 한 달치 예상 포함해서 공개
이 시리즈에서 비용을 숨긴 적이 없다. 이번에도 그대로 공개한다.
| 항목 | 2주 실제 비용 | 월 환산 예상 |
|---|---|---|
| Hostinger 비즈니스 플랜 | 약 3,500원 | 약 7,000원 |
| Claude API (claude-sonnet-4-6) | 약 4,800원 | 약 9,600원 |
| 도메인 (연간 → 일할 계산) | 약 800원 | 약 1,600원 |
| 합계 | 약 9,100원 | 약 18,200원 |
Claude API 비용이 좀 애매하게 느껴질 수 있는데, 구체적으로 설명하면 이렇다. 14편 글을 생성하면서 총 약 $3.5 정도 썼다. 편당 약 $0.25, 우리 돈으로 330원 정도. 2,500자짜리 글 한 편이 330원이면 솔직히 싸다고 생각한다. 내가 한 편 쓰는 데 평균 3~4시간 걸리는 걸 감안하면.
근데 여기서 중요한 게 하나 있다. 비용 대비 수익은 아직 0원이다. 현재 애드센스 미신청 상태고, 쿠팡파트너스도 연동 전이다. 그러니까 지금은 순수하게 적자다. 이걸 솔직하게 써야 한다고 생각했다. “자동화로 돈 번다”는 말을 너무 쉽게 하는 글이 많은데, 초반 2주는 그냥 씨 뿌리는 시간이다.
2주 운영 비용 약 9,100원, 수익 0원. 현실이 이렇다. 하지만 월 18,200원이면 리스크가 낮은 실험이다.
자동화 시스템이 실제로 어떻게 작동하는지 — 핵심 코드 공개
이 글을 읽는 분들 중 직접 구현해보고 싶은 분들을 위해 실제로 돌아가고 있는 스크립트의 핵심 로직을 공유한다. 전체 코드는 아니고, 가장 많이 물어봤던 “Notion에서 키워드 가져와서 Claude로 글 생성하는” 부분이다.
⚙️ 사전 준비: NOTION_TOKEN, NOTION_DATABASE_ID, ANTHROPIC_API_KEY를 .env 파일에 저장해두어야 합니다. pip install anthropic notion-client python-dotenv로 의존성을 설치하세요.
import os
from dotenv import load_dotenv
import anthropic
from notion_client import Client
load_dotenv()
notion = Client(auth=os.environ["NOTION_TOKEN"])
claude = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
def get_today_keyword():
"""Notion DB에서 status='pending'인 항목 중 가장 위의 키워드 하나 가져오기"""
response = notion.databases.query(
database_id=os.environ["NOTION_DATABASE_ID"],
filter={"property": "Status", "select": {"equals": "pending"}},
sorts=[{"property": "Created", "direction": "ascending"}],
page_size=1
)
if not response["results"]:
return None, None
page = response["results"][0]
keyword = page["properties"]["Keyword"]["title"][0]["text"]["content"]
return keyword, page["id"]
def generate_blog_post(keyword):
"""Claude API로 블로그 글 생성"""
message = claude.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
messages=[{
"role": "user",
"content": f"""
다음 키워드로 SEO에 최적화된 블로그 글을 작성해주세요.
키워드: {keyword}
요구사항:
- 제목은 키워드 포함, 60자 이내
- 본문 2000자 이상, 소제목(h2) 3개 이상
- 자연스러운 한국어, 실용적인 정보 위주
- HTML 형식으로 출력 (WordPress 직접 삽입용)
출력 형식:
TITLE: [제목]
CONTENT: [본문 HTML]
"""
}]
)
return message.content[0].text
def mark_as_done(page_id):
"""발행 완료된 항목 status를 'done'으로 업데이트"""
notion.pages.update(
page_id=page_id,
properties={"Status": {"select": {"name": "done"}}}
)
if __name__ == "__main__":
keyword, page_id = get_today_keyword()
if keyword:
print(f"[INFO] 오늘의 키워드: {keyword}")
post_content = generate_blog_post(keyword)
# WordPress 발행 로직은 별도 모듈 (wp_publisher.py)
from wp_publisher import publish_to_wordpress
publish_to_wordpress(post_content)
mark_as_done(page_id)
print("[INFO] 발행 완료 및 Notion 업데이트")
else:
print("[WARN] 오늘 발행할 키워드 없음")
WordPress 발행 부분은 2편에서 다뤘던 JWT 인증 + REST API 로직을 그대로 쓴다. 여기서는 Notion 연동과 Claude 호출 흐름만 보면 된다. 이 스크립트가 매일 오전 10시에 Task Scheduler로 실행되고 있다.
Notion → Claude → WordPress로 이어지는 파이프라인. 복잡해 보이지만 실제 코드는 100줄 이내다.
내가 틀렸던 것들 — 2주 운영하며 바꾼 생각
솔직하게 쓰는 게 이 시리즈의 원칙이니까, 틀렸던 것도 기록해둔다.
첫 번째로 틀렸던 것: “글 수 = 트래픽”이라는 착각. 처음에 하루 한 편씩 발행하면 2주에 14편이고, 편당 방문자가 10명만 와도 하루 140명이겠다고 계산했다. 완전한 오산이었다. 신규 도메인은 구글이 천천히 신뢰를 쌓아가는 구조라 초반엔 글이 많아도 노출 자체가 제한된다. 서두르기보다 일관성을 보여주는 게 더 중요했다.
두 번째로 틀렸던 것: 자동화하면 손 안 대도 된다는 생각. 자동화는 반복 작업을 없애주는 것이지, 기획과 품질 관리를 대신해주지 않는다. 클로드가 쓴 글이 틀린 건 아닌데, “이 사람은 실제로 해봤나?”라는 느낌이 드는 글이 분명히 있다. 결국 내 경험과 시각이 들어가는 글이 더 읽히고 오래 머문다.
세 번째로 틀렸던 것: 트래픽이 바로 수익이 된다는 생각. 블로그 수익화는 트래픽 → 애드센스 승인 → 광고 노출 → 클릭 수익의 단계를 거친다. 나는 아직 애드센스 신청도 안 했다. 지금은 블로그 자체를 만들어가는 단계이고, 수익은 그다음 챕터다.
자동화가 시간을 아껴줬지만, 방향 설정과 품질 판단은 여전히 사람의 몫이었다.
Notion 대시보드로 보는 2주 운영 현황
5편에서 만든 Notion 발행 기록 대시보드가 이번에 진짜 빛을 발했다. 자동화 시스템이 글을 발행할 때마다 Notion에 행을 추가하는데, 이게 쌓이니까 한눈에 보이기 시작했다.
⚙️ 참고: 아래 코드는 Notion API로 발행 기록을 추가하는 함수입니다. notion-client 패키지와 Notion Integration 설정이 완료된 상태에서 사용하세요.
def log_to_notion(title: str, url: str, keyword: str, word_count: int):
"""WordPress 발행 완료 후 Notion DB에 기록 추가"""
from datetime import datetime, timezone
notion.pages.create(
parent={"database_id": os.environ["NOTION_DATABASE_ID"]},
properties={
"Title": {
"title": [{"text": {"content": title}}]
},
"URL": {
"url": url
},
"Keyword": {
"rich_text": [{"text": {"content": keyword}}]
},
"WordCount": {
"number": word_count
},
"PublishedAt": {
"date": {"start": datetime.now(timezone.utc).isoformat()}
},
"Status": {
"select": {"name": "published"}
}
}
)
print(f"[INFO] Notion 기록 완료: {title}")
이 로그 덕분에 2주 뒤에 이 글을 쓸 수 있었다. 발행 일시, 키워드, 글자수가 다 기록돼 있으니 “언제 어떤 키워드로 글이 나갔고, 그 글이 어떻게 됐는지”를 추적할 수 있다. Search Console 데이터와 교차로 보면 어떤 키워드가 효과적이었는지 보인다.
운영 기록을 남기는 게 귀찮아 보여도, 나중에 이게 의사결정의 근거가 된다. 감으로 운영하는 것과 데이터로 운영하는 것의 차이는 생각보다 크다.
Notion 발행 대시보드가 없었다면 이 글을 쓰기 훨씬 어려웠을 것이다. 기록이 곧 인사이트다.
3주차에 달라진 것들 — 지금 이 시점의 솔직한 평가
2주 결과를 보면서 내가 내린 결론은 이렇다. “방향은 맞다, 속도는 느리다, 하지만 포기할 이유도 없다.”
트래픽 47클릭이 많은 건 아니다. 하지만 2주 전 0에서 시작했다. 게재 순위가 38위에서 24위로 낮아졌다. 색인된 글이 6편에서 13편으로 늘었다. 노출이 184회에서 1,203회로 6배 늘었다. 이걸 그래프로 그리면 오른쪽 위를 향하고 있다.
비용 대비 수익은 아직 마이너스다. 근데 지금 이 단계에서 수익을 기대하는 건 씨 뿌린 날 수확을 기대하는 것과 같다. 내가 세운 최소 기준은 “10편 발행 후 애드센스 신청”이었다. 지금 14편이 됐으니 다음 편은 드디어 애드센스 신청 얘기를 쓸 수 있다.
그리고 쿠팡파트너스도 연동해보려고 한다. 블로그 글에 제품 링크를 자동으로 삽입하는 로직을 테스트 중인데, 이게 되면 트래픽이 작아도 클릭 수익이 생길 수 있다. 물론 이것도 “
Pingback: 쿠팡파트너스 가입부터 자동화까지 — 개발자 블로그 수익화 실전기 | devYul