공개 문서
README.md
아래는 README.md 와 동일한 원문입니다. Markdown과 HTML 변환 결과를 각각 복사할 수 있습니다.
공개 문서 원문 (Markdown)
# Skoolchef Tutorial
Cursor · Claude Code · Gemini CLI · Google Workspace CLI를 다루는 **AI 바이브코딩 커리큘럼** 사이트 (Next.js 15 + MDX).
- **실행**: `pnpm dev` → http://localhost:3000
- **구조·설계**: [docs/00-structure-and-design.md](./docs/00-structure-and-design.md)
- **배포**: [docs/deployment.md](./docs/deployment.md)
- **상세 가이드**: [CLAUDE.md](./CLAUDE.md)
---
## 최근 허브 업데이트 메모
- Studio 허브의 `curriculum/m1~m4`는 도구별 표준 레이아웃(설치/업데이트/핵심기능 5)으로 개편됨.
- 업데이트 데이터는 `projects/openclaw/saas-engine/lib/data/tool-updates.ts`에서 관리.
- 반자동 검증일/링크 점검:
- `cd ../openclaw/saas-engine && pnpm update:tool-updates -- --dry-run`
---
## Notion → 사이트 반영 플로우
Notion에서 콘텐츠를 수정한 뒤 아래 순서로 한 번에 반영하면 됩니다.
1. **Notion → MDX 추출**
`pnpm extract-notion`
- `.env`에 `NOTION_TOKEN`, `NOTION_PAGE_ID` 필요
- 지정한 페이지와 하위 페이지를 `content/courses/*.mdx`로 저장
2. **이미지 로컬화**
`pnpm download-images`
- `content/courses/` **전체 MDX**를 스캔해 Notion S3 이미지 URL 추출
- 이미지를 `public/images/notion/`에 다운로드하고, MDX 안 URL을 로컬 경로로 교체
- 매핑은 `content/image-mapping.json`에 저장
3. **목차 갱신**
`pnpm generate-index-mdx`
- 챕터 목록을 읽어 `content/courses/index.mdx` 목차를 자동 생성
(선택) **단일 MDX → 챕터 분리**: `pnpm split-mdx` — v1 시절 한 파일을 여러 챕터로 나눌 때만 사용.
**Notion 연동 확인**: `node scripts/check-notion.mjs`
---
## 스크립트 요약
| 명령 | 설명 |
|------|------|
| `pnpm extract-notion` | Notion 페이지 → MDX 추출 |
| `pnpm download-images` | 전체 MDX 스캔 후 Notion 이미지 다운로드·URL 교체 |
| `pnpm generate-index-mdx` | 챕터 목록으로 index.mdx 목차 생성 |
| `pnpm split-mdx` | (선택) 단일 MDX를 챕터별 파일로 분리 |
| `pnpm run export-lecture-markdown` | 강의안 검토용 마크다운 생성 (output/) |
| `pnpm run export-lecture-html` | 강의안 검토용 HTML 생성 (output/) |
---
## Studio 허브(모노레포)
워크스페이스의 **스쿨 셰프 AI studio** 앱(`projects/openclaw/saas-engine`) 타임라인·상단 메뉴에서 이 프로젝트는 다음 순서로 연결됩니다.
| 단계 | 경로 | 설명 |
|------|------|------|
| 1 | `/projects/skoolchef-tutorial` | 프로젝트 소개(다크 레이아웃·README bullet·**지금 시작하기** / 타임라인) |
| 2 | `/projects/skoolchef-tutorial/hub` | **러닝 허브**(Bento): 커리큘럼 헤더·4도구 pill·학습 피드·로드맵·⌘K 팔레트. detailpage-ai-engine 허브와 동일 패턴. |
| 문서 RAW | `GET /skoolchef-files/…` | 로컬에서 `projects/skoolchef-tutorial` 파일을 studio 앱이 직접 서빙(배포 단독 빌드에는 없을 수 있음). |
스크린샷 참고: [`docs/ux-flow/`](./docs/ux-flow/). 절차·체크리스트는 [openclaw/saas-engine/README.md](../openclaw/saas-engine/README.md), 규칙은 [saas-engine/CLAUDE.md](../openclaw/saas-engine/CLAUDE.md) 「서브페이지·라우트 섹션 구성 원칙」.
공개 문서 변환 코드 (HTML)
<h1>Skoolchef Tutorial</h1>
<p>Cursor · Claude Code · Gemini CLI · Google Workspace CLI를 다루는 <strong>AI 바이브코딩 커리큘럼</strong> 사이트 (Next.js 15 + MDX).</p>
<ul>
<li><strong>실행</strong>: <code>pnpm dev</code> → <a href="http://localhost:3000">http://localhost:3000</a></li>
<li><strong>구조·설계</strong>: <a href="./docs/00-structure-and-design.md">docs/00-structure-and-design.md</a></li>
<li><strong>배포</strong>: <a href="./docs/deployment.md">docs/deployment.md</a></li>
<li><strong>상세 가이드</strong>: <a href="./CLAUDE.md">CLAUDE.md</a></li>
</ul>
<hr>
<h2>최근 허브 업데이트 메모</h2>
<ul>
<li>Studio 허브의 <code>curriculum/m1~m4</code>는 도구별 표준 레이아웃(설치/업데이트/핵심기능 5)으로 개편됨.</li>
<li>업데이트 데이터는 <code>projects/openclaw/saas-engine/lib/data/tool-updates.ts</code>에서 관리.</li>
<li>반자동 검증일/링크 점검:<ul>
<li><code>cd ../openclaw/saas-engine && pnpm update:tool-updates -- --dry-run</code></li>
</ul>
</li>
</ul>
<hr>
<h2>Notion → 사이트 반영 플로우</h2>
<p>Notion에서 콘텐츠를 수정한 뒤 아래 순서로 한 번에 반영하면 됩니다.</p>
<ol>
<li><p><strong>Notion → MDX 추출</strong><br><code>pnpm extract-notion</code> </p>
<ul>
<li><code>.env</code>에 <code>NOTION_TOKEN</code>, <code>NOTION_PAGE_ID</code> 필요 </li>
<li>지정한 페이지와 하위 페이지를 <code>content/courses/*.mdx</code>로 저장</li>
</ul>
</li>
<li><p><strong>이미지 로컬화</strong><br><code>pnpm download-images</code> </p>
<ul>
<li><code>content/courses/</code> <strong>전체 MDX</strong>를 스캔해 Notion S3 이미지 URL 추출 </li>
<li>이미지를 <code>public/images/notion/</code>에 다운로드하고, MDX 안 URL을 로컬 경로로 교체 </li>
<li>매핑은 <code>content/image-mapping.json</code>에 저장</li>
</ul>
</li>
<li><p><strong>목차 갱신</strong><br><code>pnpm generate-index-mdx</code> </p>
<ul>
<li>챕터 목록을 읽어 <code>content/courses/index.mdx</code> 목차를 자동 생성</li>
</ul>
</li>
</ol>
<p>(선택) <strong>단일 MDX → 챕터 분리</strong>: <code>pnpm split-mdx</code> — v1 시절 한 파일을 여러 챕터로 나눌 때만 사용.<br><strong>Notion 연동 확인</strong>: <code>node scripts/check-notion.mjs</code></p>
<hr>
<h2>스크립트 요약</h2>
<table>
<thead>
<tr>
<th>명령</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td><code>pnpm extract-notion</code></td>
<td>Notion 페이지 → MDX 추출</td>
</tr>
<tr>
<td><code>pnpm download-images</code></td>
<td>전체 MDX 스캔 후 Notion 이미지 다운로드·URL 교체</td>
</tr>
<tr>
<td><code>pnpm generate-index-mdx</code></td>
<td>챕터 목록으로 index.mdx 목차 생성</td>
</tr>
<tr>
<td><code>pnpm split-mdx</code></td>
<td>(선택) 단일 MDX를 챕터별 파일로 분리</td>
</tr>
<tr>
<td><code>pnpm run export-lecture-markdown</code></td>
<td>강의안 검토용 마크다운 생성 (output/)</td>
</tr>
<tr>
<td><code>pnpm run export-lecture-html</code></td>
<td>강의안 검토용 HTML 생성 (output/)</td>
</tr>
</tbody></table>
<hr>
<h2>Studio 허브(모노레포)</h2>
<p>워크스페이스의 <strong>스쿨 셰프 AI studio</strong> 앱(<code>projects/openclaw/saas-engine</code>) 타임라인·상단 메뉴에서 이 프로젝트는 다음 순서로 연결됩니다.</p>
<table>
<thead>
<tr>
<th>단계</th>
<th>경로</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td><code>/projects/skoolchef-tutorial</code></td>
<td>프로젝트 소개(다크 레이아웃·README bullet·<strong>지금 시작하기</strong> / 타임라인)</td>
</tr>
<tr>
<td>2</td>
<td><code>/projects/skoolchef-tutorial/hub</code></td>
<td><strong>러닝 허브</strong>(Bento): 커리큘럼 헤더·4도구 pill·학습 피드·로드맵·⌘K 팔레트. detailpage-ai-engine 허브와 동일 패턴.</td>
</tr>
<tr>
<td>문서 RAW</td>
<td><code>GET /skoolchef-files/…</code></td>
<td>로컬에서 <code>projects/skoolchef-tutorial</code> 파일을 studio 앱이 직접 서빙(배포 단독 빌드에는 없을 수 있음).</td>
</tr>
</tbody></table>
<p>스크린샷 참고: <a href="./docs/ux-flow/"><code>docs/ux-flow/</code></a>. 절차·체크리스트는 <a href="../openclaw/saas-engine/README.md">openclaw/saas-engine/README.md</a>, 규칙은 <a href="../openclaw/saas-engine/CLAUDE.md">saas-engine/CLAUDE.md</a> 「서브페이지·라우트 섹션 구성 원칙」.</p>