Skip to content

Commit c5cb1f5

Browse files
authored
feat(blog): 블로그 공개 정책과 CTR 파일럿 정리 (#88)
* feat(blog): 공개 정책과 품질 메타 추가 글 공개/비공개 정책과 품질 리뷰 메타데이터를 추가했어요.\n피드, 사이트맵, 저장소 계층에서 비공개 글을 기본 제외하도록 정리했어요.\n읽기 시간 계산과 새 글 스캐폴드도 현재 정책에 맞게 보강했어요. * chore(content): 글 공개 범위와 메타 정리 시리즈 글과 저점수 엔지니어링 글의 공개 범위를 재조정했어요.\n품질 리뷰 점수와 featured 기준을 메타데이터에 반영했어요.\n라이프 글은 기존 공개 전략을 유지하면서 탐색 구조만 정리했어요. * docs(blog): CTR 파일럿 포스팅 정리 CTR 파일럿 포스팅을 포트폴리오 관점으로 다시 구성했어요.\n트레이드오프, 운영 비용, 학습 과정의 기준 변화가 드러나도록 본문을 정리했어요.\n같은 기준을 재사용할 수 있도록 블로그 품질 가이드도 추가했어요.
1 parent 346e0a4 commit c5cb1f5

49 files changed

Lines changed: 1122 additions & 499 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/blog-quality-guide.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# 블로그 품질 가이드
2+
3+
## 브랜드 문장
4+
5+
새로운 비즈니스 확장으로 복잡해지는 내부 시스템을 정리하고, 레거시를 구조적으로 개선하는 플랫폼 엔지니어
6+
7+
## 기본 원칙
8+
9+
- 기술 글은 감상보다 판단 기준이 먼저 보여야 한다.
10+
- 구현 자랑보다 문제 정의와 대안 비교가 먼저 나와야 한다.
11+
- 글 하나가 읽히고 끝나면 안 된다. 같은 문제를 다시 만났을 때 재사용 가능한 기준이 남아야 한다.
12+
- 공개 글은 포트폴리오다. 초안이나 메모 수준의 글은 `private`로 둔다.
13+
14+
## 기술 글 톤
15+
16+
- 기본 문체는 단정형 `하다체`로 쓴다.
17+
- 도입과 마무리만 제한적으로 부드럽게 쓸 수 있다.
18+
- "배웠다", "느꼈다"는 문장만으로 끝내지 않는다. 무엇이 바뀌었는지까지 적는다.
19+
- 추상 표현 대신 수치, 조건, 실패 사례를 우선한다.
20+
21+
## 공개용 엔지니어링 글 템플릿
22+
23+
### 1. 문제와 비즈니스 맥락
24+
25+
- 왜 이 문제가 운영 또는 비즈니스 비용으로 이어졌는가
26+
- 누가 이 결과를 소비하는가
27+
28+
### 2. 시스템 요구사항과 제약
29+
30+
- 성능, 정확성, 복구, 운영 조건
31+
- 리소스 한계나 조직 제약
32+
33+
### 3. 대안 비교와 선택 근거
34+
35+
- 실제로 검토한 대안 2개 이상
36+
- 버린 대안과 이유
37+
38+
### 4. 실제 아키텍처와 구현
39+
40+
- 데이터 흐름
41+
- 핵심 상태 모델
42+
- 중요한 설정값과 선택 이유
43+
44+
### 5. 실패와 수정
45+
46+
- 장애, 병목, 잘못된 가정
47+
- 어떻게 관측했고 어떻게 수정했는가
48+
49+
### 6. 검증과 결과
50+
51+
- 단위 테스트
52+
- 통합 테스트
53+
- 운영 확인 방식
54+
- 수치 결과
55+
56+
### 7. 재사용 가능한 판단 기준
57+
58+
- 다음에도 그대로 가져갈 기준
59+
- 아직 남은 한계
60+
61+
## 공개 정책
62+
63+
- `visibility` 기본값은 `public`이다.
64+
- 시리즈는 기본적으로 공개 자산이 아니라 학습 자산으로 보고, 공개 필요성이 생기기 전까지 `private`로 둔다.
65+
- 엔지니어링 글은 `philosophy`, `design`, `implementation` 평균이 `3.0` 이하이면 `private`로 둔다.
66+
- `featured`는 아래 조건을 모두 만족할 때만 허용한다.
67+
- 엔지니어링 글
68+
- 시리즈 아님
69+
- `brandFit >= 4.0`
70+
- `featured`는 점수만으로 자동 결정하지 않는다. 현재 단계에서는 수동 큐레이션 목록으로 관리한다.
71+
72+
## 리뷰 체크리스트
73+
74+
- 첫 세 문단 안에 문제와 비용이 드러나는가
75+
- 대안 비교가 실제로 존재하는가
76+
- 설정값과 구조가 왜 그렇게 됐는지 설명하는가
77+
- 장애 또는 실패 장면이 포함되어 있는가
78+
- 결과가 수치 또는 운영 변화로 확인되는가
79+
- 읽고 나면 한 문장으로 재사용 가능한 기준이 남는가

internal/scripts/posts/new-post.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,8 @@ async function main() {
3838
name: 'category',
3939
message: 'Select a category:',
4040
choices: [
41-
{ title: 'Dev', value: 'Dev' },
41+
{ title: 'Tech', value: 'Tech' },
4242
{ title: 'Life', value: 'Life' },
43-
{ title: 'Travel', value: 'Travel' },
44-
{ title: 'Review', value: 'Review' },
45-
{ title: 'Insight', value: 'Insight' },
46-
{ title: 'Essay', value: 'Essay' },
4743
],
4844
initial: 0,
4945
},
@@ -81,10 +77,20 @@ async function main() {
8177
// Create meta.json
8278
const metaData = {
8379
title,
80+
slug,
8481
description,
8582
date,
8683
category,
84+
visibility: 'public',
8785
tags: tags.map((t) => t.trim()).filter(Boolean),
86+
qualityReview: {
87+
philosophy: null,
88+
design: null,
89+
implementation: null,
90+
brandFit: null,
91+
reviewedAt: '',
92+
notes: '',
93+
},
8894
};
8995

9096
await fs.writeFile(

posts/2025년-회고/meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
"Career",
99
"Work"
1010
],
11-
"featured": false
11+
"featured": false,
12+
"visibility": "public"
1213
}

posts/ai-시대-개발-환경-고정/meta.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,15 @@
1111
"Codex",
1212
"ChatGPT",
1313
"Atlas"
14-
]
14+
],
15+
"visibility": "private",
16+
"featured": false,
17+
"qualityReview": {
18+
"philosophy": 3.5,
19+
"design": 3,
20+
"implementation": 2.5,
21+
"brandFit": 2.5,
22+
"notes": "비공개",
23+
"reviewedAt": "2026-04-13"
24+
}
1525
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"title": "AI 시대, 테스트 코드 기준을 스킬로 고정하기",
3+
"slug": "designing-skills-for-ai-workflows",
4+
"description": "Codex에 테스트 코드 표준화 스킬을 넣은 뒤 무엇이 달라졌는지, 어떤 기준과 과정으로 팀의 테스트 문화를 고정했는지 정리해요.",
5+
"date": "2026-04-02",
6+
"category": "Tech",
7+
"tags": [
8+
"AI Workflow",
9+
"Codex",
10+
"Testing",
11+
"Developer Experience"
12+
],
13+
"featured": false,
14+
"visibility": "public",
15+
"qualityReview": {
16+
"philosophy": 4.5,
17+
"design": 4,
18+
"implementation": 3.5,
19+
"brandFit": 4,
20+
"notes": "보조 유지",
21+
"reviewedAt": "2026-04-13"
22+
}
23+
}

