Skip to content

dev-chlee/cpatools-web

Repository files navigation

CPATOOLS

한국 회계사를 위한 AI 도구 허브 + 자체 도구 쇼케이스 + 블로그.

도메인: https://cpatools.co.kr


스택

  • 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)

.env.example 복사해 .env 생성 후 값 채움:

PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...

값이 비어있으면 댓글 섹션에는 "Supabase 미설정" 안내가 나옴 (사이트는 정상 동작).

댓글 세팅 (Supabase)

  1. https://supabase.com 에서 프로젝트 생성
  2. SQL editor에서 테이블 + RLS 생성 — src/lib/supabase.ts 주석의 SQL 복붙
  3. Authentication → Providers → Google, Kakao 활성화 (익명 로그인은 OFF)
  4. Site URL / Redirect URL에 https://cpatools.co.krhttp://localhost:4321 등록
  5. .env에 프로젝트 URL과 anon key 기입

SEO 세팅

  • src/layouts/BaseLayout.astronaver-site-verification, google-site-verification meta 태그에 실제 토큰 채워 넣기
  • Google Search Console에 도메인 등록 → sitemap URL https://cpatools.co.kr/sitemap-index.xml 제출
  • Naver 서치어드바이저에 도메인 등록 → sitemap 동일하게 제출
  • 둘 다 HTML 메타태그 방식 인증 지원

Obsidian ↔ 사이트 동기화

현재 전략: vault를 private GitHub repo로 만들고(Obsidian Git 플러그인), 이 사이트 repo의 GitHub Action이 주기적으로 pull & copy.

설정:

  1. Obsidian에 Obsidian Git 커뮤니티 플러그인 설치 → vault를 git repo화 → 자동 push 설정
  2. Vault repo 생성 (private 권장, 예: dev-chlee/obsidian-vault)
  3. Vault 내 콘텐츠는 content/blog/, content/tools/, content/ai-tools/ 폴더에 md로 작성 (frontmatter는 src/content.config.ts 스키마 준수)
  4. 이 repo의 Settings → Secrets → VAULT_REPO_TOKEN (vault repo read 권한 PAT) 등록
  5. .github/workflows/sync-obsidian.ymlVAULT_REPO env 값을 실제 repo로 교체
  6. (선택) vault repo push 시 이 repo로 repository_dispatch 이벤트 발사 — 즉시 반영

Fallback으로 매시간 cron도 걸려있음.

배포 (Vercel)

  1. GitHub repo 생성 후 이 코드 push
  2. Vercel → Import repo → Astro 자동 감지
  3. Environment Variables에 PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY 등록
  4. 도메인 cpatools.co.kr 연결

OSMU 파이프라인 (Phase 2, 미구현)

요구사항: MD 1개 → 블로그글 + 소셜 글 + 유튜브 쇼츠 자동 생성.

현재 스캐폴드에서 준비된 것:

  • 블로그 글 frontmatter에 social.excerpt, social.hashtags 필드 포함
  • 블로그 글이 빌드 시 정적 HTML로 생성됨

미구현 (다음 단계):

  • LLM 호출로 blog MD → Twitter/LinkedIn 포스트 생성 스크립트
  • 블로그 MD → 쇼츠 스크립트 + 이미지/TTS 파이프라인
  • GitHub Action으로 트리거

사이트 본체와 분리된 독립 워크플로우로 구현 예정.

문서

  • docs/extracted-from-v1.md — 이전 프로젝트 자료 (참고용만)

About

CPATOOLS — 한국 회계사를 위한 AI 도구 허브와 자체 도구 쇼케이스 (Astro + Supabase)

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors