npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

viruagent

v1.3.1

Published

AI 기반 티스토리 블로그 자동 발행 CLI 도구

Downloads

35

Readme

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 명령어로 나중에 설정할 수 있습니다.


명령어


| 명령어 | 설명 | | --------------- | -------------------------------------------- | | /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로 블로그에 글 아무거나 써줘 카테고리는 "기타"

카테고리, 공개 여부, 발행 방식을 물어본 뒤 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 | 티스토리 자동 글쓰기 모듈 초기 설정 |