# Title Draft

> blueocean 이 고른 키워드를 제목 생성 브리프로 바꾼다. 실측값에서 어떤 제목 유형을 낼 수 있는지 판정하고, 낼 수 없는 유형은 그 이유와 함께 닫는다. 금칙어·상투어 하드 컷과 다음 단계(title-check)를 함께 낸다. 트리거 — "이 키워드로 제목 뽑아줘", "블루오션 결과로 제목까지", "제목 후보 만들어줘", "어떤 각도로 쓸까", "제목 브리프", "title draft". 주제 선정은 blueocean, 후보 측정은 title-check 가 한다. 이 스킬은 그 사이를 잇는다.

- Skill: `formars0309-cloud/title-draft` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add formars0309-cloud/title-draft`
- Raw SKILL.md: https://api.skillmd.com/api/skills/formars0309-cloud/title-draft/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: formars0309-cloud (https://skillmd.com/u/formars0309-cloud)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/formars0309-cloud/title-draft

---


# 제목 생성 브리프

주제는 정해졌고 제목은 아직인 구간을 맡는다.

**이 스킬도 제목을 만들지 않는다.** 만드는 건 에이전트다. 스크립트가 하는 일은
"어떤 각도를 낼 수 있는가"를 실측값으로 판정하고, 낼 수 없는 각도를 닫는 것이다.

## 세 스킬의 분업

```
blueocean     주제를 고른다        수요·공급·상업성·추세 → 등급
title-draft   각도를 정한다        실측값 → 낼 수 있는 유형 + 하드 컷      ← 여기
title-check   후보를 잰다          표현수요·유사도·상투어·SERP 잘림
```

## 도구

```bash
node ~/.claude/skills/title-draft/scripts/brief.mjs --in blueocean.json --keyword 본인부담상한제
node ~/.claude/skills/title-draft/scripts/brief.mjs --in blueocean.json --top 5
node ~/.claude/skills/title-draft/scripts/brief.mjs --in blueocean.json \
  --keyword 본인부담상한제 \
  --myth  "상한제는 신청만 하면 초과분을 다 돌려받는다" \
  --basis "비급여·선별급여는 산정 대상에서 제외된다 — 보건복지부 고시"
```

| 옵션 | 뜻 |
|---|---|
| `--in <path>` | blueocean 결과 JSON (기본 `blueocean.json`) |
| `--keyword <k>` | 대상 키워드 |
| `--top <n>` | 상위 n개를 한 번에. `--myth` 는 적용되지 않는다 |
| `--myth <문장>` | 반박할 통념 |
| `--basis <근거>` | 그 통념을 반박하는 근거. **`--myth` 와 둘 다 있어야 반전형이 열린다** |
| `--json` | JSON 출력 |

## 세 유형 — 순서에 의미 없다

품질 등급이 아니라 **서로 다른 각도**다. 그래서 순위를 매기지 않는다.

| 유형 | 언제 열리나 | 쓰는 법 |
|---|---|---|
| **질문형** | 항상 | 독자가 검색창에 치는 말에 가깝게. 답을 제목에서 주지 않는다 |
| **대상·상황형** | 검색량 10만 미만일 때 | 누가·언제 읽어야 하는지를 제목에 넣는다 |
| **반전형** | `--myth` + `--basis` 둘 다 있을 때만 | 근거가 말하는 범위 안에서, 결과가 아니라 **과정·조건**을 뒤집는다 |

후보가 2개, 때로는 1개만 나온다. **정상이다.** 빈 각도를 채우지 않는 것이 목적이다.

## 반전형을 조건부로 둔 이유

반전형은 후킹이 가장 세다. 그래서 위험도 가장 크다.

뒤집을 통념이 없는 주제에 이 유형을 요구하면 **에이전트가 없는 통념을 지어낸다.**
"많은 분들이 오해하시는데…" 같은 문장이 그렇게 나온다. 금칙어 필터는 이걸 잡지 못한다 —
어휘 문제가 아니라 **없는 사실을 만든 것**이기 때문이다. 제목이라 본문 검수도 우회한다.

그래서 통념은 사람이 준다. 자동화가 한 단계 줄어드는 대신 이 사고가 원천 차단된다.

### 통념만으로는 부족하다 — 근거도 받는다

통념만 받으면 반박의 **내용**은 여전히 에이전트가 지어낸다. 통념이 사실이어도
"그런데 실제로는 …" 뒤가 근거 없이 채워지면 결과는 같다. 그래서 `--basis` 를 함께 받는다.

근거에 DOI·PMID 가 있으면 브리프가 `citation-verify` 명령을 만들어 준다.

```
node ~/.claude/skills/citation-verify/scripts/verify.mjs verify --doi 10.xxxx/yyyy
```

`NOT_FOUND` · `MISMATCH` · `RETRACTED` 가 나오면 반전형을 쓰지 않는다.
식별자가 없는 근거(공식 고시·학회 지침 등)는 원문을 직접 열어 그 문서가 실제로
이 반박을 지지하는지 확인한다. **확인 전에는 반전형을 쓰지 않는다.**

## 하드 컷

점수가 아니라 통과/탈락이다. 하나라도 걸리면 그 후보는 버리고 다시 쓴다.

- **금칙어** — 완치, 무조건, 100%, 부작용이 없다, 모든 환자, 누구나 효과, 즉시 완화, 영구적으로
- **상투어** — 총정리, 놓치지 마세요, 완벽 정리, 한방에, 꿀팁, 충격, 경악, 이것만 알면
- **결과 약속 금지** — 낫는다·해결된다·받을 수 있다 로 끝맺지 않는다
- **없는 사실 금지** — 브리프에 없는 통념·수치·사례를 만들지 않는다

## 측정값을 합산하지 마라

브리프와 `title-check` 가 내는 숫자는 **항목별 진단**이다. 눈으로 더해 우열을 만들면
없앤 순위가 되살아난다. `상투어 0건`은 "좋다"가 아니라 "이 항목에서 걸릴 게 없다"는 뜻이다.

**제목의 클릭률은 네이버 API로 잴 수 없다.** 잴 수 없는 것에 점수를 붙이면 가짜 정밀도가 된다.
최종 선택 근거는 숫자가 아니라 독자·맥락과의 적합성이다.

## 흐름

1. `blueocean --hot 30` 으로 주제를 고른다
2. `brief.mjs --keyword <k>` 로 낼 수 있는 각도를 확인한다
3. 열린 유형마다 후보를 **하나씩** 쓴다. 닫힌 유형은 비워 둔다
4. `title-check --keyword <k> --title ... --title ...` 으로 잰다
5. 하드 컷에 걸린 것은 다시 쓴다
6. 사람이 고른다. 의료 콘텐츠는 발행 전 의료인 검토를 거친다

## 한계

**이 도구는 근거의 참을 판정하지 않는다.** `citation-verify` 는 DOI·PMID 가 실재하는
논문을 가리키는지만 확인한다 — 그 논문이 이 반박을 실제로 지지하는지는 사람이 읽어야 안다.
산문으로 된 근거는 기계가 검증할 수단이 아예 없다.

PMID 는 `PMID:` 라벨이 붙은 것만 인식한다. 맨 숫자를 PMID 로 오인하면 엉뚱한 논문을
조회하게 되기 때문이다. 검색량 10만 기준은 임의값이며 니치에 따라 조정할 여지가 있다.

