viruagent-cli 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,122 @@
1
+ ---
2
+ name: viruagent-naver
3
+ description: Naver Blog publishing via viruagent-cli. Login, categories, HTML-to-SE-Editor conversion, image upload, and publishing.
4
+ triggers:
5
+ - 네이버
6
+ - naver
7
+ - 네이버 블로그
8
+ - naver blog
9
+ ---
10
+
11
+ # viruagent-naver — Naver Blog Publishing Skill
12
+
13
+ You are a Naver blog publishing agent using `viruagent-cli`. Always use `--provider naver`.
14
+
15
+ ## Step 1: Check authentication
16
+
17
+ ```bash
18
+ npx viruagent-cli status --provider naver
19
+ ```
20
+
21
+ If not logged in:
22
+
23
+ ```bash
24
+ # Auto login
25
+ npx viruagent-cli login --provider naver --username <naver_id> --password <pass>
26
+
27
+ # Manual login (browser)
28
+ npx viruagent-cli login --provider naver --manual
29
+ ```
30
+
31
+ Environment variables: `NAVER_USERNAME` / `NAVER_PASSWORD`
32
+
33
+ Note: Naver has aggressive bot detection. Use `--manual` if auto login fails.
34
+
35
+ ## Step 2: Get categories
36
+
37
+ ```bash
38
+ npx viruagent-cli list-categories --provider naver
39
+ ```
40
+
41
+ Ask the user which category to use if not specified.
42
+
43
+ ## Step 3: Create content
44
+
45
+ Write content in plain HTML. Do NOT use `data-ke-*` attributes — Naver's SE Editor ignores them.
46
+
47
+ ### HTML Template
48
+
49
+ ```html
50
+ <!-- 1. Hook -->
51
+ <blockquote>[One impactful sentence]</blockquote>
52
+ <p>&nbsp;</p>
53
+
54
+ <!-- 2. Introduction (2~3 paragraphs) -->
55
+ <p>[Context and reader empathy, 3~5 sentences]</p>
56
+ <p>[What this post covers]</p>
57
+ <p>&nbsp;</p>
58
+
59
+ <!-- 3. Body (3~4 sections) -->
60
+ <h2>[Section Title]</h2>
61
+ <p>[3~5 sentences with evidence]</p>
62
+ <p>[Analysis and implications]</p>
63
+ <p>&nbsp;</p>
64
+
65
+ <!-- Repeat for 2~3 more sections -->
66
+
67
+ <!-- 4. Summary -->
68
+ <h2>핵심 정리</h2>
69
+ <ul>
70
+ <li>[Takeaway 1]</li>
71
+ <li>[Takeaway 2]</li>
72
+ <li>[Takeaway 3]</li>
73
+ </ul>
74
+ <p>&nbsp;</p>
75
+
76
+ <!-- 5. Closing -->
77
+ <p>[Specific actionable suggestion]</p>
78
+ ```
79
+
80
+ ### Naver-Specific Rules
81
+
82
+ - Use plain `<p>` tags — no `data-ke-*` attributes
83
+ - Use `<p>&nbsp;</p>` for spacing
84
+ - Use plain `<blockquote>` for hook — Naver converts it to a quotation component
85
+ - HTML is auto-converted to SE Editor components server-side
86
+
87
+ ## Step 4: Publish
88
+
89
+ ```bash
90
+ npx viruagent-cli publish \
91
+ --provider naver \
92
+ --title "Post Title" \
93
+ --content "<h2>...</h2><p>...</p>" \
94
+ --category <id> \
95
+ --tags "tag1,tag2,tag3,tag4,tag5" \
96
+ --visibility public \
97
+ --related-image-keywords "keyword1,keyword2" \
98
+ --image-upload-limit 1 \
99
+ --minimum-image-count 1
100
+ ```
101
+
102
+ For drafts: Naver saves as private post (`save-draft` uses `--visibility private`).
103
+
104
+ ### Image Rules
105
+
106
+ - Always include `--related-image-keywords` with 2~3 English keywords
107
+ - Set `--image-upload-limit 1` and `--minimum-image-count 1`
108
+ - Never use `--no-auto-upload-images` unless user explicitly asks
109
+
110
+ ## Step 5: Verify
111
+
112
+ ```bash
113
+ npx viruagent-cli list-posts --provider naver --limit 1
114
+ ```
115
+
116
+ ## Other Commands
117
+
118
+ ```bash
119
+ npx viruagent-cli read-post --provider naver --post-id <id>
120
+ npx viruagent-cli list-posts --provider naver --limit 10
121
+ npx viruagent-cli logout --provider naver
122
+ ```
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: viruagent-tistory
3
+ description: Tistory blog publishing via viruagent-cli. Login, categories, content creation, image upload, and publishing.
4
+ triggers:
5
+ - 티스토리
6
+ - tistory
7
+ - 티스토리 블로그
8
+ - tistory blog
9
+ ---
10
+
11
+ # viruagent-tistory — Tistory Blog Publishing Skill
12
+
13
+ You are a Tistory blog publishing agent using `viruagent-cli`. Always use `--provider tistory`.
14
+
15
+ ## Step 1: Check authentication
16
+
17
+ ```bash
18
+ npx viruagent-cli status --provider tistory
19
+ ```
20
+
21
+ If not logged in:
22
+
23
+ ```bash
24
+ npx viruagent-cli login --provider tistory --username <kakao_id> --password <pass> --headless
25
+ ```
26
+
27
+ If 2FA is required (`pending_2fa`), ask the user to approve in Kakao app, then retry status check.
28
+
29
+ Environment variables: `TISTORY_USERNAME` / `TISTORY_PASSWORD`
30
+
31
+ ## Step 2: Get categories
32
+
33
+ ```bash
34
+ npx viruagent-cli list-categories --provider tistory
35
+ ```
36
+
37
+ Ask the user which category to use if not specified.
38
+
39
+ ## Step 3: Create content
40
+
41
+ Write content in HTML using the Tistory template. Tistory uses `data-ke-*` attributes.
42
+
43
+ ### HTML Template
44
+
45
+ ```html
46
+ <!-- 1. Hook -->
47
+ <blockquote data-ke-style="style2">[One impactful sentence]</blockquote>
48
+ <p data-ke-size="size16">&nbsp;</p>
49
+
50
+ <!-- 2. Introduction (2~3 paragraphs) -->
51
+ <p data-ke-size="size18">[Context and reader empathy, 3~5 sentences]</p>
52
+ <p data-ke-size="size18">[What this post covers]</p>
53
+ <p data-ke-size="size16">&nbsp;</p>
54
+
55
+ <!-- 3. Body (3~4 sections) -->
56
+ <h2>[Section Title]</h2>
57
+ <p data-ke-size="size18">[3~5 sentences with evidence]</p>
58
+ <p data-ke-size="size18">[Analysis and implications]</p>
59
+ <p data-ke-size="size16">&nbsp;</p>
60
+
61
+ <!-- Repeat for 2~3 more sections -->
62
+
63
+ <!-- 4. Summary -->
64
+ <h2>핵심 정리</h2>
65
+ <ul>
66
+ <li>[Takeaway 1]</li>
67
+ <li>[Takeaway 2]</li>
68
+ <li>[Takeaway 3]</li>
69
+ </ul>
70
+ <p data-ke-size="size16">&nbsp;</p>
71
+
72
+ <!-- 5. Closing -->
73
+ <p data-ke-size="size18">[Specific actionable suggestion]</p>
74
+ ```
75
+
76
+ ### Tistory-Specific Rules
77
+
78
+ - Use `<p data-ke-size="size18">` for body text
79
+ - Use `<p data-ke-size="size16">&nbsp;</p>` for spacing
80
+ - Use `<blockquote data-ke-style="style2">` for hook
81
+
82
+ ## Step 4: Publish
83
+
84
+ ```bash
85
+ npx viruagent-cli publish \
86
+ --provider tistory \
87
+ --title "Post Title" \
88
+ --content "<h2>...</h2><p>...</p>" \
89
+ --category <id> \
90
+ --tags "tag1,tag2,tag3,tag4,tag5" \
91
+ --visibility public \
92
+ --related-image-keywords "keyword1,keyword2" \
93
+ --image-upload-limit 2 \
94
+ --minimum-image-count 1
95
+ ```
96
+
97
+ For drafts: `save-draft` instead of `publish`.
98
+
99
+ ### Image Rules
100
+
101
+ - Always include `--related-image-keywords` with 2~3 English keywords
102
+ - Set `--image-upload-limit 2` and `--minimum-image-count 1`
103
+ - Never use `--no-auto-upload-images` unless user explicitly asks
104
+
105
+ ## Step 5: Verify
106
+
107
+ ```bash
108
+ npx viruagent-cli list-posts --provider tistory --limit 1
109
+ ```
110
+
111
+ ## Other Commands
112
+
113
+ ```bash
114
+ npx viruagent-cli read-post --provider tistory --post-id <id>
115
+ npx viruagent-cli list-posts --provider tistory --limit 10
116
+ npx viruagent-cli logout --provider tistory
117
+ ```
@@ -1,264 +1,64 @@
1
1
  ---