posts/ai-시대-학습법/meta.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,14 @@
1010
"Career",
1111
"Work"
1212
],
13-
"featured": false
13+
"featured": false,
14+
"visibility": "private",
15+
"qualityReview": {
16+
"philosophy": 3.5,
17+
"design": 2.5,
18+
"implementation": 2,
19+
"brandFit": 2,
20+
"notes": "비공개",
21+
"reviewedAt": "2026-04-13"
22+
}
1423
}

posts/db-장애의-진짜-원인/meta.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,14 @@
1111
"Index",
1212
"Troubleshooting"
1313
],
14-
"featured": false
14+
"featured": true,
15+
"visibility": "public",
16+
"qualityReview": {
17+
"philosophy": 4,
18+
"design": 4.5,
19+
"implementation": 4.5,
20+
"brandFit": 4.5,
21+
"notes": "핵심 유지",
22+
"reviewedAt": "2026-04-13"
23+
}
1524
}

posts/waveterm-번역-oss-기여/meta.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,14 @@
1010
"Technical Writing",
1111
"Developer Experience"
1212
],
13-
"featured": false
13+
"featured": false,
14+
"visibility": "private",
15+
"qualityReview": {
16+
"philosophy": 2.5,
17+
"design": 2.5,
18+
"implementation": 2,
19+
"brandFit": 2,
20+
"notes": "비공개",
21+
"reviewedAt": "2026-04-13"
22+
}
1423
}

posts/데이터분석-파이프라인-poc/meta.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,14 @@
99
"Engineering",
1010
"Review"
1111
],
12-
"featured": false
12+
"featured": false,
13+
"visibility": "public",
14+
"qualityReview": {
15+
"philosophy": 3.5,
16+
"design": 3.5,
17+
"implementation": 3,
18+
"brandFit": 4,
19+
"notes": "재작성 후 유지",
20+
"reviewedAt": "2026-04-13"
21+
}
1322
}

posts/도메인-워크스페이스-서브모듈-도입기/meta.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,14 @@
1010
"AI Engineering",
1111
"Developer Experience"
1212
],
13-
"featured": false
13+
"featured": true,
14+
"visibility": "public",
15+
"qualityReview": {
16+
"philosophy": 4,
17+
"design": 4,
18+
"implementation": 3.5,
19+
"brandFit": 4,
20+
"notes": "핵심 유지",
21+
"reviewedAt": "2026-04-13"
22+
}
1423
}

0 commit comments

Comments
 (0)