AGENTS.md
This file provides guidance to Codex (Codex.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 final command: bundle exec jekyll serve --livereload
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.
Git workflow
Unless the user explicitly says not to commit, every code or content change should be committed and pushed after the edit is complete.
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.