Skip to content

Repository files navigation

image

ViruAgent

터미널에서 티스토리 블로그 글을 발행까지 한 번에! (CLI 기반 AI Agent 도구)

태균맨(tae*virus)의 별명 Viru + Agent = ViruAgent (바이루에이전트)

티스토리 API를 분석해서 OpenAI와 엮었습니다. 글감 잡기 → 초안 생성 → 수정 → 발행까지 터미널 안에서 끝납니다.

공식 API가 아닌 비공식 내부 통신을 쓰기 때문에, 학습/실험 용도로 만들었습니다.


📋 Patch Notes


기능

  • 자연어로 글 발행 — "AI 트렌드로 글 써서 발행해줘"라고 말하면 AI가 알아서 글 생성부터 발행까지 처리합니다.
  • 에이전트 패턴 — OpenAI Function Calling 기반. AI가 도구를 자율적으로 선택하고 실행하는 에이전트 루프로 동작합니다.
  • 웹검색 기반 글쓰기 — DuckDuckGo 검색 결과를 바탕으로 최신 정보/트렌드를 반영해 글 초안을 생성합니다.
  • 수동 명령어 호환 — /write, /edit, /publish 같은 슬래시 명령어도 그대로 사용할 수 있습니다.
  • Unsplash 이미지 자동 삽입 — 글 생성 시 주제에 맞는 이미지를 자동 검색하고 티스토리에 업로드합니다. 첫 번째 이미지가 썸네일로 설정됩니다.
  • 브라우저 로그인으로 세션 관리 — OAuth 설정 없이 Playwright로 실제 로그인해서 쿠키를 가져옵니다.
  • 유연한 글 구조 — 5가지 글 유형(튜토리얼, 비교/리뷰, 리스트, 정보 가이드, 인사이트)을 AI가 주제에 맞게 자율 선택합니다.
  • CLI UX — 커맨드 힌트, 화살표 키 메뉴, 상태바 등을 넣어서 터미널에서도 불편하지 않게 만들었습니다.

시작하기

필요한 것: Node.js 18+, OpenAI API Key

npm install -g viruagent
viruagent

또는 설치 없이 바로 실행:

npx viruagent

최초 실행 시 OpenAI API Key를 입력하면 ~/.viruagent/config.json에 자동 저장됩니다. Unsplash API Key는 /set api 명령어로 나중에 설정할 수 있습니다.


명령어

image
명령어 설명
/write <주제> AI가 블로그 글 초안 생성
/edit <지시> 초안 수정 ("더 친근하게 바꿔줘" 같은 식으로)
/preview 작성 중인 글 미리보기
/publish 글 발행
/set 카테고리, 공개 설정, 모델, 말투 변경
/list 최근 발행 글 목록
/login 티스토리 세션 갱신
/logout 티스토리 세션 삭제

에이전트 모드

슬래시 명령어 없이 자연어로 말하면 AI가 자율적으로 동작합니다.

viruagent> AI 에이전트 주제로 글 써서 발행해줘

✓ 웹검색 완료: "효과적인 시간 관리 팁" (5건)
✓ 글 생성 완료: "AI 에이전트 완벽 가이드: 챗봇과의 7가지 차이"
✓ 발행 완료! https://tkman.tistory.com/60

AI
블로그 글이 성공적으로 발행되었습니다!

clideo_editor_32d1094183c7474a9985dbfd56abda67

자연어 요청 예시

입력 AI가 하는 일
"AI 트렌드로 글 써줘" generate_post 호출 → 초안 생성
"서론을 더 흥미롭게 수정해줘" edit_post 호출 → 초안 수정
"발행해줘" publish_post 호출 → 즉시 발행
"비공개로 발행해줘" 공개설정 변경 후 발행
"글 써서 바로 발행해줘" 생성 → 발행 연속 실행

동작 원리

  1. 사용자가 자연어로 요청
  2. OpenAI Function Calling으로 AI가 적절한 도구 선택
  3. 코드가 도구 실행 → 결과를 AI에게 전달
  4. AI가 다음 행동 판단 (추가 도구 호출 또는 텍스트 응답)
  5. 모든 작업 완료 후 결과 보고

기존 /write, /edit, /publish 명령어도 100% 호환됩니다.


Claude Code로 글쓰기

