프로젝트 소개
craft(anacraft)는 Rust로 작성된 명령줄 도구로, 도메인에 Google Analytics 4를 설정하고 결과 메트릭스를 터미널 대시보드로 반환합니다. 시각적 언어는 마인크래프트 테마로, 광석 질감 바, 7개 실시간 패널, 실시간 이벤트 피드 및 업적 톡스트를 특징으로 합니다. 오사카제이드(기본), 캣풉친, 깃허브, 도쿄나이트, 캣풉친라떼 등 선택 가능한 팔레트가 제공됩니다. 명령어는 craft이며, anacraft는 별칭으로 함께 설치됩니다.
설치 및 기본 사용법
- 설치 스크립트는 anacraft.dev에서 제공되며, 바이너리를 /usr/local/bin에 설치합니다(sudo 없이). writable하지 않을 경우 ~/.local/bin에 설치되며, INSTALL_DIR로 다른 위치를 지정할 수 있습니다. 소스 빌드는 cargo install --git으로, 사전 빌드 바이너리는 프로젝트의 GitHub Releases에서 배포됩니다.
- 명령어 없이 anacraft를 실행하면 대시보드가 열립니다(dash가 기본값). 저장된 속성이 없으면 합성 데이터로 작동하므로 로그인 전에 시험해 볼 수 있습니다.
- 빠른 시작 경로: 새 도메인의 경우 craft configure, 기존 속성을 연결하는 경우 craft login + craft props + craft use 순서입니다.
- 원샷 리포트는 요약(overview), 페이지(pages), 포털(portals·트래픽 소스), 영역(realms·국가), 라이브, 데모를 출력하며 --days와 --theme 옵션을 지원합니다.
- 두 개의 전역 플래그: --property로 저장된 기본값이 아닌 속성 선택, --theme로 단일 실행에 팔레트 오버라이드.
스크립팅용 출력 형식
overview는 --format json(단일 레이블 객체로 단위, 이전 기간, 백분율 변화, 일별 사용자 시계열, 업적 포함) 또는 --format slack(Block Kit 페이로드)을 지원합니다. 둘 다 페이로드만 출력하므로 주간 요약은 웹훅에 파이프라인 처리되는 단 하나의 cron 라인으로 가능합니다. 어떤 형식도 구독이 필요 없습니다.
대시보드
7개 패널은 키 1~7(또는 글자 바로 가기)으로 각각 전환 가능하며, 나머지 패널은 터미널을 채우도록 자동 배치됩니다: EVENTS, RIGHT NOW(실시간 플레이어 및 이벤트 피드), COUNTRIES(월드맵 플롯), TOP PAGES, VITALS(사용자, 세션, 조회수, 전환, 이탈률, 평균 세션), TOP COUNTRIES, DAILY USERS. 기타 제어 방법: 탭으로 속성 순환, shift-D로 화면 속성 로컬Forget, t로 팔레트 순환 및 저장, r로 강제 재조회, 도움말 오버레이, 종료.
알림
craft watch는 가장 최근 완료일을 이전 날들의 평균과 비교하고 사이트 자체 이력에서 파생된 각 메트릭 임계값을 초과하는 편차를 보고합니다. 하락, 급증, 그리고 "무음"(태그 제거처럼 카운트가 제로로 떨어진 경우)을 플래그합니다. 기본값은 메트릭마다 다릅니다(예: 사용자·세션 30%, 전환 40%, 이탈률 20%). 임계값과 기준선 길이는 구성에서 속성별로 조정 가능하고, 구성 가능한 최소값 미만의 기준선은 카운트 알림을 발화하지 않습니다. 알림에는 메트릭 값, 이동량, 기준선, 스파크라인이 포함되며, 우세 채널은 이동의 큰 비중을 차지할 때만 명명됩니다. 상태는 day별 키로 ~/.anacraft/watch.json에 저장되어 같은 날은 한 번만 발화합니다. 종료 코드는 0(발화 없음), 2(알림), 1(오류). 배달 옵션으로는 --every로 반복 확인, --webhook으로 POST가 있으며, craft slack --install은 Slack의 설치 화면을 안내하고 도착 웹훅 URL을 저장하여 선택한 채널에 게시하는 최소 범위를 사용합니다.
어시스턴트를 위한 MCP 서버
craft mcp는 리포트를 모델 컨텍스트 프로토콜(MCP)로 노출하여 Claude Desktop, Claude Code 등 다른 MCP 클라이언트가 사이트에 대해 질문할 수 있도록 합니다. craft mcp --install은 클라이언트 구성에 서버 항목을 작성하고(--uninstall은 삭제), Claude Code는 claude mcp add를 사용합니다. 도구에는 site_status, live_visitors, list_pages, list_events, list_referrers, list_traffic_sources, list_countries, list_properties, search_pages, search_events, configure_site가 포함됩니다. configure_site는 유일한 쓰기 도구로, 추적되지 않는 도메인에 대한 속성과 웹 스트림을 생성하고 태그를 반환합니다. 로그인 및 속성 선택은 인간 전용 명령으로 남습니다. 응답은 속성 ID와 커버된 날짜 범위로 레이블된 구조화된 JSON이며, 동일한 리포트는 API 할당량을 제한하기 위해 약 1분간 캐시됩니다.
구성 및 자격 증명
속성 및 설정은 ~/.config/anacraft/config.toml에 저장됩니다(XDG_CONFIG_HOME 존중). OAuth 리프레시 토큰은 의도적으로 해당 디렉터리 밖에 ~/.anacraft/token.json에 보관됩니다. 여러 속성은 구성에 누적되어 탭으로 순환하며, 종료 시 마지막으로 본 속성이 활성 상태가 됩니다. 해상도 순서는 --property, ANACRAFT_PROPERTY_ID, 저장된 활성 속성 순입니다. 기타 환경 변수로는 ANACRAFT_WEBHOOK과, 내장 OAuth 클라이언트 대신 개인 Google Cloud OAuth 클라이언트를 사용하는 경우 ANACRAFT_OAUTH_CLIENT_ID, ANACRAFT_OAUTH_CLIENT_SECRET이 있습니다.
요구사항 및 프로젝트 노트
GA4 속성, 트루컬러 터미널, 소스 빌드의 경우 Rust 1.74 이상이 요구사항으로 나열됩니다. 저장소는 Apache License 2.0으로 라이선스되며 기여 가이드라인을 포함합니다. cargo run -- dash --demo는 Google 계정 없이 작동하는 대시보드를 제공합니다. .claude/skills/anacraft/ 아래에 Claude Code 스킬이 함께 제공됩니다.
상업적 맥락
여러 기능은 유료 플랜(Anacrafter 및 그 이상, 월 $2.99부터 시작)과 연동됩니다(craft configure, Slack에 watch 알림 전달, MCP 서버). 대시보드, watch, MCP 서버의 데모 모드는 계정 또는 구독 없이 실행되며, overview의 JSON 및 Slack 리포트 형식은 구독이 필요 없다고 명시됩니다. 플랜이나 로그인이 없을 때 MCP 서버는 여전히 시작되며 도구들은 종료 대신 필요한 사항을 보고합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.