2
2
  name: viruagent
3
- description: Publish blog posts to Tistory (and Naver) via viruagent-cli. Handles login, content creation, tag generation, image handling, and publishing.
3
+ description: viruagent-cli overview. Routes to platform-specific skills /viruagent-tistory, /viruagent-naver, /viruagent-insta.
4
4
  triggers:
5
5
  - 블로그
6
- - 티스토리
7
- - tistory
8
- - blog post
9
- - 블로그 글
10
- - 블로그 발행
6
+ - blog
7
+ - viruagent
11
8
  - 블로그 써줘
12
9
  - publish blog
13
- - naver blog
14
- - 네이버 블로그
15
10
  ---
16
11
 
17
- # viruagent — Blog Publishing Skill
12
+ # viruagent — Platform Router
18
13
 
19
- You are a blog publishing agent using `viruagent-cli`. Always use `npx viruagent-cli` to execute commands.
14
+ You are an agent using `viruagent-cli`. Route to the correct skill based on the user's request.
20
15
 
21
- ## Step 1: Discover CLI capabilities
16
+ ## Available Skills
22
17
 
23
- ```bash
24
- npx viruagent-cli --spec
25
- ```
26
-
27
- All responses are JSON: `{ "ok": true, "data": {...} }` on success, `{ "ok": false, "error": "...", "message": "...", "hint": "..." }` on failure.
18
+ | Skill | Platform | Triggers |
19
+ |-------|----------|----------|
20
+ | `/viruagent-tistory` | Tistory Blog | 티스토리, tistory |
21
+ | `/viruagent-naver` | Naver Blog | 네이버, naver blog |
22
+ | `/viruagent-insta` | Instagram | 인스타, instagram, 좋아요, 댓글, 팔로우 |
28
23
 
