10월 29일 저녁부터 30일 낮까지 Claude Code로 한 작업을 정리한다. 블로그를 학습과 비즈니스를 함께 담는 구조로 바꿨고, 기술 아티클을 스킬로 묶어 25편을 올렸다. 영상 제작용 에이전트 10개를 만들어 검증 영상을 한 편 올렸고, SNS 트렌드 정리를 매주 자동 발행하게 했다.
블로그를 구역별로 나누기
받은 개편 조언은 "학습 기록이 콘텐츠가 되고, 그 콘텐츠가 전문성을 증명하고, 수익으로 이어지는 구조"였다. 메뉴를 홈, 학습 일지, 기술 아티클, 프로젝트, 전자책, AI 서비스, 소개·문의로 나누고, 단일 SvelteKit 앱 안에서 점진적으로 넓히는 안을 골랐다.
DB는 바꾸지 않고 태그로 글을 자동 분류했다.
/learning학습 일지: 태그에 개발기록이나 프롬프트가 있는 글/newsAI 뉴스: 뉴스·레딧 태그/articles기술 아티클: 그 밖의 글/posts전체 글
자동 정리 스크립트는 첫 태그를 이미 개발기록으로 달고 있어서 손댈 필요가 없었다. 직접 쓴 글은 그 태그만 안 달면 기술 아티클로 들어간다.
홈은 학습 현황 요약과 잔디, 구역별 최근 글 4개, 인기 글, 만든 것(프로젝트 3개와 전자책 2권), 서비스 안내 버튼으로 바꿨다. 예전 /?page=N 주소는 /posts?page=N으로 301 이동한다. /dashboard 학습 대시보드는 공개된 학습 일지만 집계하며, 당시 숫자는 프롬프트 67개, 일지 11편, 기술 15개였다.
npm run verify는 0 ERRORS 7 WARNINGS(경고 수는 전과 같음), Tests 33 passed, 빌드 성공이었다. 배포 후 홈, /posts, /learning, /articles, /news, /dashboard, /services, /about이 모두 200을 돌려주는 것을 확인했다. 작업 중이던 extract.py 수정본 같은 관계없는 파일은 커밋에서 뺐다.
기술 아티클을 스킬로 찍어내기
처음 두 글은 직접 지시했다. 다이어그램은 diagram-design 스킬로, 삽화는 Codex CLI로 만들게 했다.
- AA가 프로젝트 착수 후 30일 동안 해야 할 일과 필수 산출물: 주차별 할 일과 산출물, "없으면 생기는 일" 표, 30일 점검표, 30일 Gantt 다이어그램
- Claude Code Skill 설계부터 자동 실행까지 실전 가이드: 실제 영상 스킬, maker·checker 에이전트, launchd +
claude -p블로그 자동 정리를 예로 들었다
결과가 마음에 들어서 같은 흐름을 blog-tech-article 스킬(~/.claude/skills/blog-tech-article/)로 만들었다. 흐름은 다음과 같다.
- 원고: 두 글을 기준 글로 두고
references/writing.md의 구성·문체·근거 규칙대로 쓴다. - 삽화: Codex CLI로 글자 없는 그림을 그려
hero.jpg로 만들고, 글자가 섞였는지 눈으로 본다. - 다이어그램: diagram-design 스킬의
yongdev프로필(블로그 색, 한글 글꼴)로 그리고 self-check를 돌린다. - 원고 검사: 머리말 형식, 태그 3~6개, 다른 구역으로 빠지는 태그(개발기록·프롬프트·뉴스·레딧)가 없는지, 첫 줄이 요약 문단인지, 이미지 파일이 있는지 확인한다.
- 발행 후
check_live.py로 페이지 200,/articles목록 노출, 이미지 응답을 확인한다.
이후로는 /blog-tech-article 뒤에 주제 목록만 붙여 보냈다. 모든 회차가 PASS로 끝났다.
| 회차 | 주제 |
|---|---|
| 20:47 | 아키텍처 설계서와 PM 산출물 구분, Maker–Checker Loop |
| 20:56 | 공공 SI 비기능 요구사항, Spring Boot + JBoss + Apache 이중화 |
| 21:07 | MCP·Skill·Hook 차이와 적용 기준, Project Factory 설계 |
| 21:14 | 트랜잭션 경계, MyBatis vs JPA, Redis Look-aside와 Cache Stampede, Spring Security JWT |
| 21:27 | 10→250 TPS 개선 사례, P95·P99, CUBRID X_LOCK, 파일 다운로드 권한 검증 |
| 21:36 | G1 GC와 ZGC, Linux Process·Thread, eBPF 관측, Rust vs Java |
| 09:28 | AI Agent Eval, Outbox·Inbox, 망분리 공급망 보안, Thread·Heap Dump, Context Engineering |
몇 가지 눈에 띈 점이 있다.
- MCP·Skill·Hook 글은 "능력이 없으면 MCP, 방법을 모르면 Skill, 잊으면 안 되면 Hook"으로 정리했다. 근거로는 실제 설정(사용자 Hook 49개, MCP 서버 4개,
block-no-verifyHook)을 썼다. - TPS 개선과 CUBRID 글은 "재구성 사례"로 썼다. 첫 문단에서 특정 사업의 기록이 아니라고 밝혔고, 수치에는 "예시"를 붙였다. TPS 글은 리틀의 법칙에서 출발한다. 커넥션 20개에 응답 2초면 상한이 10 TPS이므로, CPU 22%는 바쁜 게 아니라 기다리는 중이라는 해석이다.
- 21:07 회차는 중간에 고칠 것 없이 한 번에 끝났다.
영상 제작 에이전트 10개와 검증 영상
다른 작업으로, 영상 품질을 올리려고 역할별 에이전트 10개를 ~/edu-videos/.claude/agents/에 만들었다. 각 에이전트는 수집, 작가, 편집, 자막, 음성 스크립트, 음성, 썸네일, 영상 편집, 검증, 업로드를 맡는다. 단계마다 산출물 파일을 정해 두었다. 예를 들어 수집은 research/RESEARCH.md(출처 URL과 F번호 사실 목록), 작가는 DRAFT.md(숫자·이름마다 [F번호]), 자막은 SCRIPT.md(쉼표 단위 30자 이내)를 만든다.
중간에 SKILL.md 크기 기준도 바로잡았다. 공식 문서 기준은 "500줄 이하, 넘으면 분리"인데, 스킬 안에는 지난 세션에서 임의로 넣은 "20KB 초과 시 분리" 규칙이 있었다. 한글은 한 글자가 3바이트라서 KB 기준에 금방 걸린다. 그래서 줄 수 기준으로 고치고 CHANGELOG에도 적었다. 실제 파일은 topic-video-youtube/SKILL.md 178줄, youtube-thumbnail/SKILL.md 80줄로 이미 기준 안이었다.
검증 삼아 한 편을 끝까지 만들었다.
- 제목: 소비기한이 어제였던 두부, 먹어도 될까? 유통기한과 무엇이 다른가 (https://youtu.be/Jhr7wztblKc)
- 3분 47초, 13장면, 참고 자료 3개(식약처·정책브리핑)
- 음성은 edge(인준)를 썼고 음악은 넣지 못했다. ElevenLabs 키에 음악 생성 권한이 없었다.
- 원고 검수 단계에서 FAIL 1건과 WARN 10건이 나왔다. FAIL은 "날짜가 지나도 먹어도 된다"로 읽힐 수 있는 화면 글자였다.
SNS 트렌드 구역과 주간 자동 발행
X, Threads, Facebook, Instagram의 최신 트렌드·밈 10위를 정리해 달라고 했다. API나 MCP로 안 되는 부분은 ego 브라우저로 직접 들어가 모으게 했고, X는 로그인을 해 두었다. 공식 지표가 없어서 순위는 여러 플랫폼에 퍼진 정도, 최신성, 조회수를 보고 매겼다.
결과는 Codex CLI로 인포그래픽 한 장(16:9, 카드 10장)으로 만들었다. 이어서 세로형(9:16, 941×1672px)으로 다시 만들었다. 인물 관련 항목은 얼굴 대신 상징물로 그렸고, 상표는 보이지 않게 했다.
그다음 블로그에 /trends 구역을 새로 만들었다. 분류 규칙은 트렌드 태그로 정했다. 뉴스·개발기록 태그가 같이 붙으면 그쪽이 우선한다. 상단 메뉴, 홈, 사이트맵, llms.txt, 소개 페이지에도 트렌드를 추가했다. 첫 글의 구성은 다음과 같다.
요약 → 세로 인포그래픽 → 한눈에 보기 표 → 1~10위 상세("어디서 시작됐나 / 어떻게 쓰나 / 얼마나 퍼졌나") → 순위 밖 후보 → 수집 방법 → 출처 12개
verify는 0 ERRORS, Tests 34 passed, 빌드 성공이었다.
이 흐름을 blog-sns-trend 스킬로 묶었다. 주요 규칙은 이렇다.
trend_kit.py week로 주차 이름을 만든다.- X는 ego 브라우저로 직접 수집하고, 인스타·릴스는 Virlo, New Engen 같은 추적 사이트로 보완한다.
- 뉴스성 키워드는 언론 보도를 확인한 뒤에만 넣는다.
- 선정 규칙은 한국 절반 이상, Threads 출발 밈 최소 하나, 뉴스성은 최대 2개다.
마지막으로 매주 금요일 오전 10시에 자동 발행되게 launchd에 weekly.sh를 등록했다. 클라우드 예약은 ego 브라우저 로그인 세션을 쓸 수 없어서 로컬을 택했다. 안전장치는 세 가지다.
- 그림 글자가 틀리면 한 번 다시 그리고, 그래도 틀리면 발행하지 않는다.
- 근거가 부족하면 지어내지 않고 그 주를 건너뛴다.
- 같은 주에 두 번 발행하지 않는다.
배포 직전에 멈추는 시험 모드로 끝까지 돌려 통과했다.
다큐 프롬프트 9단계를 파일로 정리
9단계 다큐 제작 마스터 프롬프트를 재사용할 수 있게 edu-videos/_prompts/documentary/에 나눠 담았다.
01-planning.md~09-delivery.md: 단계마다 입력 빈칸 표, 산출물 전달 위치, 원문 프롬프트를 둔다.README.md: 단계 사이 연결표를 담는다.fill.py:{{...}}빈칸을 값 파일로 채운다.test_fill.py: 빠진 값과 빈칸 목록 불일치를 잡는다.
python3 test_fill.py는 9개 파일 모두 통과했다.
1차 업체 판별 서비스 PRD
"알짜 SI 1차 업체" 선별 아이디어를 서비스로 만든다면 PRD를 어떻게 써야 할지 물었다. 답의 요지는 기능 목록보다 "1차 업체"를 데이터로 어떻게 판정하느냐가 핵심이라는 것이었다. 사람이 손으로 하던 확인을 자동 수집 가능한 신호로 바꿔야 하고, 그 신호를 합법적으로 가져올 수 있는지가 PRD 대부분을 정한다.
이어서 docs/prd-ilcha.md("일차")를 작성했다. 정해진 내용은 다음과 같다.
- 타겟은 프리랜서로 잡았다.
- 판정 라벨은 "1차 확인(원청)", "1차 확인(벤더)", "1차 미확인" 세 가지만 쓴다. 명예훼손 위험 때문에 평가 라벨과 종합 순위는 뺐다.
- 나라장터 낙찰자와 제안 업체를 비교하는 "프로젝트 역추적"을 MVP 핵심으로 넣었다.
- 기준값(최근 24개월 낙찰 3건 이상 또는 30억 원 이상 등)은 설정값으로 두고 정답셋으로 조정한다.
남은 것
- 소개 페이지의 경력·기술 스택 칸이 아직 비어 있다.
- 블로그 개편 배포 뒤에는 페이지 응답과 숫자만 확인했다. 운영 화면을 눈으로 보지는 않았다.
blog-sns-trend자동 발행은 시험 모드로만 돌렸다. 실제 첫 실행은 11월 6일(금)이다.- 검증 영상에는 음악이 없다. ElevenLabs 키에 음악 생성 권한이 필요하다.
- PRD의 타겟(프리랜서)은 사용자가 고르지 않아 Claude가 정한 값이라 확정이 필요하다.
댓글 0개
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.