viruagent-cli 0.5.1 → 0.6.1
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.
- package/package.json +1 -1
- package/skills/persona-blogger/SKILL.md +47 -0
- package/skills/persona-influencer-manager/SKILL.md +40 -0
- package/skills/persona-sns-marketer/SKILL.md +38 -0
- package/skills/recipe-blog-publish/SKILL.md +59 -0
- package/skills/recipe-cross-post/SKILL.md +41 -0
- package/skills/recipe-daily-engagement/SKILL.md +57 -0
- package/skills/recipe-engage-feed/SKILL.md +56 -0
- package/skills/recipe-grow-followers/SKILL.md +52 -0
- package/skills/va-insta/SKILL.md +64 -0
- package/skills/va-insta-comment/SKILL.md +59 -0
- package/skills/va-insta-dm/SKILL.md +51 -0
- package/skills/va-insta-feed/SKILL.md +72 -0
- package/skills/va-insta-follow/SKILL.md +42 -0
- package/skills/va-insta-like/SKILL.md +55 -0
- package/skills/va-insta-login/SKILL.md +57 -0
- package/skills/va-naver/SKILL.md +43 -0
- package/skills/va-naver-categories/SKILL.md +25 -0
- package/skills/va-naver-draft/SKILL.md +33 -0
- package/skills/va-naver-login/SKILL.md +58 -0
- package/skills/va-naver-posts/SKILL.md +38 -0
- package/skills/va-naver-publish/SKILL.md +337 -0
- package/skills/va-shared/SKILL.md +170 -0
- package/skills/va-tistory/SKILL.md +42 -0
- package/skills/va-tistory-categories/SKILL.md +37 -0
- package/skills/va-tistory-draft/SKILL.md +31 -0
- package/skills/va-tistory-login/SKILL.md +54 -0
- package/skills/va-tistory-posts/SKILL.md +38 -0
- package/skills/va-tistory-publish/SKILL.md +466 -0
- package/src/providers/chromeManager.js +186 -0
- package/src/providers/insta/index.js +31 -10
- package/src/providers/insta/session.js +4 -7
- package/src/providers/naver/auth.js +37 -23
- package/src/providers/naver/index.js +6 -10
- package/src/providers/naver/session.js +22 -28
- package/src/providers/tistory/auth.js +129 -105
- package/src/providers/tistory/index.js +6 -6
- package/src/providers/tistory/session.js +24 -24
- package/src/runner.js +28 -17
- package/src/services/providerManager.js +7 -5
- package/src/storage/sessionStore.js +18 -9
- package/skills/viruagent-insta.md +0 -163
- package/skills/viruagent-naver.md +0 -122
- package/skills/viruagent-tistory.md +0 -117
- package/skills/viruagent.md +0 -77
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-insta-like
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Instagram: 게시물 좋아요/좋아요 취소, 댓글 좋아요"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "insta"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli like --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-insta-like — 좋아요
|
|
14
|
+
|
|
15
|
+
## 게시물 좋아요
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli like --provider insta --post-id <shortcode>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 게시물 좋아요 취소
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx viruagent-cli unlike --provider insta --post-id <shortcode>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 댓글 좋아요
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx viruagent-cli like-comment --provider insta --comment-id <id>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 댓글 좋아요 취소
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx viruagent-cli unlike-comment --provider insta --comment-id <id>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Rate Limit
|
|
40
|
+
|
|
41
|
+
| 액션 | 딜레이 | 시간당 | 일일 |
|
|
42
|
+
|------|--------|--------|------|
|
|
43
|
+
| Like | 20~40s | 15 | 500 |
|
|
44
|
+
|
|
45
|
+
딜레이는 자동 랜덤 적용.
|
|
46
|
+
|
|
47
|
+
## 워크플로우: 사용자 게시물 모두 좋아요
|
|
48
|
+
|
|
49
|
+
1. `list-posts --provider insta --username <user> --limit 20`
|
|
50
|
+
2. 각 게시물: `like --provider insta --post-id <shortcode>`
|
|
51
|
+
3. 레이트리밋 딜레이 자동 적용 (20~40초)
|
|
52
|
+
|
|
53
|
+
## See Also
|
|
54
|
+
|
|
55
|
+
va-insta, va-insta-comment, va-insta-feed
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-insta-login
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Instagram: 로그인 및 챌린지(본인 인증) 해결"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "insta"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli login --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-insta-login — Instagram 로그인
|
|
14
|
+
|
|
15
|
+
## 인증 상태 확인
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli status --provider insta
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 로그인
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx viruagent-cli login --provider insta --username <user> --password <pass>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 옵션
|
|
28
|
+
|
|
29
|
+
| 플래그 | 설명 | 기본값 |
|
|
30
|
+
|--------|------|--------|
|
|
31
|
+
| `--username` | 인스타그램 아이디 | - |
|
|
32
|
+
| `--password` | 인스타그램 비밀번호 | - |
|
|
33
|
+
|
|
34
|
+
### 환경변수
|
|
35
|
+
|
|
36
|
+
`INSTA_USERNAME` / `INSTA_PASSWORD` 설정 시 자동 사용.
|
|
37
|
+
|
|
38
|
+
## 챌린지 해결
|
|
39
|
+
|
|
40
|
+
로그인 시 `challenge` 에러 (302 redirect to /challenge/) 발생 시:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx viruagent-cli resolve-challenge --provider insta
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
브라우저에서 본인 인증이 필요할 수 있습니다.
|
|
47
|
+
|
|
48
|
+
## 에러 처리
|
|
49
|
+
|
|
50
|
+
| 에러 | 조치 |
|
|
51
|
+
|------|------|
|
|
52
|
+
| `challenge` | `resolve-challenge` 실행 또는 브라우저 인증 |
|
|
53
|
+
| `SESSION_EXPIRED` | `login` 재실행 |
|
|
54
|
+
|
|
55
|
+
## See Also
|
|
56
|
+
|
|
57
|
+
va-insta, va-shared
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-naver
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Naver 블로그: 명령 개요 및 플랫폼 특화 규칙"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "overview"
|
|
7
|
+
provider: "naver"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# va-naver — Naver 블로그 개요
|
|
13
|
+
|
|
14
|
+
Naver 블로그 퍼블리싱을 위한 viruagent-cli 가이드. 항상 `--provider naver` 사용.
|
|
15
|
+
|
|
16
|
+
## 명령 목록
|
|
17
|
+
|
|
18
|
+
| 명령 | 스킬 | 설명 |
|
|
19
|
+
|------|------|------|
|
|
20
|
+
| login | va-naver-login | 네이버 로그인 (manual 모드 포함) |
|
|
21
|
+
| publish | va-naver-publish | 글 발행 |
|
|
22
|
+
| save-draft | va-naver-draft | 임시저장 (private 포스트) |
|
|
23
|
+
| list-categories | va-naver-categories | 카테고리 조회 |
|
|
24
|
+
| list-posts, read-post | va-naver-posts | 글 목록/읽기 |
|
|
25
|
+
|
|
26
|
+
## Naver HTML 규칙
|
|
27
|
+
|
|
28
|
+
Naver SE Editor는 `data-ke-*` 속성을 무시합니다:
|
|
29
|
+
- 본문: 일반 `<p>` 태그 사용
|
|
30
|
+
- 여백: `<p> </p>`
|
|
31
|
+
- 인용: 일반 `<blockquote>` — 서버에서 자동 변환
|
|
32
|
+
- HTML → SE Editor 컴포넌트 서버 자동 변환
|
|
33
|
+
|
|
34
|
+
## 환경변수
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
NAVER_USERNAME=
|
|
38
|
+
NAVER_PASSWORD=
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## See Also
|
|
42
|
+
|
|
43
|
+
va-shared, va-naver-login, va-naver-publish, va-naver-draft, va-naver-categories, va-naver-posts
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-naver-categories
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Naver: 블로그 카테고리 목록 조회"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "naver"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli list-categories --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-naver-categories — 카테고리 조회
|
|
14
|
+
|
|
15
|
+
## 사용법
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli list-categories --provider naver
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
카테고리가 지정되지 않은 경우, 사용자에게 어떤 카테고리를 사용할지 질문.
|
|
22
|
+
|
|
23
|
+
## See Also
|
|
24
|
+
|
|
25
|
+
va-naver, va-naver-publish
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-naver-draft
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Naver: 블로그 글 임시저장 (private 포스트로 저장)"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "naver"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli save-draft --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-naver-draft — Naver 임시저장
|
|
14
|
+
|
|
15
|
+
## 사용법
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli save-draft \
|
|
19
|
+
--provider naver \
|
|
20
|
+
--title "Draft Title" \
|
|
21
|
+
--content "<h2>...</h2><p>...</p>" \
|
|
22
|
+
--category <id> \
|
|
23
|
+
--tags "tag1,tag2,tag3,tag4,tag5" \
|
|
24
|
+
--related-image-keywords "keyword1,keyword2"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`publish` 대신 `save-draft` 사용. 옵션은 동일.
|
|
28
|
+
|
|
29
|
+
**참고**: Naver는 실제 임시저장 API가 없습니다. `save-draft`는 `--visibility private`로 비공개 글을 생성합니다.
|
|
30
|
+
|
|
31
|
+
## See Also
|
|
32
|
+
|
|
33
|
+
va-naver-publish, va-naver, va-shared
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-naver-login
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Naver: 네이버 계정 로그인 (manual 브라우저 모드 지원)"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "naver"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli login --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-naver-login — Naver 로그인
|
|
14
|
+
|
|
15
|
+
## 인증 상태 확인
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli status --provider naver
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 자동 로그인
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx viruagent-cli login --provider naver --username <naver_id> --password <pass>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 수동 로그인 (브라우저)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx viruagent-cli login --provider naver --manual
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 옵션
|
|
34
|
+
|
|
35
|
+
| 플래그 | 설명 | 기본값 |
|
|
36
|
+
|--------|------|--------|
|
|
37
|
+
| `--username` | 네이버 아이디 | - |
|
|
38
|
+
| `--password` | 네이버 비밀번호 | - |
|
|
39
|
+
| `--manual` | 수동 로그인 모드 | false |
|
|
40
|
+
| `--headless` | 헤드리스 모드 | false |
|
|
41
|
+
|
|
42
|
+
### 봇 감지 대응
|
|
43
|
+
|
|
44
|
+
네이버는 봇 감지가 강력합니다. 자동 로그인 실패 시 `--manual` 모드로 브라우저에서 직접 로그인하세요.
|
|
45
|
+
|
|
46
|
+
### 환경변수
|
|
47
|
+
|
|
48
|
+
`NAVER_USERNAME` / `NAVER_PASSWORD` 설정 시 자동 사용.
|
|
49
|
+
|
|
50
|
+
## 로그아웃
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx viruagent-cli logout --provider naver
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## See Also
|
|
57
|
+
|
|
58
|
+
va-naver, va-shared
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-naver-posts
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Naver: 글 목록 조회 및 개별 글 읽기"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "naver"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli list-posts --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-naver-posts — 글 목록 & 읽기
|
|
14
|
+
|
|
15
|
+
## 글 목록
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli list-posts --provider naver --limit 10
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
| 플래그 | 설명 | 기본값 |
|
|
22
|
+
|--------|------|--------|
|
|
23
|
+
| `--limit` | 조회할 글 수 | 20 |
|
|
24
|
+
|
|
25
|
+
## 글 읽기
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx viruagent-cli read-post --provider naver --post-id <id>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
| 플래그 | 설명 |
|
|
32
|
+
|--------|------|
|
|
33
|
+
| `--post-id` | 글 ID |
|
|
34
|
+
| `--include-draft` | 임시저장 포함 |
|
|
35
|
+
|
|
36
|
+
## See Also
|
|
37
|
+
|
|
38
|
+
va-naver, va-shared
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: va-naver-publish
|
|
3
|
+
version: 2.0.0
|
|
4
|
+
description: "Naver: 블로그 글 발행 — 5종 포맷 템플릿 (story/howto/list/review/qa)"
|
|
5
|
+
metadata:
|
|
6
|
+
category: "command"
|
|
7
|
+
provider: "naver"
|
|
8
|
+
requires:
|
|
9
|
+
bins: ["viruagent-cli"]
|
|
10
|
+
cliHelp: "viruagent-cli publish --help"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# va-naver-publish — Naver 글 발행
|
|
14
|
+
|
|
15
|
+
## 사용법
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx viruagent-cli publish \
|
|
19
|
+
--provider naver \
|
|
20
|
+
--title "제목 (15~25자, 핵심 키워드 앞배치)" \
|
|
21
|
+
--content "<h2>...</h2><p>...</p>" \
|
|
22
|
+
--category <id> \
|
|
23
|
+
--tags "tag1,tag2,tag3,tag4,tag5" \
|
|
24
|
+
--visibility public \
|
|
25
|
+
--related-image-keywords "keyword1 keyword2 keyword3" \
|
|
26
|
+
--image-upload-limit 5 \
|
|
27
|
+
--minimum-image-count 3
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 옵션
|
|
31
|
+
|
|
32
|
+
| 플래그 | 설명 | 기본값 |
|
|
33
|
+
|--------|------|--------|
|
|
34
|
+
| `--title` | 글 제목 | (필수) |
|
|
35
|
+
| `--content` | HTML 콘텐츠 | - |
|
|
36
|
+
| `--content-file` | HTML 파일 경로 (절대) | - |
|
|
37
|
+
| `--category` | 카테고리 ID | - |
|
|
38
|
+
| `--tags` | 쉼표 구분 태그 (5개) | - |
|
|
39
|
+
| `--visibility` | public / private | public |
|
|
40
|
+
| `--related-image-keywords` | 이미지 검색 키워드 (영어) | - |
|
|
41
|
+
| `--image-upload-limit` | 최대 이미지 수 | 5 |
|
|
42
|
+
| `--minimum-image-count` | 최소 이미지 수 | 3 |
|
|
43
|
+
| `--dry-run` | 파라미터만 검증 | false |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 네이버 SEO 핵심 원칙
|
|
48
|
+
|
|
49
|
+
- **제목**: 15~25자, 핵심 키워드를 앞쪽에 배치
|
|
50
|
+
- **글자 수**: 1,500~2,500자 (경쟁 키워드는 2,500~3,500자)
|
|
51
|
+
- **이미지**: 소제목마다 1장씩 총 5~10장 권장 (직접 촬영/제작 우선)
|
|
52
|
+
- **키워드**: 제목+본문 합산 5~6개, 단락당 1~2개 자연스럽게 분산
|
|
53
|
+
- **소제목 간격**: 300~400자마다 `<h2>` 1개 (h3 사용 금지)
|
|
54
|
+
- **체류시간 신호**: D.I.A. 알고리즘은 실제 스크롤 깊이와 체류시간을 측정
|
|
55
|
+
- **경험 문장**: 단락마다 직접 경험 기반 문장 1개 이상 필수 (AI 탐지 회피)
|
|
56
|
+
|
|
57
|
+
### 피해야 할 패턴
|
|
58
|
+
- `data-ke-*` 속성 사용 금지 (일반 HTML만)
|
|
59
|
+
- 키워드 3회 이상 연속 반복 금지
|
|
60
|
+
- 3단락 공식 반복 (도입→근거→요약) 패턴 — AI 탐지 위험
|
|
61
|
+
- 균일한 문장 길이 — 짧은 문장과 긴 문장을 의도적으로 섞을 것
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 서론 후킹 패턴 3종 (첫 3문장이 체류시간 결정)
|
|
66
|
+
|
|
67
|
+
### 패턴 A — 공감형 (범용, 정보성 글)
|
|
68
|
+
```html
|
|
69
|
+
<p>[독자가 이미 겪고 있는 상황을 1문장으로 정확히 표현]</p>
|
|
70
|
+
<p>그런데 사실 그 이유는 생각보다 단순합니다. [반전 핵심 한 줄]</p>
|
|
71
|
+
<p>이 글에서는 [구체적 약속 — 읽으면 얻는 것]을 다룹니다.</p>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 패턴 B — 손실 회피형 (경쟁 키워드, 클릭 유지)
|
|
75
|
+
```html
|
|
76
|
+
<blockquote>[모르면 손해인 핵심 한 줄. 구체적 수치 포함]</blockquote>
|
|
77
|
+
<p>실제로 [통계나 사례 — 신뢰 부여]. 대부분은 이 차이를 모르고 넘어갑니다.</p>
|
|
78
|
+
<p>지금부터 [해결책 예고]를 정리해 드립니다.</p>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 패턴 C — 질문형 (전문성 어필, 심화 콘텐츠)
|
|
82
|
+
```html
|
|
83
|
+
<p>[독자가 검색창에 치는 질문을 그대로 첫 문장으로]</p>
|
|
84
|
+
<p>[데이터나 통계로 문제의 크기를 보여줌]. 저도 처음엔 이 답을 찾는 데 [시간]이 걸렸습니다.</p>
|
|
85
|
+
<p>지금부터 [핵심 내용 예고]합니다.</p>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 포맷 5종 템플릿
|
|
91
|
+
|
|
92
|
+
글 성격에 맞는 포맷을 선택하세요. **기본 추천: story형** (체류시간 최고, AI 탐지 회피 최적).
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### 1. story형 — 스토리텔링 (체류시간 최고, AI 탐지 낮음)
|
|
97
|
+
경험 후기, 사례 공유, 인사이트 전달에 적합.
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<!-- 후킹: 패턴 A 또는 C -->
|
|
101
|
+
<blockquote>[임팩트 한 줄 — 독자의 상황을 대변하는 문장]</blockquote>
|
|
102
|
+
<p> </p>
|
|
103
|
+
|
|
104
|
+
<p>[독자 공감 + 내 경험으로 연결 — 3~5문장. "저도 그랬습니다" 식으로 시작]</p>
|
|
105
|
+
<p>[이 글에서 다룰 내용 예고 — 구체적으로]</p>
|
|
106
|
+
<p> </p>
|
|
107
|
+
|
|
108
|
+
<h2>[섹션 1 — 문제 상황 묘사]</h2>
|
|
109
|
+
<p>[직접 겪은 구체적 상황 — 날짜, 수치, 감정 포함. 3~5문장]</p>
|
|
110
|
+
<p>[그 상황에서 발견한 인사이트 — 독자가 몰랐던 관점]</p>
|
|
111
|
+
<p> </p>
|
|
112
|
+
|
|
113
|
+
<h2>[섹션 2 — 전환점 또는 발견]</h2>
|
|
114
|
+
<p>[문제를 어떻게 바라보게 됐는지 — BAB 구조의 After 단계]</p>
|
|
115
|
+
<p>[구체적 수치나 결과 언급]</p>
|
|
116
|
+
<p> </p>
|
|
117
|
+
|
|
118
|
+
<h2>[섹션 3 — 실전 적용법]</h2>
|
|
119
|
+
<p>[독자가 바로 쓸 수 있는 방법 — 단계보다 맥락 중심으로]</p>
|
|
120
|
+
<p>[예상 실패 포인트와 극복법 — 경험 기반으로]</p>
|
|
121
|
+
<p> </p>
|
|
122
|
+
|
|
123
|
+
<h2>[섹션 4 — 의외의 발견 또는 여담]</h2>
|
|
124
|
+
<p>[예상 못한 결과나 부가적 인사이트 — 이 섹션이 인간미를 만듦]</p>
|
|
125
|
+
<p> </p>
|
|
126
|
+
|
|
127
|
+
<h2>마무리</h2>
|
|
128
|
+
<p>[핵심 요약 — 1~2문장]</p>
|
|
129
|
+
<p>[독자에게 구체적 행동 제안 — "지금 당장 해볼 수 있는 한 가지"]</p>
|
|
130
|
+
<p>[공유/댓글 유도 — 자연스럽게]</p>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### 2. howto형 — 튜토리얼 (정보 쿼리 1위, 체류시간 높음)
|
|
136
|
+
설치법, 사용법, 단계별 가이드에 적합.
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<!-- 후킹: 패턴 B -->
|
|
140
|
+
<blockquote>[이 글 하나로 [X] 할 수 있습니다 — 구체적 약속]</blockquote>
|
|
141
|
+
<p> </p>
|
|
142
|
+
|
|
143
|
+
<p>[왜 이 방법이 필요한지 — 기존 방식의 문제점. 2~3문장]</p>
|
|
144
|
+
<p>[이 글을 끝까지 읽으면 얻는 것 — 구체적]</p>
|
|
145
|
+
<p> </p>
|
|
146
|
+
|
|
147
|
+
<h2>시작 전 준비물</h2>
|
|
148
|
+
<p>[필요한 것들을 설명 — 단순 나열이 아닌 왜 필요한지 이유 포함]</p>
|
|
149
|
+
<ul>
|
|
150
|
+
<li>[준비물 1] — [이유]</li>
|
|
151
|
+
<li>[준비물 2] — [이유]</li>
|
|
152
|
+
</ul>
|
|
153
|
+
<p> </p>
|
|
154
|
+
|
|
155
|
+
<h2>1단계 — [단계명]</h2>
|
|
156
|
+
<p>[무엇을 하는 단계인지 먼저 설명 — 맥락 제공]</p>
|
|
157
|
+
<p>[구체적 방법 — 스크린샷/이미지 직후 텍스트로 설명]</p>
|
|
158
|
+
<p>[이 단계에서 흔히 하는 실수와 예방법]</p>
|
|
159
|
+
<p> </p>
|
|
160
|
+
|
|
161
|
+
<h2>2단계 — [단계명]</h2>
|
|
162
|
+
<p>[맥락 → 방법 → 주의사항 순서]</p>
|
|
163
|
+
<p> </p>
|
|
164
|
+
|
|
165
|
+
<h2>3단계 — [단계명]</h2>
|
|
166
|
+
<p>[맥락 → 방법 → 주의사항 순서]</p>
|
|
167
|
+
<p> </p>
|
|
168
|
+
|
|
169
|
+
<h2>완료 확인 방법</h2>
|
|
170
|
+
<p>[잘 됐는지 확인하는 방법 — 직접 경험 기반으로]</p>
|
|
171
|
+
<p> </p>
|
|
172
|
+
|
|
173
|
+
<h2>자주 묻는 질문</h2>
|
|
174
|
+
<p><strong>Q. [가장 흔한 질문]</strong></p>
|
|
175
|
+
<p>A. [구체적 답변]</p>
|
|
176
|
+
<p> </p>
|
|
177
|
+
<p><strong>Q. [두 번째 질문]</strong></p>
|
|
178
|
+
<p>A. [구체적 답변]</p>
|
|
179
|
+
<p> </p>
|
|
180
|
+
|
|
181
|
+
<p>[마무리 — 완료 축하 + 다음 단계 제안]</p>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
### 3. list형 — 리스트 정리 (CTR 높음, 초기 트래픽 확보)
|
|
187
|
+
"베스트 N", "추천 N선", 비교 정리글에 적합. 단, 단순 나열 금지.
|
|
188
|
+
|
|
189
|
+
```html
|
|
190
|
+
<!-- 후킹: 패턴 B -->
|
|
191
|
+
<blockquote>[N가지 중 실제로 쓸 만한 건 [X]개입니다 — 기대 역전]</blockquote>
|
|
192
|
+
<p> </p>
|
|
193
|
+
|
|
194
|
+
<p>[왜 이 목록이 필요한지 — 선택의 어려움 공감. 2~3문장]</p>
|
|
195
|
+
<p>[선별 기준 명시 — "제가 직접 [기간] 동안 사용/테스트한 기준으로"]</p>
|
|
196
|
+
<p> </p>
|
|
197
|
+
|
|
198
|
+
<h2>1. [항목명] — [핵심 특징 한 줄]</h2>
|
|
199
|
+
<p>[이게 왜 1위인지 — 단순 설명이 아닌 직접 경험 기반 이유]</p>
|
|
200
|
+
<p>[구체적 수치나 사례. 단점도 솔직하게 1~2줄]</p>
|
|
201
|
+
<p> </p>
|
|
202
|
+
|
|
203
|
+
<h2>2. [항목명] — [핵심 특징 한 줄]</h2>
|
|
204
|
+
<p>[특징과 실사용 경험 — 앞 항목과 차별점 명시]</p>
|
|
205
|
+
<p> </p>
|
|
206
|
+
|
|
207
|
+
<h2>3. [항목명] — [핵심 특징 한 줄]</h2>
|
|
208
|
+
<p>[특징과 실사용 경험]</p>
|
|
209
|
+
<p> </p>
|
|
210
|
+
|
|
211
|
+
<!-- 4~N개 동일 패턴 반복 -->
|
|
212
|
+
|
|
213
|
+
<h2>한눈에 비교</h2>
|
|
214
|
+
<p>[표로 정리 — 3개 이상 항목 비교 시 가독성 최고]</p>
|
|
215
|
+
<p> </p>
|
|
216
|
+
|
|
217
|
+
<h2>결론 — 상황별 추천</h2>
|
|
218
|
+
<p>[모든 사람에게 같은 걸 추천하지 말 것 — 상황별 최적 선택 제시]</p>
|
|
219
|
+
<p>[내 개인 픽 + 이유]</p>
|
|
220
|
+
<p> </p>
|
|
221
|
+
|
|
222
|
+
<p>[댓글 유도 — "여러분이 써본 것 중 좋았던 건 무엇인가요?"]</p>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### 4. review형 — 분석/리뷰 (전문성 최고, AI 탐지 낮음)
|
|
228
|
+
도구 분석, 서비스 리뷰, 책/영상 리뷰에 적합.
|
|
229
|
+
|
|
230
|
+
```html
|
|
231
|
+
<!-- 후킹: 패턴 C -->
|
|
232
|
+
<blockquote>[핵심 결론을 먼저 — "결론부터 말하면: [한 줄 평가]"]</blockquote>
|
|
233
|
+
<p> </p>
|
|
234
|
+
|
|
235
|
+
<p>[어떤 계기로 사용/분석하게 됐는지 — 배경 스토리. 2~3문장]</p>
|
|
236
|
+
<p>[이 리뷰의 관점/기준 명시 — "저는 [직군/상황]의 입장에서 평가했습니다"]</p>
|
|
237
|
+
<p> </p>
|
|
238
|
+
|
|
239
|
+
<h2>한줄 요약</h2>
|
|
240
|
+
<p>[장점 2~3가지 + 단점 1~2가지를 솔직하게. 단점 없는 리뷰는 신뢰도 하락]</p>
|
|
241
|
+
<p> </p>
|
|
242
|
+
|
|
243
|
+
<h2>[분석 섹션 1 — 가장 중요한 특징]</h2>
|
|
244
|
+
<p>[특징 설명 → 실제 사용 경험 → 내 평가 순서]</p>
|
|
245
|
+
<p>[수치나 비교 대상 포함]</p>
|
|
246
|
+
<p> </p>
|
|
247
|
+
|
|
248
|
+
<h2>[분석 섹션 2]</h2>
|
|
249
|
+
<p>[동일 구조]</p>
|
|
250
|
+
<p> </p>
|
|
251
|
+
|
|
252
|
+
<h2>[분석 섹션 3]</h2>
|
|
253
|
+
<p>[동일 구조]</p>
|
|
254
|
+
<p> </p>
|
|
255
|
+
|
|
256
|
+
<h2>경쟁 제품/서비스와 비교</h2>
|
|
257
|
+
<p>[직접 비교 — 어떤 상황에서 이게 낫고, 어떤 상황에서 다른 게 나은지]</p>
|
|
258
|
+
<p> </p>
|
|
259
|
+
|
|
260
|
+
<h2>이런 분께 추천합니다</h2>
|
|
261
|
+
<p>[타겟을 명확히 — 맞는 사람과 맞지 않는 사람 모두 언급]</p>
|
|
262
|
+
<p> </p>
|
|
263
|
+
|
|
264
|
+
<p>[최종 점수나 별점 + 총평 1~2문장]</p>
|
|
265
|
+
<p>[관련 글 링크 유도]</p>
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
### 5. qa형 — Q&A (Featured Snippet 최적, 롱테일 키워드)
|
|
271
|
+
개념 설명, FAQ, "~가 뭔가요?" 쿼리에 적합.
|
|
272
|
+
|
|
273
|
+
```html
|
|
274
|
+
<!-- 후킹: 패턴 C -->
|
|
275
|
+
<p>[가장 많이 검색되는 질문을 첫 문장으로 — 검색창 그대로]</p>
|
|
276
|
+
<p>[이 질문이 중요한 이유 + 이 글에서 다룰 범위]</p>
|
|
277
|
+
<p> </p>
|
|
278
|
+
|
|
279
|
+
<h2>[핵심 질문 1]</h2>
|
|
280
|
+
<p>[직접 답변 — 첫 문장에 핵심 답 먼저. 검색 의도에 즉각 응답]</p>
|
|
281
|
+
<p>[부연 설명 — 왜 그런지, 어떤 경우에 해당하는지]</p>
|
|
282
|
+
<p>[실제 사례나 예시]</p>
|
|
283
|
+
<p> </p>
|
|
284
|
+
|
|
285
|
+
<h2>[핵심 질문 2]</h2>
|
|
286
|
+
<p>[동일 구조 — 답 먼저, 설명 나중]</p>
|
|
287
|
+
<p> </p>
|
|
288
|
+
|
|
289
|
+
<h2>[핵심 질문 3]</h2>
|
|
290
|
+
<p>[동일 구조]</p>
|
|
291
|
+
<p> </p>
|
|
292
|
+
|
|
293
|
+
<h2>[핵심 질문 4 — 심화 또는 의외의 질문]</h2>
|
|
294
|
+
<p>[이 섹션은 독자가 생각 못 했던 질문 — 전문성 어필]</p>
|
|
295
|
+
<p> </p>
|
|
296
|
+
|
|
297
|
+
<h2>핵심 정리</h2>
|
|
298
|
+
<ul>
|
|
299
|
+
<li>[Q1 핵심 답 — 한 줄]</li>
|
|
300
|
+
<li>[Q2 핵심 답 — 한 줄]</li>
|
|
301
|
+
<li>[Q3 핵심 답 — 한 줄]</li>
|
|
302
|
+
</ul>
|
|
303
|
+
<p> </p>
|
|
304
|
+
|
|
305
|
+
<p>[추가 궁금한 점은 댓글로 — 독자 참여 유도]</p>
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 포맷 선택 가이드
|
|
311
|
+
|
|
312
|
+
| 글 주제 | 추천 포맷 |
|
|
313
|
+
|---------|---------|
|
|
314
|
+
| 도구/서비스 소개, 경험 공유 | **story** |
|
|
315
|
+
| 설치법, 사용법, 단계별 방법 | **howto** |
|
|
316
|
+
| 추천 목록, 비교 정리 | **list** |
|
|
317
|
+
| 심층 분석, 솔직 리뷰 | **review** |
|
|
318
|
+
| 개념 설명, 자주 묻는 질문 | **qa** |
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## 이미지 규칙
|
|
323
|
+
|
|
324
|
+
- `--related-image-keywords`에 영어 키워드 2~3개 (구체적일수록 좋음)
|
|
325
|
+
- `--image-upload-limit 5`, `--minimum-image-count 3` 기본값
|
|
326
|
+
- 소제목 위에 이미지 배치 — "시각 → 텍스트" 순서가 이해 빠름
|
|
327
|
+
- 이미지 없는 글은 네이버 D.I.A. 평가에서 불리
|
|
328
|
+
|
|
329
|
+
## 발행 후 검증
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
npx viruagent-cli list-posts --provider naver --limit 1
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## See Also
|
|
336
|
+
|
|
337
|
+
va-naver, va-naver-draft, va-shared
|