Chapter 1에서는 블로그 스킬을 직접 만들고 적용해봤습니다.
이번 Chapter 2에서는 이미 만들어진 스킬을 찾고 5분 만에 적용 하는 법을 알려드릴게요.
👀 이 글을 읽으면 다음과 같이 성장해요!
"회의록 정리해줘" 한마디로 담당자·액션아이템까지 자동 정리되는 스킬 바로 적용하기
97만 개 중에서 내 업무에 딱 맞는 스킬을 5분 만에 골라내는 기준 4가지
"이거 어떻게 만들었어요?" 소리 듣는 SNS·보고서·기획서 자동화 스킬 6개
Claude 안에 이미 스킬이 들어 있어요.
지난 시간에는 직접 스킬을 만들었습니다.
하지만, 이미 Claude 내에는 스킬을 만들어주는 스킬이 존재 합니다.
클러드에서 사용자 지정 → 스킬을 확인해 보면,
skill-creator란 스킬이 존재합니다.
따라서, 우리는 어렵게 스킬만드는 방법을 찾지 않아도,
그냥 대화창에서 “인스타그램 문구 작성 스킬 만들어줘”라고 말하면
규칙을 물어보고, 알아서 Skill.md를 만들어줍니다.
알아서, skill-creator를 읽고 질문을 합니다.
너무 편하게 스킬을 만들 수 있네요. 😎
이러한 Claude의 공식 스킬은
skill-creator말고도 여러개 존재합니다.
사용자 지정 → 스킬→ 스킬 둘러보기 에서 공식 Skill을 확인 해보세요!
외부 스킬 찾는 법 - 사이트 6곳
공식 스킬만으로는 부족할 때,
외부 마켓플레이스에서 스킬을 찾으면 됩니다.
사이트 설명후 적용 방법까지 정말 쉽게 설명드릴게요
https://github.com/anthropics/skills/tree/main/skills
Claude를 만든 Anthropic이 직접 만들고 관리하는 스킬들입니다.
수는 적지만 공식 스킬이기 때문에 품질이 좋습니다.
https://skillhub.club/
각 스킬에 AI 평가 점수가 붙어있고,
검색 AI를 통해서 내가 원하는 스킬을 쉽게 찾을 수 있습니다.
https://github.com/bear2u/my-skills
한국어로 된 스킬 모음 사이트입니다.
품질도 괜찮고, 영어 문서가 어렵다면 여기서 먼저 학습 해보세요.
4. https://github.com/coreyhaines31/marketingskills/tree/main
마케팅 스킬들만 모은 사이트입니다.
콘텐츠 마케팅 전략부터 이미지 생성까지 마케팅 업무에 필수적인 스킬들이 모여 있어요
https://github.com/alirezarezvani/claude-skills
스킬뿐만 아니라 플러그인도 모여있습니다.
(간단하게 플러그인은 여러 스킬들을 하나로 묶어둔 패키지입니다.)
유용한 정보가 많으니 스킬을 학습하고 한번 둘러 보세요.
https://github.com/abubakarsiddik31/claude-skills-collection
직종별로 좋은 스킬들을 모아뒀습니다.
내 업무에 맞는 괜찮은 스킬을 빠르게 확인 가능해요
✨ 좋은 스킬 고르는 기준 3가지
마지막 업데이트가 3개월 이내인가?
- 오래된 스킬은 현재 버전과 안 맞을 수 있어요.
한 가지 작업에만 집중된 스킬인가?
- “블로그도 써주고, 이메일도 써주고, 코드도 리뷰해줘” - 이런 스킬은 피하세요
- 여러 기능을 담으려다 보면 트리거 조건이 충돌해, 발동이 잘 안될 수 있어요.
- 따라서 스킬 이름이 하나의 동사로 끝나면 좋은 신호입니다. (ex. meeting-notes, eamil-reply)
Stars가 10개 이상인가
- Stars는 이프로젝트가 마음에 든다는걸 의미합니다.
- 그래도 최소한 10명의 사람에게 마음에 든다는 신호를 받은 스킬을 사용하세요.
외부 스킬 적용하는 법 - 4단계면 끝납니다.
위 사이트에서 마음에 드는 스킬을 찾으면,
보통 아래와 같은 GitHub 주소로 연결됩니다.
스킬 주소 예시
https://github.com/anthropics/skills/tree/main/skills/doc-coauthoring
처음에 GitHub 주소를 보면 낯설 수 있어요.
하지만 단순 코드 저장소니 걱정말고 아래처럼 스킬을 적용 해주시면 됩니다.
1. Zip으로 다운받기
아래 사이트에 스킬 GitHub 주소를 그대로 붙여넣어주세요
그럼 Zip 파일로 바로 다운됩니다.
https://download-directory.github.io/
2. 압축 파일을 Claude.ai에 업로드 해주세요
사용자 지정 → 스킬 → 스킬 만들기 → 스킬 업로드 → 다운 받은 zip 파일 선택
3. 영어 스킬이라면 description 부분만 한국어 추가 해주세요.
Claude는 한국어로 물어봐도 맥락으로 감지하는 경우가 많지만, 100%는 아닙니다.
짧고 모호한 표현일수록 실패해요
안정적으로 켜지게 하려면 description 부분에 영어 원문은 그대로 두고
영어를 한국어로 번역해 앞에만 추가하면 됩니다.
SKILL.md — description 수정 (한국어 표현만 앞에 추가)
# 수정 전 (영어 원본 그대로)
description: Write meeting notes when user asks to summarize a meeting
# 수정 후 (한국어 표현 앞에 추가, 영어는 유지)
description: 회의록 정리해줘, 오늘 회의 요약해줘,
Write meeting notes when user asks to summarize a meeting
4. 토글이 활성화 되어 있는지 확인 해주세요
업로드된 스킬의 토글이 켜져 있는지 확인하면 완료입니다.
좋은 스킬 6개 - 이건 놓치지 마세요
비개발자도 바로 쓸 수 있는 좋은 스킬들만 모왔으니 바로 적용해보세요!
internal-comes
“이번 주 한일, 다음 주 할 일, 문제 있는 것”등을 텍스트로 말하면
형식에 맞는 보고서로 바꿔줍니다.
doc-coauthoring
기획서·제안서 쓸 때 머릿속에 있는 것을 얘기하면,
Claude가 “이 부분에서 구체적으로 말해주세요”같은 질문을 5~10개 던집니다.
답하시다 보면 어느새 기획서 초안이 완성돼 있을 거예요.
slack-gif-creator
“우리 팀 마스코트가 춤추는 GIF 만들어줘”라고 말하면
공유가 가능한 재밌는 GIF 파일을 만들어줍니다.
ai-content-pipeline
"이 주제로 30초 유튜브 쇼츠 만들어줘"라고 하면
스크립트 작성 → 이미지 생성 → 영상 애니메이션 → 목소리 입히기까지 전부 자동으로 진행됩니다.
social-media-post
내용 하나를 쓰면 각 플랫폼에 맞는 버전을 자동으로 만들어줍니다.
X는 280자 이내로, 링크드인은 전문적인 톤으로, Threads는 가볍고 짧게
"언제 올리면 잘 보이나요?"까지 알려줘서 포스팅 하나에 들어가는 시간이 확 줄어듭니다.
market-analysis
"우리 서비스의 시장 분석 해줘"라고 하면
경쟁사 분석 → 타깃 고객 정의 → 시장 진입 전략까지 단계별로 빠짐없이 정리해줍니다.
이제는 반복작업 하기전 스킬먼저 찾아보세요
Chapter 1,2 모두 따라오셨다면,
이젠 스킬에 관해 알아야 할 핵심은 전부 아시는 거예요.
이제는 매주 반복되는 업무 하나를 떠올려 보세요.
회의록 정리, 주간 보고서, SNS 포스팅, 이메일 답장등 뭐든 됩니다.
위에서 소개한 사이트들에서 검색 해보면,
이미 누군가 만들어뒀을 가능성이 높습니다.
이제는 스킬을 가져와서 바로 쓰시기만 하면 됩니다.
스킬 하나가 쌓일 때마다 반복되는 시간이 사라지고,
그게 쌓이면 AI가 나 대신 일하는 구조를 만드실 수 있어요.
긴글 읽어주셔서 너무 고생하셨고 감사합니다 🥳
⭐ 글 핵심 30초만에 요약보기
스킬을 만들때는 내장된 Skill-creator를 사용하자
영어 스킬에는 description 부분에 한국어 표현을 추가하자
스킬을 만들기 전에 먼저 다른사람이 만들었는지 검색해보자
오늘은 스킬 파일 하나만 만들어두면,
다음에 “이 주제로 글 써줘”한마디로 최적화 블로그 글을 자동화하는 모든 과정을 알려드릴게요.
총 2개 챕터로 진행됩니다.
Chapter 1. 실제 스킬 파일 생성해서 블로그 글 자동화하기 (NOW!)
Chapter 2. 97만 개 Claude 스킬 중에서 내 것 5분 만에 찾는 법 - 완전 쉬움
👀 이 글을 읽으면 다음과 같이 성장해요!
"이 주제로 글 써줘" 한마디로 브랜드 톤·두괄식·금지 표현 없는 블로그 초안 완성하는법
500줄짜리 지침을 SKILL.md 파일 하나로 대체하는 스킬 3단계 구조 설계법
"이 글 어떻게 이렇게 잘 나와요?" 소리 듣는 6단계 개선 프로세스
왜 AI는 매번 형식을 잊어버릴까요?
AI는 대화가 끝나면 말했던 내용을 잊어버립니다.
사람처럼 기억하지 않아요.
이를 해결하기 위에 기존엔 지침안에 "일하는 방식"을 전부 적었습니다.
그러나 처음엔 10~20줄이던 지침이
가이드라인, 글쓰기 원칙, 좋은 글 예시등
여러 지침이 붙다보면 어느새 500~1,000줄이 넘어갔죠.
문제는 지침은 모든 대화에서 처음부터 끝까지 다 읽힌다는 거예요.
비용이 낭비되고, 정작 필요한 내용이 묻혀버립니다.
스킬은 다릅니다. 필요한 순간에 필요한 파일만 꺼내 읽습니다.
스킬이 작동하는 3단계
1단계
항상 로드
스킬 이름과 설명만 읽기
모든 스킬의 이름과 한 줄 설명이 시스템에 항상 포함됩니다.
Claude는 이걸 보고 "이 요청엔 어떤 스킬이 필요하지?"를 판단해요.
2단계
요청 시 로드
SKILL.md 전체 읽기
"블로그 써줘"라는 말이 오면, 그때만 SKILL.md 전체를 불러옵니다.
다른 스킬은 건드리지 않아요.
3단계
필요 시 탐색
scripts/, references/, assets/ 파일 꺼내기
폴더 안 템플릿이나 코드가 필요할 때만 접근합니다.
SKILL.md는 가볍게 유지하면서도 복잡한 작업이 가능한 이유입니다.
직접 만들어봐 - 이번 실습에서 만들것
"이 주제로 블로그 글 써줘" 한마디로
완성도 높은 초안을 .html 파일로 저장하는 스킬입니다.
시중의 블로그 자동화 도구들이 SEO 키워드 삽입 수준에 머문다면,
실제로 읽히는 글이 목표입니다.
이번에 만들 폴더 구조
실습을 위해 아래 링크에서 실습 파일을 다운로드 해주세요
https://drive.google.com/file/d/1EF0TO88nMn9H0pBbqZ0p64czOUghJrcM/view?usp=sharing
파일 1 - SKILL.md
스킬의 두뇌 역할을 합니다.
맨 위 description이 트리거예요.
Claude가 대화를 보고 이 스킬을 켤지 말지 여기서 판단합니다.
▶▶▶SKILL.md 확인---
name: blog-writer
description: >
블로그 글 써줘, 포스팅 초안 만들어줘,
이 주제로 글 작성해줘 라고 하면 자동으로 사용.
주제를 주면 references/writing-guide.md 원칙으로 초안 작성 후
scripts/save_blog.py 실행해서 HTML 파일 저장.
일반 질문이나 요약 작업에는 사용하지 않음.
---
# 블로그 글쓰기
## 절대 규칙
- 반드시 scripts/save_blog.py 실행해서 .html 파일로 저장
- 텍스트 답변으로 끝내지 말 것. 파일 저장까지가 완료
- writing-guide.md의 나쁜 예 → 좋은 예 패턴을 반드시 따를 것
- 금지 표현이 나오면 즉시 고쳐서 다시 쓸 것
- 글 본문에 CTA 블록 절대 쓰지 말 것
## 입력 형식
이 주제로 블로그 글 써줘
제목 방향: [제목]
주제: [주제]
타깃 독자: [독자 상황]
분량: [글자수]
카테고리: [카테고리1] | [카테고리2]
발행: [발행자 이름]
## save_blog.py에 넘길 JSON 필드
- title: 제목 방향 기반으로 확정한 제목
- topic: 주제 그대로
- sub: 제목과 다른 한 줄 부제목 (직접 작성)
- publisher: 발행 그대로
- content: 작성한 글 (META, HERO, 시각 요소 태그 포함)
## 참조 파일
- 글쓰기 원칙 + 시각 요소 기준 → references/writing-guide.md
- 파일 저장 → scripts/save_blog.py
파일 2 - references/writing-guide.md
글쓰기 원칙을 여기 전부 적습니다.
이 파일만 고치면 Claude의 글쓰기 스타일이 바뀌니
SKILL.md는 건드릴 필요 없습니다.
▶▶▶writing-guide.md 확인# 블로그 글쓰기 가이드
이 가이드의 "좋은 예"가 곧 목표 문체다.
원칙만 읽지 말고 예문의 리듬과 길이를 몸에 익혀서 써라.
## 오프닝 공식
좋은 예 A — 상황 직접 묘사:
매주 월요일, 똑같은 프롬프트를 다시 입력하고 있다.
"아, 지난번에 쓴 거 어디 뒀더라." 복붙하고, 조금 고치고, 다시 붙여넣고.
그게 쌓이면 결국 AI 쓰는 게 귀찮아진다.
좋은 예 B — 짧은 단언:
스킬은 다릅니다. 필요한 순간에 필요한 파일만 꺼내 읽습니다.
나쁜 예:
AI를 활용하면 업무 생산성을 크게 높일 수 있습니다.
오늘은 Claude 스킬에 대해 알아보겠습니다.
## 문장 원칙
- 한 문장에 하나의 생각만. 이상적으로 20자 이내.
- 단락 하나에 3문장 이내
- 수동태 금지 → 능동태로
좋은 예:
Claude는 대화가 끝나면 모든 내용을 잊어버립니다.
사람처럼 기억하지 않아요.
나쁜 예:
Claude는 대화 세션이 종료되면 이전 내용을 기억하지 못하기 때문에
매번 동일한 설명을 반복해야 하는 불편함이 있습니다.
## H2 섹션 제목
좋은 예: 스킬이 지침이랑 다른 진짜 이유
좋은 예: 직접 만들어봐요 — 3단계면 됩니다
좋은 예: 안 된다면 이것만 확인해보세요
나쁜 예: Claude 스킬의 개념과 특징에 대한 설명
## CTA / 참여 유도
"~봐요" 패턴 사용:
직접 스킬 만들어봐요.
만든 파일들, Claude.ai에 올려봐요.
나쁜 예:
앞으로 Claude 스킬을 활용하여 업무 효율을 향상시키시기 바랍니다.
## 시각 요소 종류와 사용 기준
[META: 카테고리1 | 카테고리2 | 읽기시간분 | 독자설명]
[HERO]: 독자 공감 대화 — 반드시 포함
[IMAGE]: 화면, 폴더 구조 등 봐야 이해 빠른 것
[CALLOUT-TIP]: "이것만 알면 됩니다" 수준의 핵심
[CALLOUT-WARN]: 모르면 반드시 실수하는 것
[CALLOUT-INFO]: 참고 정보
[COMPARE]: 스킬 전/후, 좋은 예/나쁜 예
[STEPS]: 순서대로 따라해야 하는 것
[QUOTE]: 독자가 캡처하고 싶은 문장. 글 전체를 한 문장으로.
시각 요소는 반드시 2개 이상 포함할 것.
[HERO]
ME: 사용자 메시지
AI: AI 답변 (문제 있는 답변)
FEEDBACK: "독자 내면의 불만"
ME2: 사용자가 다시 설명하는 메시지
[/HERO]
[COMPARE]
BEFORE: 항목1 / 항목2
AFTER: 항목1 / 항목2
[/COMPARE]
[STEPS]
1. 단계 제목 | 설명
[/STEPS]
## 금지 표현
이처럼, 이로써, 따라서 → 짧은 문장 두 개로 나누기
혁신적인, 획기적인 → 구체적 수치나 예시로
~에 대해 알아보겠습니다 → 바로 시작
~인 것 같습니다 → 단언으로 (~입니다)
~하시기 바랍니다 → ~하면 됩니다 / ~해보세요
다양한, 여러 가지 → 3가지, 2가지 (숫자로)
## 분량 기준
전체: 1,500~2,500자 / 오프닝: 100~150자
H2 섹션 하나: 150~300자 / CTA: 50~100자
파일 3 - scripts/save_blog.py
완성된 글을 .html 파일로 저장해줍니다.
브라우저에서 바로 열면 예쁜 블로그처럼 보입니다.
▶▶▶save_blog.py 확인"""
블로그 초안 저장 스크립트
[IMAGE], [CALLOUT], [COMPARE], [STEPS], [QUOTE] 태그를
시각적인 HTML 요소로 변환해서 저장합니다.
실행: python scripts/save_blog.py '{"title":"...", "content":"...", "topic":"..."}'
"""
import sys, json, re
from datetime import datetime
from pathlib import Path
def make_filename(title):
clean = re.sub(r'[^가-힣\w\s]', '', title).strip()
return f"{datetime.now().strftime('%Y%m%d')}_{re.sub(r'\s+', '_', clean)}.html"
def parse_content(text):
# 커스텀 태그 → HTML 변환 순서
text = re.sub(r'\[IMAGE:\s*(.+?)\]',
lambda m: f'<div class="img-slot">📸 {m.group(1).strip()}</div>', text)
text = re.sub(r'\[CALLOUT-(\w+):\s*(.+?)\]',
lambda m: f'<div class="cl cl-{m.group(1).lower()}"><p>{m.group(2).strip()}</p></div>',
text, flags=re.DOTALL)
text = re.sub(r'\[COMPARE\](.*?)\[/COMPARE\]', parse_compare, text, flags=re.DOTALL)
text = re.sub(r'\[STEPS\](.*?)\[/STEPS\]', parse_steps, text, flags=re.DOTALL)
text = re.sub(r'\[QUOTE:\s*(.+?)\]',
lambda m: f'<blockquote class="pq"><p>{m.group(1).strip()}</p></blockquote>',
text, flags=re.DOTALL)
return parse_md(text)
def parse_compare(m):
inner = m.group(1)
bm = re.search(r'BEFORE:\s*(.+?)(?=AFTER:)', inner, re.DOTALL)
am = re.search(r'AFTER:\s*(.+?)$', inner, re.DOTALL)
if not bm or not am: return m.group(0)
bi = ''.join(f'<div class="ci"><span>✕</span>{i.strip()}</div>'
for i in bm.group(1).split('/') if i.strip())
ai = ''.join(f'<div class="ci"><span>✓</span>{i.strip()}</div>'
for i in am.group(1).split('/') if i.strip())
return f'<div class="cmp"><div class="cb"><b>전</b>{bi}</div><div class="ca"><b>후</b>{ai}</div></div>'
def parse_steps(m):
items = re.findall(r'\d+\.\s*(.+?)\|(.+?)(?=
\d+\.|\Z)', m.group(1)+'
', re.DOTALL)
rows = ''.join(f'<div class="step"><div class="sn">{i}</div><div><b>{t.strip()}</b><p>{d.strip()}</p></div></div>'
for i,(t,d) in enumerate(items,1))
return f'<div class="steps">{rows}</div>'
def parse_md(text):
out, in_ul = [], False
for ln in text.split('
'):
if ln.startswith('## '):
if in_ul: out.append('</ul>'); in_ul=False
out.append(f'<h2>{ln[3:]}</h2>')
elif ln.startswith('- '):
if not in_ul: out.append('<ul>'); in_ul=True
out.append(f'<li>{ln[2:]}</li>')
elif ln.strip()=='':
if in_ul: out.append('</ul>'); in_ul=False
out.append('')
elif ln.startswith('<'):
if in_ul: out.append('</ul>'); in_ul=False
out.append(ln)
else:
if in_ul: out.append('</ul>'); in_ul=False
out.append(f'<p>{re.sub(r"\*\*(.+?)\*\*", r"<strong>\1</strong>", ln)}</p>')
return '
'.join(out)
CSS = """
:root{--black:#111;--gd:#3a3a3a;--gm:#888;--gl:#f5f5f3;--gline:#e8e8e4;
--accent:#ff5c35;--abg:#fff2ee;--teal:#1d9e75;--tbg:#e8f8f2;
--amber:#d97706;--ambg:#fffbeb;--blue:#2563eb;--bbg:#eff6ff}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
max-width:700px;margin:60px auto;padding:0 24px 80px;
color:var(--black);line-height:1.8}
h1{font-size:28px;font-weight:700;line-height:1.3;letter-spacing:-.02em;margin-bottom:10px}
h2{font-size:21px;font-weight:700;margin:52px 0 14px;padding-top:48px;
border-top:1px solid var(--gline);letter-spacing:-.01em}
p{font-size:16px;color:var(--gd);margin-bottom:16px;line-height:1.9}
ul{padding-left:22px;margin-bottom:16px}
li{font-size:16px;color:var(--gd);margin-bottom:6px}
strong{font-weight:700;color:var(--black)}
.meta{font-size:13px;color:var(--gm);margin-bottom:44px;
padding-bottom:20px;border-bottom:2px solid var(--black)}
.img-slot{background:var(--gl);border:2px dashed #ccc;border-radius:10px;
padding:28px 20px;text-align:center;margin:20px 0;
font-size:14px;color:var(--gm)}
.cl{border-radius:10px;padding:14px 18px;margin:20px 0}
.cl p{font-size:15px;margin:0;line-height:1.7}
.cl-tip{background:var(--tbg);border-left:3px solid var(--teal)}
.cl-tip p{color:#1a5a40}
.cl-warn{background:var(--ambg);border-left:3px solid var(--amber)}
.cl-warn p{color:#7a4a00}
.cl-info{background:var(--bbg);border-left:3px solid var(--blue)}
.cl-info p{color:#1e3a7a}
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}
.cb{background:#fff5f5;border:1px solid #ffd0c8;border-radius:10px;padding:16px 18px}
.ca{background:var(--tbg);border:1px solid #a0ddc5;border-radius:10px;padding:16px 18px}
.cb b,.ca b{font-size:11px;font-weight:700;letter-spacing:.05em;display:block;margin-bottom:8px}
.cb b{color:var(--accent)}.ca b{color:var(--teal)}
.ci{font-size:14px;line-height:1.7;display:flex;gap:8px;margin-bottom:5px}
.cb .ci span{color:var(--accent)}.ca .ci span{color:var(--teal)}
.steps{display:flex;flex-direction:column;gap:10px;margin:20px 0}
.step{display:flex;gap:14px;padding:14px 17px;background:var(--gl);border-radius:10px}
.sn{width:26px;height:26px;border-radius:50%;background:var(--black);color:#fff;
display:flex;align-items:center;justify-content:center;
font-size:11px;font-weight:700;flex-shrink:0;margin-top:2px}
.step b{font-size:15px;font-weight:700;color:var(--black);display:block;margin-bottom:4px}
.step p{font-size:14px;color:var(--gd);margin:0;line-height:1.6}
blockquote.pq{border-top:2px solid var(--black);border-bottom:2px solid var(--black);
padding:20px 24px;margin:28px 0}
blockquote.pq p{font-size:19px;font-weight:700;color:var(--black);line-height:1.5;margin:0}
"""
def save_blog(data):
title = data.get("title", "제목 없음")
body = data.get("content", "")
topic = data.get("topic", "")
now = datetime.now().strftime("%Y년 %m월 %d일")
html = f"""<!DOCTYPE html><html lang="ko">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>{title}</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet">
<style>{CSS}</style></head>
<body><h1>{title}</h1>
<div class="meta">{now} · {topic}</div>
{parse_content(body)}</body></html>"""
fn = make_filename(title)
Path(fn).write_text(html, encoding="utf-8")
print(f"✅ {fn} 저장 완료 / {len(body):,}자")
return fn
if __name__ == "__main__":
raw = sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()
save_blog(json.loads(raw))
파일 4 - assets/logo.png(선택)
assets 폴더에 로고 이미지를 넣어두면 저장되는 .html 파일 상단에 자동으로 삽입됩니다.
없어도 스킬은 정상 작동합니다.
만든 파일들, Claude.ai에 올려봐요
1. blog-writer 폴더 안에 파일 전부 저장
blog-writer 폴더를 생성 후 안에 모든 파일들을 넣어주세요.
2. 압축 후 Claude.ai 에 업로드 해주세요
사용자 지정 → 스킬 → 스킬 만들기 → 스킬 업로드 → blog-writter.zip 선택
3. 스킬 켜기
목록에 blog-writter 스킬이 나타나면 토글을 켜고,
새 대화에서 "이 주제로 블로그 글 써줘"라고 입력해보세요.
3. 블로그 글 작성하기
Claude를 켜고 새 대화에서 아래 형식으로 입력합니다.
복붙해서 내용만 바꾸면 돼요.
이 주제로 블로그 글 써줘
제목 방향: Claude한테 같은 말 반복하다 지쳤다면
주제: Claude 스킬로 반복 업무 자동화하기
타깃 독자: Claude 써봤는데 매번 같은 설명 다시 하다가 그냥 안 쓰게 된 사람
분량: 2,500자 내외
카테고리: Claude 스킬 | 업무 자동화
발행: 퍼펙트랜서 에디터 이상민타깃 독자 잘 쓰는 법
"직장인"보다 "Claude 써봤는데 매번 같은 설명 다시 하다가 그냥 안 쓰게 된 사람"이 훨씬 좋습니다.
독자가 아니라 지금 어떤 상황인 사람으로 써주세요
4. 짜잔~ 이제 Claude가 스킬을 자동으로 감지해 블로그 글이 생성됩니다.
👉 결과물 바로 확인하기
결과가 아쉽다면? 개선 순서대로
스킬을 올렸는데 결과가 별로라면, 아래처럼 개선해보세요
아래로 내려갈수록 효과가 더 강력해요!
방법 1 — 참고할 블로그 링크 넣기
writing-guide.md 맨 아래에 이렇게 추가합니다.
## 참고 블로그 (이 스타일로 써줘)
- https://blog.example.com/post-1
- https://blog.example.com/post-2
위 링크들의 문체, 단락 구조, 제목 패턴을 참고해서 글을 써줄 것.
방법 2 — 내가 잘 쓴 글 샘플 넣기
링크는 Claude가 읽지 못할 수 있습니다.
실제로 잘 쓴 내 글 텍스트를 파일로 넣어두는 게 훨씬 효과적입니다.
references/my-best-posts.md (새 파일)
# 내가 잘 쓴 글 샘플
이 파일의 문체와 구조를 그대로 따라 쓸 것.
제목 패턴, 오프닝 방식, 단락 길이를 참고할 것.
## 샘플 1: [글 제목]
[글 내용 그대로 붙여넣기]
## 샘플 2: [글 제목]
[글 내용 그대로 붙여넣기]
방법 3 — 독자 페르소나 파일 만들기
references/reader-persona.md (새 파일)
# 독자 페르소나
나이: 28~35세
직업: 마케터, 기획자, 콘텐츠 제작자
AI 경험: Claude, ChatGPT 써본 적 있음
현재 상황: 매번 같은 설명 반복하다 AI 쓰는 게 귀찮아진 상태
원하는 것: 설명 없이 바로 써먹을 수 있는 방법
읽는 환경: 점심시간, 이동 중 (스마트폰)
글을 쓸 때 이 사람이 "맞아, 나 얘기네"라고
느끼는 순간을 반드시 만들 것.
방법 4 — 나쁜 결과를 스킬에 반영하기
결과물을 받고 "이런 문장이 자꾸 나와"라는 패턴이 보이면
writing-guide.md에 바로 추가합니다.
writing-guide.md — 개선 예시
## 이런 문장 나오면 다시 써줘
- "~하는 방법에 대해 알아보겠습니다" → 삭제하고 바로 시작
- "많은 분들이" → "10명 중 7명은"처럼 구체적 숫자로
- "도움이 되셨으면 합니다" → 삭제
- 문단이 5줄 넘어가면 → 두 단락으로 쪼개기
방법 5 — Claude A/B 개선법
Anthropic 공식 가이드에서 권장하는 방법으로 두 개의 Claude를 사용합니다.
Claude A
스킬 개선 담당. "이 SKILL.md 보고 더 좋게 고쳐줘"라고 요청
Claude B
실제 테스트 담당. A가 고친 스킬을 실제로 써보고 결과 확인
A가 설계하고, B가 테스트합니다.
처음부터 완벽한 스킬은 없으니 이 루프를 3~5번 반복하면 확실히 결과가 좋아져요!
스킬로 지속적으로 축적되는 작업 자산 만들기
스킬은 한 번 만들어두면 계속 씁니다.
오늘 만든 파일이 다음 달에도, 내년에도 같은 퀄리티를 내요.
처음부터 완벽할 필요 없습니다.
일단 만들고, 결과 보고, 지속적으로 점차 개선 해나가는거에요.
그게 쌓이면 나만의 글쓰기 엔진이 됩니다.
글 핵심 30초만에 요약보기
AI는 대화가 끝나면 모든 걸 잊는다. 지침에 쌓아두는 방식은 한계가 있다.
스킬은 필요한 순간에만 읽히지만, 지침은 항상 전부 읽힌다.
SKILL.md엔 "언제 켜지는지, 어떤 파일 참고할지"만 담는다.
내용은 references/, scripts/에 분리한다.
description을 잘 써야 한다. 스킬을 켤지 말지 판단하기 때문이다.
타깃 독자는 "누구"가 아니라 "지금 어떤 상황인 사람"으로 쓴다.
처음부터 완벽할 필요 없다. 스킬을 계속 수정해나가자