Claude Code에서 자연어로 명령할 수 있습니다.

> viruagent로 블로그에 글 아무거나 써줘 카테고리는 "기타"
image

카테고리, 공개 여부, 발행 방식을 물어본 뒤 AI가 글을 생성해서 티스토리에 발행합니다.

직접 CLI로 실행

# 카테고리 목록 조회
node src/cli-post.js --list-categories

# 글 생성 + 발행
node src/cli-post.js --topic "주제" --category 1247460 --visibility public

# 미리보기만 (발행 안 함)
node src/cli-post.js --topic "주제" --dry-run

# 임시저장
node src/cli-post.js --topic "주제" --draft

Unsplash 이미지 연동

글 생성 시 본문에 <!-- IMAGE: keyword --> 플레이스홀더가 자동 삽입됩니다. Unsplash API Key가 설정되어 있으면 (/set api):

  1. 키워드로 Unsplash에서 이미지 검색
  2. 이미지 다운로드 → 티스토리에 업로드
  3. 티스토리 네이티브 이미지 치환자([##_Image|kage@..._##])로 변환
  4. 첫 번째 이미지가 자동으로 글 썸네일(대표 이미지)로 설정

키가 없으면 이미지 처리를 건너뛰고 글만 발행합니다.


시스템 프롬프트 커스터마이징

글의 톤, 구조, HTML 스타일은 config/system-prompt.md에서 수정할 수 있습니다.

config/
├── prompt-config.json   # 모델, 말투, 이미지 설정
└── system-prompt.md     # AI 글쓰기 규칙 (글 유형, HTML 레퍼런스, 톤)

글 유형 (AI가 주제에 맞게 자율 선택)

유형 구조
튜토리얼 준비물 → 단계 → 결과 확인 → 트러블슈팅
비교/리뷰 비교 테이블 + 장단점 → 추천
리스트 번호 소제목 + 항목별 팁
정보 가이드 문제 → 원인 → 해결 → FAQ
인사이트 화두 → 근거 → 시사점 → 액션

prompt-config.json 설정

{
  "defaultModel": "gpt-4o-mini",
  "defaultTone": "정보전달",
  "defaultLength": 2500,
  "webSearch": {
    "enabled": true,
    "provider": "duckduckgo",
    "defaultMaxResults": 5,
    "timeoutMs": 8000
  },
  "imageSource": "unsplash",
  "imagesPerPost": 3
}

로그

실행 로그가 logs/ 폴더에 날짜별로 기록됩니다.

logs/
└── 2026-02-11.log

이미지 업로드 실패, API 오류 등의 디버깅에 활용할 수 있습니다.

[10:30:15.123] [INFO] [unsplash] 이미지 플레이스홀더 3개 발견
[10:30:16.456] [INFO] [unsplash] Unsplash 이미지 찾음 | {"keyword":"laptop"}
[10:30:17.789] [INFO] [tistory] 이미지 업로드 성공 | {"url":"https://blog.kakaocdn.net/..."}
[10:30:17.800] [ERROR] [tistory] 이미지 업로드 실패 | {"status":500}

기술 스택

  • 런타임: Node.js (CommonJS)
  • AI: OpenAI SDK
  • 이미지: Unsplash API
  • 자동화: Playwright, Fetch
  • CLI: Chalk, Readline

주의사항

이 프로젝트는 티스토리의 비공식 내부 API를 사용합니다.

  • 정책이 바뀌면 언제든 안 될 수 있습니다.
  • 사용에 따른 책임은 본인에게 있습니다.

교육/학습 목적으로 만들었습니다.


License

MIT


Patch Notes

버전 내용
v1.3.1 GitHub Actions npm 자동 배포 워크플로우 추가
v1.3.0 웹 검색 기반 글 작성 도구 추가, 발행 로그 기반 패턴 요약 적용
v1.2.0 초기 설정 위저드, 저장 방식 전환, Function Calling 에이전트 도입
v1.1.0 시스템 프롬프트 분리, Unsplash 연동, 썸네일 자동 설정
v1.0.0 티스토리 자동 글쓰기 모듈 초기 설정

About

AI-powered Tistory blog automation from the CLI: an AI Agent handles the entire process from writing and editing to publishing.

Resources

Code of conduct

Contributing

Security policy

Stars

16 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages