Communitygithub.com

블로그 포스트 작성기

코드 변경사항, 마케팅 브리프, 기능 설명 등에서 고품질 블로그 포스트를 작성합니다. SEO, 구조, 톤 매칭, 시각적 콘텐츠를 처리합니다.

블로그 포스트 작성기란 무엇인가요?

이 스킬은 개발자, 제품 관리자, 기술 작가가 코드 변경사항(PR, git refs, 파일 경로)이나 마케팅 브리프를 기반으로 블로그 포스트를 자동 생성할 수 있도록 지원합니다. 사용자의 입력을 자동으로 분석하여 마케팅 브리프 파일에서부터 PR 링크, git diff, 자유 형식 설명에 이르기까지 적절한 입력 방식을 결정한 뒤, 6단계의 체계적인 프로세스(입력 해석 → 경쟁사 조사 → 설정 → 개요 → 작성 → 출력)를 따라 블로그 포스트를 완성합니다. 특히 경쟁사 블로그 조사(Phase 2)를 통해 SEO 키워드와 콘텐츠 차별화 전략을 수립하며, 작성 과정에서는 자체 검토 및 백필(backfill) 단계를 통해 완성도를 높입니다. Claude Code 및 유사 AI 코딩 어시스턴트와 함께 사용하기에 적합하며, 생성되는 포스트는 em-dash를 사용하지 않는다는 엄격한 규칙을 따릅니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/blog-post

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

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

미리보기

스킬 README에서

대체 텍스트 설명

문서

블로그 포스트 작성기은(는) 무엇을 하나요?

코드 변경사항, 마케팅 브리프, 기능 설명에서 고품질 블로그 포스트를 작성합니다. SEO, 구조, 톤 매칭, 시각적 콘텐츠를 처리합니다.

작성 규칙(절대 예외 없음): em-dash(— 또는 –)를 절대 사용하지 마십시오. 대신 하이픈(-)을 사용하세요. 생성된 모든 카피의 모든 줄에 적용됩니다.

입력 해석

인자가 제공된 경우 다음 순서로 해석합니다:

  1. 기존 마케팅 브리프 파일 경로(.md 파일로 "Executive Summary" 또는 "Key Messages" 포함) → 마케팅 브리프
  2. GitHub URL 또는 #\d+ 패턴과 일치 → PR
  3. ... 또는 .. 포함 → git ref 범위
  4. 기존 파일/디렉토리로 확인 → 코드베이스 기능
  5. 그 외 → 자유 형식 텍스트

인자가 제공되지 않으면 다음 질문을 합니다: "무엇에 대해 작성할까요? 마케팅 브리프 경로, PR URL/번호, git ref 범위(예: v1.0...v2.0), 파일/디렉토리 경로를 제공하거나 주제를 설명해 주세요."

여러 해석이 일치하는 경우 사용자에게 확인합니다.

프로세스 흐름

digraph blog_post {
    rankdir=TB;
    "입력 해석" [shape=box];
    "1단계: 탐색" [shape=box];
    "2단계: 조사" [shape=box];
    "3단계: 설정" [shape=box];
    "4단계: 개요" [shape=box];
    "개요 승인됨?" [shape=diamond];
    "5단계: 작성" [shape=box];
    "6단계: 출력" [shape=box];

    "입력 해석" -> "1단계: 탐색";
    "1단계: 탐색" -> "2단계: 조사";
    "2단계: 조사" -> "3단계: 설정";
    "3단계: 설정" -> "4단계: 개요";
    "4단계: 개요" -> "개요 승인됨?";
    "개요 승인됨?" -> "4단계: 개요" [label="아니요, 수정"];
    "개요 승인됨?" -> "5단계: 작성" [label="예"];
    "5단계: 작성" -> "6단계: 출력";
}

단계를 건너뛰지 마세요. 자연스러운 속도로 질문하세요. 사용자를 압도하지도 말고 인위적으로 속도를 늦추지도 마세요. 사용자가 여러 질문에 한 번에 답변하면 번들로 받아들이고 건너뛰세요.

사용자가 "그냥 기본값으로 해줘", "네가 골라" 또는 이와 유사한 말을 하면, 문맥에 따라 합리적인 기본값을 선택하고 선택한 내용을 알린 후 진행 전에 한 번의 확인을 요청하세요.

확인 없이 가정하지 마세요.

1단계: 탐색

1단계 - 입력 분석

입력 유형읽을 내용
마케팅 브리프브리프 읽기 - 문제 정의, 가치 제안, 대상, 핵심 메시지, 경쟁 포지셔닝 추출. 제품 맥락이 부족하면 2단계도 수행한 후 3단계로 진행.
PR차이점, PR 설명, 리뷰 코멘트, 커밋 메시지(gh pr view, gh pr diff). 큰 PR(20개 이상 파일)의 경우 사용자 대상 변경사항에 집중.
Git refsref 간 git diff 및 git log. 큰 범위의 경우 커밋 메시지와 사용자 대상 변경사항 우선.
코드베이스 기능지정된 파일/디렉토리 읽기.
자유 형식 텍스트사용자의 설명 분석. 구체성 부족(기능 이름, 가치 제안, 맥락 없음) 시 추가 세부정보나 특정 파일/PR을 요청. 그래도 안되면 개방형 질문에 의존.

사용자 대상 변경사항에는 신규 기능, UI 변경, API 변경, 성능 개선, 버그 수정, 문서 업데이트가 포함됩니다. 내부 변경사항에는 리팩터, 테스트 추가, CI 변경, 의존성 업데이트가 포함됩니다. 불확실할 경우 찾은 내용을 나열하고 사용자에게 관련 항목을 물어보세요.

오류 처리:

  • gh 미설치/미인증 → 사용자에게 알리고 gh auth login 제안, 대안 입력 제공
  • 잘못된 PR/ref → 사용자에게 알리고 확인 요청
  • 파일 없음 → 올바른 경로 요청

2단계 - 더 넓은 제품 맥락 읽기

존재하는 경우 읽기: README, docs/, package.json(또는 동등 파일), 마케팅 참조.

목표: 제품이 무엇인지, 누구를 위한 것인지, 무엇을 하는지 이해.

아무것도 없으면 질문: "저장소에서 제품 맥락을 찾을 수 없습니다. 제품이 무엇이고 누구를 위한 것인지 간단히 설명해 주시겠습니까?"

3단계 - 이해한 내용 제시

"제가 이해한 내용은 다음과 같습니다:"

  • 기능 A - 짧은 설명
  • 기능 B - 짧은 설명

"이 중 어떤 것을 블로그 포스트에서 다뤄야 할까요? 추가, 삭제, 수정할 사항이 있나요?"

범위를 완전히 이해할 때까지 필요한 만큼 질문하세요. 사용자가 확인할 때까지 진행하지 마십시오.

4단계 - 민감 항목 플래그

다음 항목 스캔: 호환성 깨짐 변경, 폐기(Deprecation), 보안 수정, 마이그레이션 요구사항.

발견되면 각각을 플래그하고 진행 전에 어떻게 표현할지 물어보세요.

2단계: 경쟁 블로그 조사

포스트 설정 전, 해당 분야의 유사 블로그 포스트를 검색:

  1. WebSearch를 사용해 동일 주제, 경쟁 제품, 유사 기능 발표를 다루는 기존 블로그 포스트 3-5개 찾기
  2. 해당 포스트의 장단점 분석 - 구조, 헤드라인, 훅, SEO 키워드, 깊이
  3. 콘텐츠 격차 식별 - 경쟁사가 다루지 않는 부분
  4. 이 결과를 SEO 전략, 헤드라인 생성, 콘텐츠 구조에 활용

WebSearch를 사용할 수 없으면 이 단계를 건너뛰고 자체 지식에 의존하세요.

사용자에게 간단한 요약 제시:

"비슷한 포스트를 찾았습니다. 발견한 내용은 다음과 같습니다:"

  • [효과적인 부분에 대한 주요 발견]
  • [콘텐츠 격차 / 기회]
  • [SEO 키워드 기회]

