CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Repository purpose
Personal academic homepage for Wenqi Jia, deployed via GitHub Pages at BitCalSaul.github.io. Forked from RayeRen/acad-homepage.github.io — a Jekyll-based academic site template.
Local development
bash run_server.sh # starts livereload server on http://127.0.0.1:4000
# equivalent: bundle exec jekyll liveserve
bundle install # install Ruby gem dependencies (first run)
Jekyll is constrained to the github-pages gem set so local builds match GitHub Pages’ production build.
Architecture
This is a single-page Jekyll site, not a multi-post blog. Almost all user-visible content lives in _pages/about.md — that is the homepage. Editing site content typically means editing this one file (HTML+Markdown is permitted).
Layered structure:
_config.yml— site metadata, author profile (socials, email, scholar link), include/exclude lists, plugins. Not auto-reloaded by Jekyll; restart the server after editing._layouts/default.html— the only layout; wraps every page._includes/— partials composed by the layout:author-profile.html(sidebar card),masthead.html(top nav),seo.html,analytics.html,head.html,scripts.html.fetch_google_scholar_stats.htmlis the client-side JS that pulls the citation JSON (see below)._sass/+assets/css/— SCSS source compiled by Jekyll;_variables.scssholds theme colors/sizes.assets/js/— vendored JS for the layout._data/navigation.yml— top-nav links.images/— profile photo, favicons, paper teaser images referenced fromabout.md.
Google Scholar citation pipeline
Citations shown on the page are NOT generated at Jekyll build time. The flow:
.github/workflows/google_scholar_crawler.yamlruns daily (cron0 8 * * *) and onpage_build.- It executes
google_scholar_crawler/main.py(usesscholarly), which queries Google Scholar with theGOOGLE_SCHOLAR_IDrepo secret and writesgs_data.json+gs_data_shieldsio.jsontogoogle_scholar_crawler/results/. - The workflow force-pushes those JSON files to a separate branch
google-scholar-statsof this same repo. - At runtime,
_includes/fetch_google_scholar_stats.htmlfetches that JSON from thegoogle-scholar-statsbranch (via raw GitHub or jsDelivr CDN, controlled bygoogle_scholar_stats_use_cdnin_config.yml) and injects per-paper citation counts into any<span class='show_paper_citations' data='SCHOLAR_ID:PAPER_ID'>elements inabout.md, plus the total-citations badge.
Implication: changes that affect citation display may need to be tested against the live google-scholar-stats branch data, not local files. The google_scholar_crawler/ directory is excluded from the Jekyll build.
Editing conventions specific to this template
- New publications/news are added by editing
_pages/about.mddirectly — there is no_posts/collection in use. - To show a paper’s live citation count, embed
<span class='show_paper_citations' data='3bXf6H0AAAAJ:PAPER_ID'></span>(the prefix is the author’s scholar ID from_config.yml). - Permalinks are configured as
/:categories/:title/but the site is effectively a single page, so this rarely matters. timezoneisAsia/Shanghaidespite the author location being DFW — leave as-is unless the user asks.