Community코딩 & 개발github.com

블로그 페르소나 - 글쓰기 어조 관리

NNGroup 4차원 어조 프레임워크와 CMI 브랜드 음성 차트를 기반으로 글쓰기 페르소나를 생성, 저장 및 적용합니다. 페르소나는 blog-write 및 blog-rewrite가 생성하는 모든 블로그 콘텐츠에서 일관된 어조를 보장합니다.

블로그 페르소나 - 글쓰기 어조 관리란 무엇인가요?

블로그 페르소나 스킬은 AI 에이전트(Claude Code, Cursor, Codex 등)가 NNGroup의 4차원 어조 프레임워크(유머/진지함, 격식/비격식, 존중/무례함, 열정/사실적)와 CMI 브랜드 음성 차트를 사용하여 체계적으로 브랜드 글쓰기 어조를 정의하고 적용할 수 있도록 지원합니다. 이 스킬을 사용하면 에이전트가 일관된 브랜드 어조를 갖춘 블로그 콘텐츠를 대규모로 생성할 수 있으며, 인터랙티브 인터뷰를 통해 페르소나를 생성하고, JSON 파일로 저장한 후 `blog-write` 및 `blog-rewrite`와의 통합을 통해 생성 전, 생성 중, 생성 후에 글쓰기 제약 조건을 적용합니다. 또한 가독성 등급, 문장 길이 통계, 축약어 빈도, 수동태 비율 등 세부적인 스타일 규칙을 지원하며, 오류 처리(값 고정, URL 실패, 빈 디렉터리, 이름 충돌, JSON 손상) 기능도 포함되어 있습니다. 다양한 AI 코딩 도구에서 실행되며, 설치 시 `skills/blog/references/personas/` 디렉터리 구조가 필요합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-persona

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

블로그 페르소나 - 글쓰기 어조 관리은(는) 무엇을 하나요?

NNGroup 4차원 어조 프레임워크와 CMI 브랜드 음성 차트를 기반으로 글쓰기 페르소나를 생성, 저장 및 적용합니다. 페르소나는 blog-write 및 blog-rewrite가 생성하는 모든 블로그 콘텐츠에서 일관된 어조를 보장합니다.

명령어

명령어목적
/blog persona create새로운 페르소나 생성을 위한 인터랙티브 인터뷰
/blog persona list저장된 모든 페르소나 표시
/blog persona use <이름>현재 세션에 활성 페르소나 설정
/blog persona show <이름>전체 페르소나 프로필 표시

생성 워크플로우

6단계 인터랙티브 인터뷰를 실행합니다. 각 단계를 질문하고 응답을 기다린 후 다음으로 진행합니다.

1단계: 브랜드 기본 정보

사용자에게 다음을 요청합니다:

  • 브랜드 이름 - 회사 또는 개인 브랜드
  • 산업 - 주요 분야 (예: SaaS, 건강, 금융, 교육)
  • 대상 독자 - 블로그를 읽는 사람 (직무, 경험 수준, 목표)
  • 한 문장으로 된 브랜드 미션 - 브랜드가 사람들에게 도움이 되는 것

2단계: 어조 차원 (NNGroup 프레임워크)

각 차원을 0.0부터 1.0까지의 슬라이더로 제시합니다. 양쪽 끝을 예시와 함께 설명합니다.

차원0.0 끝1.0 끝0.0 예시1.0 예시
funny_serious유머진지"솔직히, 이용약관 읽는 사람 아무도 없잖아요""법적 계약을 이해하면 비즈니스를 보호할 수 있습니다"
formal_casual격식비격식"기쁜 마음으로 알려드립니다""맞아요, 출시했습니다!"
respectful_irreverent존중무례"기다려주셔서 감사합니다""네, 그 구식 방식은 망가졌었죠"
enthusiastic_matter_of_fact열정사실적"이게 모든 것을 바꿉니다!""결과는 다음과 같습니다."

사용자가 확신하지 못할 경우 기본값: [0.6, 0.5, 0.3, 0.5] (약간 진지함, 균형 잡힌 격식, 존중, 균형 잡힌 열정).

3단계: 글쓰기 규칙

먼저 사용자에게 어휘 수준을 선택하도록 요청한 후, 일치하는 가독성 등급을 자동 제안합니다 (사용자가 재정의 가능).

설정질문 내용기본값
어휘 수준소비자, 전문가, 또는 기술전문가
가독성 등급수준에서 자동 채움 (아래 표 참조)학년 8-10
문장 길이 평균문장당 평균 단어 수18
문장 길이 표준편차문장 길이의 변동6
축약어 빈도0.0 (전혀 없음) ~ 1.0 (항상)0.6
최대 수동태 비율수동태 구성의 백분율 제한10%

4단계: 해야 할 일과 하지 말아야 할 일 (CMI 브랜드 음성 차트)

각 목록에 3-5개 항목을 요청합니다. 어조 차원에 기반한 시작 예시를 제공합니다.

해야 할 일 예시: "데이터를 사용하여 주장을 뒷받침", "독자를 '당신'으로 지칭", "질문이나 통계로 시작"

하지 말아야 할 일 예시: "정의 없이 전문 용어 사용 금지", "There is/There are로 문장 시작 금지", "game-changer 같은 클리셰 사용 금지"

5단계: 요약 레이블 선호도