"이 통찰력을 포스트 구성에 활용하겠습니다."

3단계: 설정

다음 질문:

Q1 - 대상: "이 블로그 포스트의 대상은 누구인가요?" (개발자, 최종 사용자, 기술 의사결정자, 일반 대상, 기타)

Q2 - 톤: 저장소의 기존 블로그 포스트, README, 문서를 읽어 제품의 목소리를 감지. 그런 다음 확인:

"기존 콘텐츠를 바탕으로 톤이 [예: 대화형이고 개발자 친화적]인 것 같습니다. 이에 맞출까요, 아니면 다른 방향으로 갈까요?"

분석할 기존 콘텐츠가 없으면 원하는 톤을 직접 물어보세요.

Q3 - 포스트 유형: 입력과 대상을 바탕으로 포스트 유형을 추천하고 확인:

  • 기능 발표 - "X를 출시했습니다, 왜 중요한지" (~600-1000단어)
  • 심층 기술 - "X를 구축한 방법, 결정과 아키텍처" (~1500-2500단어)
  • 문제-해결 서사 - "X 문제가 있나요? 여기 해결 방법이 있습니다" (~1000-2000단어)

"[입력/대상]을 고려하여 [유형] 포스트를 추천합니다. 이유는 [이유]입니다. 맞을까요?"

Q4 - CTA: 문맥에서 가장 적절한 행동 유도 문구 추론:

  • 오픈소스 → 저장소 스타, 기여하기, 사용해보기
  • SaaS → 가입, 무료 체험 시작
  • 기능 업데이트 → 새 기능 사용해보기, 문서 읽기
  • 라이브러리/SDK → 설치, 마이그레이션 가이드 읽기

"CTA는 [추론된 CTA]를 제안합니다. 이대로 갈까요, 아니면 다른 것을 원하시나요?"

Q5 - 참여 수준: "작성 과정에 얼마나 참여하고 싶으신가요?"

  • A) 그냥 작성해 주세요 - 제가 모든 것을 처리하고 가장 좋은 헤드라인을 선택해 최종 포스트를 저장합니다. 이후 변경을 요청할 수 있습니다.
  • B) 먼저 개요를 보여주세요 - 구조를 승인하면 전체 포스트를 작성합니다
  • C) 단계별로 진행해 주세요 - 개요 승인 후 섹션별로 확인하며 진행

4단계: 개요

구조화된 개요 생성:

## [작업 제목]

1. **훅/소개** - [접근 방식: 질문/통계/대담한 주장/스토리]
   - 확립할 핵심 포인트
   - 본문으로 전환

2. **섹션 이름** - [목적]
   - 핵심 포인트
   - 예상 단어 수

3. **섹션 이름** - [목적]
   - 핵심 포인트
   - 예상 단어 수

[...필요한 만큼 섹션]

N. **결론** - [요약 + CTA]
   - 강화할 핵심 내용
   - CTA: [구체적 행동]

총 예상 단어: ~X단어

참여 수준이 A이면 개요를 내부적으로 생성하고 보여주지 않습니다. B와 C의 경우 개요를 제시하고 승인을 기다립니다.

5단계: 작성

내부 작성 프로세스(참여 수준과 관계없이 항상 실행)

각 섹션마다:

  1. 섹션 작성
  2. 자체 검토: 콘텐츠를 다르게 구조화할 수 있는지, 독자가 이해하고 소화하는 데 필요한 맥락이 누락되었는지, 주제에 익숙하지 않은 사람을 혼란스럽게 할 간격이 있는지 분석
  3. 백필: 누락된 부분이 발견되면 연결 문단, 맥락 추가 또는 구조 변경 후 진행

참여 수준이 C이면 자체 검토 후 각 섹션을 제시하고 진행 전에 확인을 받습니다. A와 B의 경우 이 프로세스를 자동으로 실행합니다.

헤드라인