29
- ## Step 2: Authenticate (ALWAYS run --from-chrome first)
30
-
31
- **IMPORTANT**: Always run `--from-chrome` login for ALL providers before doing anything else. This refreshes the session from the user's Chrome browser cookies and is the fastest, most reliable method.
24
+ ## Quick Reference
32
25
 
33
26
  ```bash
34
- # ALWAYS run these first, regardless of current status
35
- npx viruagent-cli login --provider tistory --from-chrome
36
- npx viruagent-cli login --provider naver --from-chrome
37
- ```
38
-
39
- Run both in parallel. Only if `--from-chrome` fails, fall back to other methods:
40
-
41
- ### Tistory fallback
42
-
43
- ```bash
44
- npx viruagent-cli login --provider tistory --username <user> --password <pass> --headless
45
- ```
46
-
47
- If 2FA is required (response contains `pending_2fa`), ask the user to approve the login on their mobile device (Kakao app notification), then retry the status check.
48
-
49
- ### Naver fallback
50
-
51
- ```bash
52
- # Manual login via browser
53
- npx viruagent-cli login --provider naver --manual
54
-
55
- # Auto login with credentials (NAVER_USERNAME / NAVER_PASSWORD env vars also work)
56
- npx viruagent-cli login --provider naver --username <user> --password <pass>
57
- ```
58
-
59
- ## Step 3: Get categories (for publish)
60
-
61
- ```bash
62
- npx viruagent-cli list-categories --provider <tistory|naver>
63
- ```
64
-
65
- Ask the user which category to use if not specified.
66
-
67
- ## Step 4: Create content and tags
68
-
69
- When the user asks to write a blog post:
70
-
71
- 1. **Write the content** in HTML format following the structure below
72
- 2. **Generate exactly 5 tags** relevant to the post topic, in the same language as the content
73
- 3. **Validate with dry-run** before publishing
74
-
75
- ### Blog Post Structure (MUST FOLLOW)
76
-
77
- Every post must follow this structure. Write in the same language as the user's request.
78
-
79
- #### Tistory HTML Template
80
-
81
- Tistory uses `data-ke-*` attributes for styling.
82
-
83
- ```html
84
- <!-- 1. Hook (blockquote style2 for topic quote) -->
85
- <blockquote data-ke-style="style2">[One impactful sentence that captures the core insight or tension]</blockquote>
86
- <p data-ke-size="size16">&nbsp;</p>
87
-
88
- <!-- 2. Introduction (2~3 paragraphs: context, reader empathy, what this post covers) -->
89
- <p data-ke-size="size18">[Describe the situation the reader relates to — paint a vivid picture, 3~5 sentences]</p>
90
- <p data-ke-size="size18">[Set expectations: what angle this post takes, what the reader will gain]</p>
91
- <p data-ke-size="size16">&nbsp;</p>
92
-
93
- <!-- 3. Body (3~4 sections with h2, each section has 2~3 paragraphs) -->
94
- <!-- Use <p data-ke-size="size16">&nbsp;</p> between sections for spacing -->
95
- <h2>[Section 1 Title — keyword-rich]</h2>
96
- <p data-ke-size="size18">[Explain the concept or situation in 3~5 sentences. Include evidence: expert quotes, data, or real-world examples]</p>
97
- <p data-ke-size="size18">[Deepen the point with analysis, comparison, or implication. Connect to the reader's experience]</p>
98
- <ul>
99
- <li>[Key point — only use lists for 3+ concrete items worth scanning]</li>
100
- <li>[Key point]</li>
101
- <li>[Key point]</li>
102
- </ul>
103
- <p data-ke-size="size16">&nbsp;</p>
27
+ # Check available providers
28
+ npx viruagent-cli list-providers
104
29
 
105
- <h2>[Section 2 Title]</h2>
106
- <p data-ke-size="size18">[Introduce a new angle, case study, or supporting argument. 3~5 sentences with specific details]</p>
107
- <p data-ke-size="size18">[Analyze why this matters. Use <strong>bold</strong> for key terms. Connect back to the main thesis]</p>
108
- <p data-ke-size="size16">&nbsp;</p>
109
-
110
- <h2>[Section 3 Title]</h2>
111
- <p data-ke-size="size18">[Practical application or actionable insight. Show, don't just tell]</p>
112
- <p data-ke-size="size18">[Bridge to the conclusion — "what this all means"]</p>
113
- <p data-ke-size="size16">&nbsp;</p>
114
-
115
- <!-- 4. Summary / Key Takeaways -->
116
- <h2>핵심 정리</h2>
117
- <ul>
118
- <li>[Takeaway 1 — one complete sentence, not a fragment]</li>
119
- <li>[Takeaway 2]</li>
120
- <li>[Takeaway 3]</li>
121
- </ul>
122
- <p data-ke-size="size16">&nbsp;</p>
123
-
124
- <!-- 5. Closing (specific action the reader can take) -->
125
- <p data-ke-size="size18">[Closing 1~2 sentences — suggest a concrete, immediate action. Not vague "stay tuned" but specific "try this tomorrow"]</p>
30
+ # Check CLI schema
31
+ npx viruagent-cli --spec
126
32
  ```
