한국 회계사를 위한 AI 도구 허브 + 자체 도구 쇼케이스 + 블로그.
- Astro 6 (정적 사이트, Content Collections)
- Tailwind CSS 4 + Pretendard (한국어 가변 폰트)
- MDX (블로그·도구 상세 글)
- Supabase (댓글 Auth: Google + Kakao OAuth, 익명 차단)
- Vercel 배포
- GitHub Actions: Obsidian vault → 사이트 콘텐츠 자동 동기화
npm install
npm run dev # http://localhost:4321
npm run build # 정적 빌드
npm run preview # 빌드 결과 미리보기요구 Node: >= 22.12.0.
src/
content/
blog/ *.md(x) — 블로그 글 (Obsidian에서 sync)
tools/ *.md(x) — 자체 도구 (VBA, Python, Claude Skill 등)
ai-tools/ *.md(x) — 외부 AI 도구 리뷰 (T1=실사용, T2=조사)
layouts/ BaseLayout.astro (SEO·OG·JSON-LD 포함)
components/ Header / Footer / Comments (Supabase)
pages/
index.astro 홈
about.astro 소개
privacy.astro 개인정보처리방침
terms.astro 이용약관
tools/{index,[slug]} 자체 도구
ai-tools/{index,[slug]} AI 도구 큐레이션
blog/{index,[slug]} 블로그
downloads/index 다운로드 목록
rss.xml.js RSS 피드
lib/
supabase.ts 댓글용 클라이언트
styles/
global.css Tailwind + Pretendard + 디자인 토큰
public/
downloads/ VBA·Excel 파일 배포 디렉토리
robots.txt Google·Naver·Daum 크롤 허용
.github/workflows/
sync-obsidian.yml Obsidian vault → 콘텐츠 자동 sync
docs/
extracted-from-v1.md 이전 프로젝트에서 가져온 참고 자료 (참고용, 구속력 없음)
.env.example 복사해 .env 생성 후 값 채움:
PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...
값이 비어있으면 댓글 섹션에는 "Supabase 미설정" 안내가 나옴 (사이트는 정상 동작).
- https://supabase.com 에서 프로젝트 생성
- SQL editor에서 테이블 + RLS 생성 —
src/lib/supabase.ts주석의 SQL 복붙 - Authentication → Providers → Google, Kakao 활성화 (익명 로그인은 OFF)
- Site URL / Redirect URL에
https://cpatools.co.kr및http://localhost:4321등록 .env에 프로젝트 URL과 anon key 기입
src/layouts/BaseLayout.astro의naver-site-verification,google-site-verificationmeta 태그에 실제 토큰 채워 넣기- Google Search Console에 도메인 등록 → sitemap URL
https://cpatools.co.kr/sitemap-index.xml제출 - Naver 서치어드바이저에 도메인 등록 → sitemap 동일하게 제출
- 둘 다 HTML 메타태그 방식 인증 지원
현재 전략: vault를 private GitHub repo로 만들고(Obsidian Git 플러그인), 이 사이트 repo의 GitHub Action이 주기적으로 pull & copy.
설정:
- Obsidian에 Obsidian Git 커뮤니티 플러그인 설치 → vault를 git repo화 → 자동 push 설정
- Vault repo 생성 (private 권장, 예:
dev-chlee/obsidian-vault) - Vault 내 콘텐츠는
content/blog/,content/tools/,content/ai-tools/폴더에 md로 작성 (frontmatter는src/content.config.ts스키마 준수) - 이 repo의 Settings → Secrets →
VAULT_REPO_TOKEN(vault repo read 권한 PAT) 등록 .github/workflows/sync-obsidian.yml의VAULT_REPOenv 값을 실제 repo로 교체- (선택) vault repo push 시 이 repo로
repository_dispatch이벤트 발사 — 즉시 반영
Fallback으로 매시간 cron도 걸려있음.
- GitHub repo 생성 후 이 코드 push
- Vercel → Import repo → Astro 자동 감지
- Environment Variables에
PUBLIC_SUPABASE_URL,PUBLIC_SUPABASE_ANON_KEY등록 - 도메인
cpatools.co.kr연결
요구사항: MD 1개 → 블로그글 + 소셜 글 + 유튜브 쇼츠 자동 생성.
현재 스캐폴드에서 준비된 것:
- 블로그 글 frontmatter에
social.excerpt,social.hashtags필드 포함 - 블로그 글이 빌드 시 정적 HTML로 생성됨
미구현 (다음 단계):
- LLM 호출로 blog MD → Twitter/LinkedIn 포스트 생성 스크립트
- 블로그 MD → 쇼츠 스크립트 + 이미지/TTS 파이프라인
- GitHub Action으로 트리거
사이트 본체와 분리된 독립 워크플로우로 구현 예정.
docs/extracted-from-v1.md— 이전 프로젝트 자료 (참고용만)