본문 완성 후 다양한 공식을 사용해 3-5개의 헤드라인 옵션 생성:

  • 방법("[제품]으로 [문제] 해결하는 방법")
  • 숫자/목록("[기능]이 [워크플로]를 바꾸는 3가지 이유")
  • 질문("[고통점]에 지치셨나요?")
  • 대담한 주장("[기능]은 [결과]를 위한 가장 빠른 방법입니다")
  • 전후("[고통] → [결과]: [기능]이 어떻게 실현하는가")

하나를 추천하고 이 포스트의 대상, SEO, 맥락에 가장 적합한 이유를 설명합니다. 또한 다른 옵션의 장단점을 설명합니다.

참여 수준 B와 C의 경우 옵션을 제시하고 진행 전에 사용자의 선택을 받습니다. A의 경우 추천을 사용합니다.

SEO 제약보다 가독성을 우선시합니다. 먼저 최고의 헤드라인을 작성합니다. 50-60자 SEO 제목 제한에 맞지 않으면 프론트매터를 위해 별도의 짧은 타이틀 태그를 만듭니다.

SEO 프론트매터

포스트 상단에 YAML 프론트매터로 생성:

---
title: "[선택된 헤드라인]"
meta_description: "[140-160자, 주요 키워드 포함, 설득력 있는 가치 제안]"
primary_keyword: "[주요 타겟 키워드]"
secondary_keywords: ["키워드1", "키워드2", "키워드3"]
long_tail_keywords: ["더 긴 구문 1", "더 긴 구문 2"]
slug: "[url-friendly-slug]"
---

규칙:

  • 타이틀 태그: 50-60자, 주요 키워드 앞쪽 배치
  • 메타 설명: 140-160자, 사람을 위해 작성, 고유 가치 제안 포함
  • 키워드는 2단계 경쟁 조사 결과에 기반
  • 키워드 스터핑 금지 - 자연어만 사용

콘텐츠 서식 규칙

  • 짧은 문단: 최대 2-4문장
  • 소제목: 주요 섹션에 H2, 하위 섹션에 H3 사용. 소제목은 자체로 스캔 가능한 개요 역할을 해야 함
  • 핵심 구문을 굵게 표시하여 F-패턴 스캐닝 지원
  • 3개 이상 항목은 글머리 기호와 목록 사용
  • 문단당 하나의 아이디어
  • 생성된 콘텐츠에 em-dash를 절대 사용하지 마세요. "—" 문자 금지. 대신 쉼표, 콜론, 마침표, 괄호 사용

훅/소개

소개는 세 가지 구성 요소로 이루어짐:

  1. 훅(첫 1-2문장) - 놀라운 통계, 대담한 주장, 공감되는 고통점, 도발적인 질문. 읽은 지 3초 안에 호기심이나 감정적 공명을 만들어야 함
  2. 권위 - 왜 이것이 중요한지 또는 독자가 왜 이것을 신뢰해야 하는지 간략히 확립
  3. 약속 - 이 포스트에서 독자가 얻을 수 있는 것을 명확히 기술

소개는 3-5개의 짧은 문단으로 유지. 긴 텍스트 블록 금지.

결론

  1. 주요 내용 재진술(새로운 아이디어 도입 금지)
  2. 행동 동사가 포함된 단일 명확한 CTA("지금 사용해보기", "저장소에 별표 표시", "무료 체험 시작")
  3. 선택적으로 토론을 유도하는 미래 지향적 문장이나 질문으로 마무리

시각적 콘텐츠

가능하면 직접 생성:

  • 아키텍처 다이어그램 → mermaid 코드 블록 또는 인라인 SVG
  • 데이터 흐름 다이어그램 → mermaid 코드 블록
  • 비교 테이블 → 마크다운 테이블
  • 코드 예제 → 구문 강조 코드 블록

외부 생성이 필요한 이미지의 경우:

<!-- TODO: 이미지 추가 -->
<!-- 제안: [이미지가 보여줘야 할 내용 설명] -->
<!-- LLM 프롬프트: "[이미지 생성 모델용 프롬프트, 예: '다크 모드 토글이 있는 대시보드를 보여주는 깔끔하고 미니멀한 일러스트레이션, 플랫 디자인 스타일, 개발자 도구 미학, 16:9 비율']" -->
![대체 텍스트 설명](placeholder.png)