블로그 게시물의 요약/핵심 내용 상자에 사용할 레이블입니다. 사용자에게 다음 중 하나를 선택하도록 요청합니다:

  • 주요 내용 (Key Takeaways, 기본값)
  • 결론 (The Bottom Line)
  • 배울 내용 (What You'll Learn)
  • TL;DR
  • 빠른 요약 (Quick Summary)
  • 간단히 말하면 (In a Nutshell)
  • 사용자 정의 레이블

6단계: 음성 샘플 (선택 사항)

사용자가 원하는 어조를 보여주는 기존 콘텐츠 URL이 1-3개 있는지 묻습니다. URL을 페르소나에 저장하여 향후 참조에 사용합니다. URL이 제공되면 각 URL을 읽고 다음을 추출합니다:

  • 평균 문장 길이
  • 축약어 빈도
  • 어조 차원 추정치
  • 어휘 수준

추출된 값을 페르소나 설정과 비교하고 불일치 사항을 표시합니다.

저장

완성된 페르소나를 JSON으로 다음 위치에 저장합니다: skills/blog/references/personas/<이름>.json

파일 이름은 케밥-케이스(kebab-case)를 사용합니다 (예: acme-saas.json).

페르소나 프로필 스키마

{
  "name": "acme-saas",
  "description": "B2B 마케팅 콘텐츠를 위한 전문 SaaS 어조",
  "brand": "Acme Corp",
  "industry": "SaaS",
  "audience": "중견 기업의 마케팅 관리자",
  "mission": "마케팅 팀의 리포팅 자동화 지원",
  "tone_dimensions": {
    "funny_serious": 0.7,
    "formal_casual": 0.4,
    "respectful_irreverent": 0.2,
    "enthusiastic_matter_of_fact": 0.5
  },
  "readability": {
    "flesch_grade_min": 8,
    "flesch_grade_max": 10,
    "flesch_ease_min": 50,
    "flesch_ease_max": 60
  },
  "style": {
    "sentence_length_mean": 18,
    "sentence_length_std": 6,
    "contraction_frequency": 0.6,
    "passive_voice_max_pct": 10,
    "vocabulary_tier": "professional",
    "summary_label": "Key Takeaways"
  },
  "voice_samples": [],
  "do": [
    "모든 주요 주장을 데이터로 뒷받침",
    "독자를 직접 '당신'으로 지칭",
    "실행 가능한 인사이트로 섹션 시작"
  ],
  "dont": [
    "맥락 없이 유행어 사용 금지",
    "30단어 이상 문장 쓰지 않기",
    "'Acme에서'로 시작하지 않기"
  ]
}

어휘 수준별 가독성 등급

수준Flesch 학년Flesch 난이도일반적인 사용처
소비자6-860-80건강, 라이프스타일, 개인 재무
전문가8-1050-60B2B, 마케팅, 경영
기술10-1230-50엔지니어링, 의료, 법률

사용자가 수준을 선택하면 가독성 필드를 자동으로 채웁니다. 사용자가 비표준 조합(예: 설명 콘텐츠를 위한 소비자 가독성 수준의 기술 어휘)을 원할 경우 재정의할 수 있습니다.

blog-write 및 blog-rewrite와의 통합

페르소나가 활성화되면 (/blog persona use <이름> 사용), 작성 에이전트는 페르소나 JSON을 로드하고 생성 중에 이러한 제약 조건을 적용합니다:

  1. 생성 전 - 페르소나 로드, blog-writer 에이전트의 시스템 프롬프트에 어조 차원과 스타일 규칙을 주입합니다.
  2. 생성 중 - 작성자는 해야 할 일/하지 말아야 할 일 규칙을 따르고, 문장 길이 평균/표준편차를 목표로 하며, 지정된 빈도로 축약어를 사용합니다.
  3. 생성 후 검증 - 출력을 페르소나 제약 조건에 대해 확인합니다:
    • 문장 길이 분포가 목표 평균의 표준편차 1 이내
    • 가독성 점수가 지정된 학년 등급 범위 내
    • 수동태 비율이 최대 미만
    • 패턴 매칭을 통해 "하지 말아야 할 일" 규칙 위반 없음

검증에 실패하면 특정 위반 사항을 표시하고 수정을 제안합니다.

목록 명령어

skills/blog/references/personas/*.json을 글로브(glob)하여 다음 표를 표시합니다:

페르소나산업대상 독자어휘
acme-saasSaaS마케팅 관리자전문가

페르소나가 없으면 사용자에게 생성하도록 안내합니다.

표시 명령어

지정된 페르소나 JSON을 읽고 모든 어조 차원, 스타일 규칙, 해야 할 일/하지 말아야 할 일 목록을 포함한 형식화된 요약으로 표시합니다.

사용 명령어

페르소나 JSON을 읽고 활성화를 확인합니다. 적용될 주요 제약 조건의 요약을 출력합니다. 페르소나는 현재 대화 세션 동안 활성 상태를 유지합니다. blog-write와 blog-rewrite는 콘텐츠를 생성하기 전에 활성 페르소나를 확인합니다.

오류 처리

  • 잘못된 어조 값: 사용자가 0.0-1.0 범위를 벗어난 값을 제공하면 가장 가까운 유효 경계로 고정하고 경고합니다.
  • 음성 샘플에 접근 불가: voice_samples의 URL이 오류를 반환하면 건너뛰고 프로필에 샘플을 사용할 수 없었다고 기록합니다.
  • 빈 페르소나 디렉터리: list 또는 show 명령 실행 시 저장된 페르소나가 없으면 사용자에게 먼저 생성하도록 안내합니다.
  • 이름 충돌: 생성 중 페르소나 이름이 이미 존재하면 덮어쓸지 다른 이름을 선택할지 묻습니다.
  • 잘못된 JSON: 페르소나 파일이 손상된 경우 오류를 보고하고 인터뷰를 통해 다시 생성할 것을 제안합니다.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

관련 스킬