A CLI tool where AI agents write, tag, and publish blog posts automatically.
Designed not for humans, but for AI agents.
Operates via CLI + skill files. The CLI handles the interface; the skill file (viruagent.md) instructs the AI agent on workflow, formatting, and rules.
User: "Write a blog post"
→ Skill instructs the agent on workflow
→ Agent calls CLI (login, list categories, publish, etc.)
User: /viruagent "Write a post"
→ Direct skill invocation
- Skill file: Defines what to do and in what order (post structure, tag rules, image settings)
- CLI: Executes tasks per skill instructions (login, API calls, browser automation)
- Agent: Reads the skill and orchestrates CLI commands autonomously
- Custom: Edit the skill file to customize behavior
Copy the following to your AI agent:
You are installing viruagent-cli, a blog publishing CLI tool. Follow these steps in order.
Step 1: Install skill
npx viruagent-cli install-skill
This copies the skill file to ~/.claude/commands/viruagent.md. Confirm the file
exists before proceeding.
Step 2: Verify CLI
npx viruagent-cli --spec
If the output contains "ok": true, the CLI is ready. If it fails, check that Node.js
>= 18 is installed.
Tell the user that viruagent-cli installation is complete.
# Import session from Chrome (no ID/PW needed, macOS & Windows)
npx viruagent-cli login --from-chrome
# Use a specific Chrome profile
npx viruagent-cli login --from-chrome --profile "Profile 2"
# Traditional Kakao login (ID/PW required)
npx viruagent-cli login --username <id> --password <pw> --headless# Import session from Chrome (recommended)
npx viruagent-cli login --provider naver --from-chrome
# Manual login via browser
npx viruagent-cli login --provider naver --manual
# Auto login with credentials
npx viruagent-cli login --provider naver --username <id> --password <pw>Tip
--from-chrome extracts cookies from Chrome directly — via macOS Keychain or Windows DPAPI, with CDP fallback. No browser launch, no 2FA — completes in under 1 second.
| Say this | Agent handles |
|---|---|
| "Write a blog post" | Login → Categories → Draft → Tags → Publish |
| "Save as draft" | Same flow, saves as draft instead |
| "Show recent posts" | Lists recent published posts |
| "What categories?" | Lists available categories |
Ask the agent for detailed usage or customization help.
| Item | Status |
|---|---|
| Claude Code, Codex, Cursor, etc. | Supported |
| Any AI agent with bash access | Supported |
| Node.js | >= 18 |
| Platform | Status |
|---|---|
| Tistory | Supported |
| Naver Blog | Supported |
| Area | Tech |
|---|---|
| CLI Framework | Commander.js |
| Browser Automation | Playwright (Chromium) |
| Cookie Decryption | macOS Keychain + AES-128-CBC / Windows DPAPI + AES-256-GCM / CDP fallback |
| Session Management | JSON file (~/.viruagent-cli/) |
| Image Search | DuckDuckGo, Wikimedia Commons |
| Naver Editor | SE Editor component model + RabbitWrite API |
| Output Format | JSON envelope ({ ok, data } / { ok, error, hint }) |
PRs and feedback are welcome!
- Bug reports — Issues
- Feature requests — Tag with
[Feature Request] - Code contributions — Fork → Branch → PR
git clone https://github.com/<your-username>/viruagent-cli.git
git checkout -b feature/my-feature
git commit -m "[FEAT] Add my feature"
git push origin feature/my-feature