이해를 돕는 곳이면 어디든 시각 자료 사용 - 복잡한 개념 설명 후, 옵션 비교 시, UI 변경 표시 시.

코드 예제

개발자 대상의 경우 실제 동작하는 기능을 보여주는 코드 예제를 최소 하나 포함. 5-15줄의 최소한의 실행 가능한 스니펫 선호. 개선 사항을 보여줄 때는 전후 비교 표시.

5b단계: 전체 초안 검토

모든 섹션이 작성되고 헤드라인이 선택된 후 전체 포스트(프론트매터 + 본문)를 조립.

  • 수준 A: 검토 건너뜀. 바로 출력으로 진행. 최종 포스트를 제시하고 저장. 사용자는 이후 변경 요청 가능.
  • 수준 B: 저장 전에 전체 초안을 사용자에게 제시하여 검토. "전체 포스트입니다. 저장하기 전에 변경할 사항이 있나요?"
  • 수준 C: 사용자가 각 섹션을 개별적으로 보았지만, 그래도 조립된 초안을 최종 검토용으로 제시. "전체 포스트입니다. 저장하기 전에 변경할 사항이 있나요?"

B와 C의 경우 사용자가 수정을 요청하면 수정하고 다시 제시. 사용자가 승인할 때만 출력으로 진행.

6단계: 출력

먼저 기존 블로그 디렉토리 탐지. 다음 확인:

  • content/blog/, src/pages/blog/, _posts/, blog/, posts/, articles/

찾으면 해당 디렉토리 사용. 없으면 기본값 blog/posts/ 사용.

사용자에게 제시:

"이것을 [탐지된 또는 기본 경로]/<slug>.md에 저장하겠습니다. 다른 곳에 저장할까요, 아니면 저장하지 않고 그냥 출력만 할까요?"

디렉토리가 없으면 생성.

파일이 이미 존재하면: 덮어쓸지 버전 복사본을 만들지 질문.

오류 처리

  • gh 사용 불가 → 사용자에게 알리고 대안 입력 제공
  • 잘못된 PR/ref → 사용자에게 확인 요청
  • 제품 맥락 없음 → 사용자에게 제품 설명 요청
  • WebSearch 사용 불가 → 2단계 건너뛰고 자체 지식으로 진행
  • 기존 블로그 디렉토리 없음 → blog/posts/ 기본값 사용, 생성

이 스킬이 수행하지 않는 작업

  • 소셜 미디어 카피 생성(/social-copy 사용)
  • 포스트를 어떤 플랫폼에도 게시 또는 배포
  • 마케팅 브리프 생성(/marketing-brief 사용)
  • 다양한 대상을 위한 여러 변형 생성 - 다른 대상이 필요하면 스킬을 다시 실행

Individual skills in this repo

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

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when a settled change must be turned into an ordered stack of small blocks before anyone implements. Don't use for unsettled intent, typos, comments, formatting, docs-only work, or writing the implementation itself.

AlemTuzlak/skills

Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the user wants to deeply learn a new topic from scratch. Runs a pre-interview (current knowledge, end-goal proficiency, depth, practice load, background, scope), researches online (articles, niche-influencer blogs, canonical docs, subtopic landscape), then produces a structured markdown course with mandatory visual diagrams, evidence-based learning-science features (retrieval practice, spaced callbacks, worked-example fading, concept ledger, jargon gate, analogy hygiene), and a self-contained interactive HTML mini-course. Triggers on /teach-me, "teach me about X", "I want to learn X", "deep dive on X", "create a course on X", "study X with me".

AlemTuzlak/skills

Use when the change intent is already settled and the agent must map what a behavior change touches before an implementation plan or any code. Use for new features, bug fixes, and refactors that move a boundary. Don't use for typos, comments, formatting, lockfile-only diffs, docs with no code, or while the user is still deciding what they want.

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

관련 스킬