viruagent
v1.3.1
Published
AI 기반 티스토리 블로그 자동 발행 CLI 도구
Downloads
35
Readme
ViruAgent
터미널에서 티스토리 블로그 글을 발행까지 한 번에! (CLI 기반 AI Agent 도구)
태균맨(tae*virus)의 별명 Viru + Agent = ViruAgent (바이루에이전트)
티스토리 API를 분석해서 OpenAI와 엮었습니다. 글감 잡기 → 초안 생성 → 수정 → 발행까지 터미널 안에서 끝납니다.
공식 API가 아닌 비공식 내부 통신을 쓰기 때문에, 학습/실험 용도로 만들었습니다.
기능
- 자연어로 글 발행 — "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 명령어로 나중에 설정할 수 있습니다.
- OpenAI API Key: platform.openai.com/api-keys
- Unsplash API Key (선택): unsplash.com/developers (시간당 50회 제한)
명령어
| 명령어 | 설명 |
| --------------- | -------------------------------------------- |
| /write <주제> | AI가 블로그 글 초안 생성 |
| /edit <지시> | 초안 수정 ("더 친근하게 바꿔줘" 같은 식으로) |
| /preview | 작성 중인 글 미리보기 |
| /publish | 글 발행 |
| /set | 카테고리, 공개 설정, 모델, 말투 변경 |
| /list | 최근 발행 글 목록 |
| /login | 티스토리 세션 갱신 |
| /logout | 티스토리 세션 삭제 |
에이전트 모드
슬래시 명령어 없이 자연어로 말하면 AI가 자율적으로 동작합니다.
viruagent> AI 에이전트 주제로 글 써서 발행해줘
✓ 웹검색 완료: "효과적인 시간 관리 팁" (5건)
✓ 글 생성 완료: "AI 에이전트 완벽 가이드: 챗봇과의 7가지 차이"
✓ 발행 완료! https://tkman.tistory.com/60
AI
블로그 글이 성공적으로 발행되었습니다!자연어 요청 예시
| 입력 | AI가 하는 일 |
| ----------------------------- | -------------------------------- |
| "AI 트렌드로 글 써줘" | generate_post 호출 → 초안 생성 |
| "서론을 더 흥미롭게 수정해줘" | edit_post 호출 → 초안 수정 |
| "발행해줘" | publish_post 호출 → 즉시 발행 |
| "비공개로 발행해줘" | 공개설정 변경 후 발행 |
| "글 써서 바로 발행해줘" | 생성 → 발행 연속 실행 |
동작 원리
- 사용자가 자연어로 요청
- OpenAI Function Calling으로 AI가 적절한 도구 선택
- 코드가 도구 실행 → 결과를 AI에게 전달
- AI가 다음 행동 판단 (추가 도구 호출 또는 텍스트 응답)
- 모든 작업 완료 후 결과 보고
기존 /write, /edit, /publish 명령어도 100% 호환됩니다.
Claude Code로 글쓰기
Claude Code에서 자연어로 명령할 수 있습니다.
> viruagent로 블로그에 글 아무거나 써줘 카테고리는 "기타"카테고리, 공개 여부, 발행 방식을 물어본 뒤 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 "주제" --draftUnsplash 이미지 연동
글 생성 시 본문에 <!-- IMAGE: keyword --> 플레이스홀더가 자동 삽입됩니다. Unsplash API Key가 설정되어 있으면 (/set api):
- 키워드로 Unsplash에서 이미지 검색
- 이미지 다운로드 → 티스토리에 업로드
- 티스토리 네이티브 이미지 치환자(
[##_Image|kage@..._##])로 변환 - 첫 번째 이미지가 자동으로 글 썸네일(대표 이미지)로 설정
키가 없으면 이미지 처리를 건너뛰고 글만 발행합니다.
시스템 프롬프트 커스터마이징
글의 톤, 구조, 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 | 티스토리 자동 글쓰기 모듈 초기 설정 |