127
33
 
128
- #### Naver Blog HTML Template
129
-
130
- Naver converts HTML to editor components server-side. Do NOT use `data-ke-*` attributes. Use plain HTML with `<p>&nbsp;</p>` for spacing.
131
-
132
- ```html
133
- <!-- 1. Hook -->
134
- <blockquote>[One impactful sentence that captures the core insight or tension]</blockquote>
135
- <p>&nbsp;</p>
136
-
137
- <!-- 2. Introduction (2~3 paragraphs) -->
138
- <p>[Describe the situation the reader relates to — paint a vivid picture, 3~5 sentences]</p>
139
- <p>[Set expectations: what angle this post takes, what the reader will gain]</p>
140
- <p>&nbsp;</p>
141
-
142
- <!-- 3. Body (3~4 sections with h2, each section has 2~3 paragraphs) -->
143
- <h2>[Section 1 Title — keyword-rich]</h2>
144
- <p>[Explain the concept or situation in 3~5 sentences. Include evidence: expert quotes, data, or real-world examples]</p>
145
- <p>[Deepen the point with analysis, comparison, or implication. Connect to the reader's experience]</p>
146
- <ul>
147
- <li>[Key point — only use lists for 3+ concrete items worth scanning]</li>
148
- <li>[Key point]</li>
149
- <li>[Key point]</li>
150
- </ul>
151
- <p>&nbsp;</p>
152
-
153
- <h2>[Section 2 Title]</h2>
154
- <p>[Introduce a new angle, case study, or supporting argument. 3~5 sentences with specific details]</p>
155
- <p>[Analyze why this matters. Use <strong>bold</strong> for key terms. Connect back to the main thesis]</p>
156
- <p>&nbsp;</p>
34
+ All responses are JSON: `{ "ok": true, "data": {...} }` on success, `{ "ok": false, "error": "...", "message": "...", "hint": "..." }` on failure.
157
35
 
158
- <h2>[Section 3 Title]</h2>
159
- <p>[Practical application or actionable insight. Show, don't just tell]</p>
160
- <p>[Bridge to the conclusion — "what this all means"]</p>
161
- <p>&nbsp;</p>
36
+ ## Routing Rules
162
37
 
163
- <!-- 4. Summary / Key Takeaways -->
164
- <h2>핵심 정리</h2>
165
- <ul>
166
- <li>[Takeaway 1 one complete sentence, not a fragment]</li>
167
- <li>[Takeaway 2]</li>
168
- <li>[Takeaway 3]</li>
169
- </ul>
170
- <p>&nbsp;</p>
38
+ - User says "블로그 써줘" without specifying platform → ask which platform (Tistory or Naver)
39
+ - User says "티스토리" or "tistory" → use `/viruagent-tistory`
40
+ - User says "네이버" or "naver" → use `/viruagent-naver`
41
+ - User says "인스타" or mentions like/comment/follow use `/viruagent-insta`
171
42
 
172
- <!-- 5. Closing -->
173
- <p>[Closing 1~2 sentences — suggest a concrete, immediate action]</p>
174
- ```
43
+ ## Writing Rules (Shared)
175
44
 
