프로젝트 소개

RepositoryScanner는 GitHub API를 사용하여 공개 및 비공개 저장소의 언어 통계를 읽고, 상위 언어들을 SVG 카드로 내보내는 GitHub 계정 분석 도구입니다. README에 따르면, GitHub의 언어 API는 언어별 코드 바이트 수를 반환하며, 카드의 백분율은 단순 라인 수가 아닌 이 바이트 기반 크기를 기준으로 계산됩니다. 생성된 카드는 총 코드 크기 기준 상위 6개 언어와 총 기여도, 현재 스트릭, 최장 스트릭 등의 기여 통계를 보여줍니다. 이 도구는 Kanagawa paper-ink에서 영감을 받은 테마를 사용하며, GitHub Actions를 통해 매주 자동으로 업데이트되도록 설계되었습니다. 권장 설정 방법은 저장소를 포크한 후, repo 및 read:user 범위(공개 저장소만 필요한 경우 public_repo)를 가진 GitHub 개인 액세스 토큰을 생성하고, GH_TOKEN, GITHUB_USERNAME 및 선택적으로 EXCLUDED_LANGS를 저장소 비밀값(secrets)으로 추가한 뒤 'Update Language Stats' 워크플로를 수동으로 한 번 실행하는 것입니다. 워크플로 파일은 .github/workflows/update-chart.yaml에 위치하며, UTC 기준 매주 일요일 00:00에 실행되어 업데이트된 assets/languages.svg를 main 브랜치에 커밋하도록 설정되어 있으며, 온디맨드 실행도 지원합니다. 일정은 해당 워크플로 파일의 cron 라인을 수정하여 변경할 수 있습니다. 결과물인 SVG는 raw.githubusercontent.com URL을 사용하여 프로필 README에 임베드할 수 있으며, 브라우저 캐싱을 피하기 위해 ?v=1과 같은 선택적 쿼리 매개변수를 사용할 수 있습니다. 로컬 개발을 위해 README는 Python 3.10 이상(3.11 권장)을 추천합니다. 핵심 의존성 패키지는 requests와 python-dotenv입니다. 설정은 .env 파일이나 셸 환경 변수를 통해 제공할 수 있습니다. 저장소 루트에서 python scripts/fetch_languages.py를 실행하면 assets/languages.svg가 생성됩니다. Kanagawa 색상 팔레트와 언어별 색상은 scripts/colors.py에 정의되어 있으며, SVG 레이아웃 세부 사항은 scripts/fetch_languages.py 내부에서 처리됩니다. 또한 README는 GITHUB_USERNAME이 주요 변수이지만, 하위 호환성을 위해 USERNAME도 지원한다고 명시하고 있습니다. GH_TOKEN이 설정되지 않은 경우 공개 저장소만 분석되며 GitHub의 인증되지 않은 요청 제한(rate limits)이 적용됩니다. 보안 및 개인정보 보호 참고 사항에 따르면, 이 도구는 저장소 목록과 저장소별 언어 통계를 읽기 위해 GitHub API를 사용하지만 실제 코드 내용은 읽지 않습니다. 토큰은 로컬 개발 시 .env 또는 환경 변수에서, Actions 사용 시 GitHub Secrets에서 읽어오며 절대 커밋해서는 안 됩니다. 문제 해결 섹션에서는 401 Unauthorized 및 API 오류, 필터링된 포크/제외된 언어/토큰 권한/요청 제한으로 인한 언어 데이터 누락, Actions 비활성화/잘못된 워크플로 경로/YAML 오류/예상 브랜치가 아닌 곳에서의 변경으로 인해 워크플로가 실행되지 않는 경우 등을 다룹니다. 이 프로젝트는 MIT 라이선스를 따르며, anuraghazra/github-readme-stats에서 영감을 받았고 Kanagawa 색상 테마는 rebelot/kanagawa-paper.nvim의 영향을 받았다고 밝히고 있습니다.