176
- ### Writing Rules
45
+ These rules apply to both Tistory and Naver blog publishing:
177
46
 
178
47
  - **Title**: Include the primary keyword. 10~20 characters. Short and impactful.
179
- - **Length**: 3000~4000 characters (한글 기준). Aim for depth, not padding.
180
- - **Paragraphs**: 3~5 sentences each. Develop ideas fully within a paragraph before moving on. Do NOT write 1~2 sentence paragraphs repeatedly.
181
- - **Font size (Tistory)**: Use `<p data-ke-size="size18">` for all body text paragraphs. Use `<p data-ke-size="size16">&nbsp;</p>` only for spacing between sections.
182
- - **Font size (Naver)**: Use plain `<p>` tags. Do NOT use `data-ke-*` attributes — Naver's editor ignores them.
183
- - **Spacing (Tistory)**: Use `<p data-ke-size="size16">&nbsp;</p>` between sections for line breaks.
184
- - **Spacing (Naver)**: Use `<p>&nbsp;</p>` between sections.
185
- - **Hook (Tistory)**: Always use `<blockquote data-ke-style="style2">` for the opening topic quote.
186
- - **Hook (Naver)**: Use plain `<blockquote>` — Naver converts it to a quotation component.
187
- - **Introduction**: 2~3 paragraphs that set context and build reader empathy before diving into the body.
48
+ - **Length**: 3000~4000 characters. Aim for depth, not padding.
49
+ - **Paragraphs**: 3~5 sentences each. Do NOT write 1~2 sentence paragraphs repeatedly.
50
+ - **Introduction**: 2~3 paragraphs that set context and build reader empathy.
188
51
  - **Body sections**: Each h2 section must have 2~3 substantial paragraphs. Do NOT jump straight to bullet lists.
189
- - **Lists**: Use sparingly — only for 3+ concrete, scannable items. Default to paragraphs for explanation and analysis.
190
- - **Evidence**: Each body section should include at least one of: expert quote, data point, real company example, or research finding. Cite sources naturally within the text.
191
- - **Perspective shift**: Include at least one moment that reframes the reader's thinking (e.g., "X is not about A, it's about B").
192
- - **Transitions**: Connect sections with bridge sentences. Avoid abrupt jumps between topics.
193
- - **Bold**: Use `<strong>` for key terms and concepts (2~3 per section max).
194
- - **Subheadings**: Use `<h2>` for ALL section titles. Do NOT use `<h3>`. Keep heading sizes consistent.
195
- - **Tone**: Conversational but substantive. Write as if explaining to a smart colleague, not listing facts for a report.
196
- - **Closing**: End with a specific, actionable suggestion the reader can try immediately — not a vague "stay tuned."
197
- - **SEO**: Primary keyword in title, first paragraph, and at least one `<h2>`. Don't keyword-stuff.
198
-
199
- ```bash
200
- npx viruagent-cli publish \
201
- --provider tistory \
202
- --title "Post Title" \
203
- --content "<h2>...</h2><p>...</p>" \
204
- --category <id> \
205
- --tags "tag1,tag2,tag3,tag4,tag5" \
206
- --visibility public \
207
- --related-image-keywords "keyword1,keyword2" \
208
- --image-upload-limit 2 \
209
- --minimum-image-count 1 \
210
- --dry-run
211
- ```
212
-
213
- ## Step 5: Publish
214
-
215
- ### Tistory
216
-
217
- ```bash
218
- npx viruagent-cli publish \
219
- --provider tistory \
220
- --title "Post Title" \
221
- --content "<h2>...</h2><p>...</p>" \
222
- --category <id> \
223
- --tags "tag1,tag2,tag3,tag4,tag5" \
224
- --visibility public \
225
- --related-image-keywords "keyword1,keyword2" \
226
- --image-upload-limit 2 \
227
- --minimum-image-count 1
228
- ```
229
-
230
- ### Naver Blog
231
-
232
- ```bash
233
- npx viruagent-cli publish \
234
- --provider naver \
235
- --title "Post Title" \
236
- --content "<h2>...</h2><p>...</p>" \
237
- --category <id> \
238
- --tags "tag1,tag2,tag3,tag4,tag5" \
239
- --visibility public \
240
- --related-image-keywords "keyword1,keyword2" \
241
- --image-upload-limit 1 \
242
- --minimum-image-count 1
243
- ```
244
-
245
- For drafts, use `save-draft` instead of `publish` (Naver saves as private post).
246
-
247
- ### Image Rules (MUST FOLLOW)
248
-
249
- - **Always** include `--related-image-keywords` with 2~3 keywords relevant to the post topic
250
- - **Tistory**: set `--image-upload-limit 2` and `--minimum-image-count 1`
251
- - **Naver**: set `--image-upload-limit 1` and `--minimum-image-count 1`
252
- - Keywords should be in English for better image search results
253
- - Never use `--no-auto-upload-images` unless the user explicitly asks
254
-
255
- ## Step 6: Verify
256
-
257
- ```bash
258
- npx viruagent-cli list-posts --provider tistory --limit 1
259
- ```
260
-
261
- Confirm the post was published and share the result with the user.
52
+ - **Lists**: Use sparingly — only for 3+ concrete, scannable items.
53
+ - **Evidence**: Each body section should include at least one of: expert quote, data point, real example.
54
+ - **Perspective shift**: Include at least one moment that reframes the reader's thinking.
55
+ - **Transitions**: Connect sections with bridge sentences.
56
+ - **Bold**: Use `<strong>` for key terms (2~3 per section max).
57
+ - **Subheadings**: Use `<h2>` for ALL section titles. Do NOT use `<h3>`.
58
+ - **Tone**: Conversational but substantive.
59
+ - **Closing**: End with a specific, actionable suggestion.
60
+ - **SEO**: Primary keyword in title, first paragraph, and at least one `<h2>`.
61
+ - **Tags**: Exactly 5, comma-separated, matching post language.
262
62
 
263
63
  ## Error Recovery
264
64
 
@@ -269,16 +69,9 @@ Confirm the post was published and share the result with the user.
269
69
  | `PROVIDER_NOT_FOUND` | Check with `list-providers` |
270
70
  | `INVALID_POST_ID` | Verify post ID with `list-posts` |
271
71
 
272
- ## Other Commands
273
-
274
- - `npx viruagent-cli read-post --post-id <id>` — Read a specific post
275
- - `npx viruagent-cli list-posts --limit 10` — List recent posts
276
- - `npx viruagent-cli logout --provider tistory` — End session
277
-
278
72
  ## Important Notes
279
73
 
280
74
  - Always use `--dry-run` before actual publish to validate parameters
281
75
  - Content must be valid HTML
282
- - Tags: exactly 5, comma-separated, matching post language
283
76
  - Default provider is `tistory`
284
77
  - For `--content-file`, use absolute paths