# AcadHomepage: A Jekyll Academic Homepage That Updates Its Own Citation Counts

> AcadHomepage is an MIT-licensed Jekyll template for academic personal homepages, distributed as a GitHub Pages repository you fork. Its distinctive feature is a scheduled GitHub Action that scrapes Google Scholar and commits citation numbers into your site.

**RayeRen/acad-homepage.github.io** — AcadHomepage: A Modern and Responsive Academic Personal Homepage

- Repository: https://github.com/RayeRen/acad-homepage.github.io
- Stars: 2,963 · Forks: 5,882
- Language: SCSS
- License: MIT
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/rayeren-acad-homepage-github-io

## The problem AcadHomepage solves for academic personal pages

An academic homepage has an awkward maintenance profile. It changes rarely, except for one field that changes constantly: citation counts. Updating those by hand means editing HTML every few weeks, and the numbers are stale the moment you stop. AcadHomepage's answer is to make the citation count a build artifact rather than typed text. The repository is a Jekyll site, and the README describes a GitHub Action that runs a Google Scholar crawler, writes the results to a gs_data.json file on a google-scholar-stats branch, and refreshes that data on a schedule.

The audience is narrow and specific: researchers who already have a GitHub account, are comfortable forking a repository and editing YAML, and want a single-page site with a publications list. It is not aimed at labs needing multi-author pages, nor at people who want a hosted editor. The README's own framing is a personal homepage, and the configuration keys it lists (title, description, repository, author) are all singular.

## How the citation pipeline and the Jekyll build fit together

Two systems run in parallel. The first is Jekyll: _config.yml holds site settings, _pages/about.md holds the content, and _layouts, _includes and _sass supply the theme. GitHub Pages builds that in the usual way.

The second is the crawler. According to the README, the Action is triggered when you update the main branch and also runs at 08:00 UTC every day. It writes gs_data.json into a separate google-scholar-stats branch rather than into main, which keeps generated data out of your content branch. The site then reads citation numbers from that data at render time. The visible hook is an HTML span: the README gives `<span class='show_paper_citations' data='DhtAFkwAAAAJ:ALROH1vI_8AC'></span>`, where the data attribute is a Google Scholar paper ID. The README explains how to find one: open your Scholar profile, click the paper name, and read the value after citation_for_view= in the URL.

That design has a consequence worth stating plainly. Citation counts come from a scraper pointed at Google Scholar, which is not an API and does not offer one. If Scholar changes its markup or rate-limits the request, the data stops updating while the site keeps rendering the last successful value. The README does not document a fallback or an alert for a failed crawl.

## Installing AcadHomepage: fork, secret, then first paper

Installation is a fork, not a package install. The README's first step is to fork the repository and rename it to USERNAME.github.io, where USERNAME is your GitHub username. That rename is what makes GitHub Pages serve it at the root domain.

Next, configure the crawler. Find your Scholar ID in the URL of your profile page, then add it as a repository secret. The README specifies the name exactly:

```bash
# In your repo: Settings -> Secrets -> Actions -> New repository secret
# name:  GOOGLE_SCHOLAR_ID
# value: <your SCHOLAR_ID from scholar.google.com/citations?user=SCHOLAR_ID>
```

After adding the secret, open the Action tab and enable the workflows. The README quotes the button text you will see: "I understand my workflows, go ahead and enable them". Once enabled, the action produces gs_data.json in the google-scholar-stats branch.

Then edit the site. _config.yml takes title, description, repository, an optional google_analytics_id, optional SEO verification keys, and an author block with links, email, city and university. Your actual content goes in _pages/about.md, where you can mix HTML and Markdown. To show a citation count next to a paper, paste the span with the paper's ID:

```html
<span class='show_paper_citations' data='DhtAFkwAAAAJ:ALROH1vI_8AC'></span>
```

The README also covers local work. Clone the repository, install Ruby, RubyGems, GCC and Make per the Jekyll installation guide, then run the bundled script:

```bash
bash run_server.sh
```

That starts a Jekyll livereload server at http://127.0.0.1:4000, which refreshes when you change source files. Expect the first local run to be the slowest part of setup, because the Gemfile dependencies install at that point.

## Where AcadHomepage is the wrong choice

The citation feature is the selling point, and it is also the constraint. Because the numbers are fetched from Scholar and injected into the page, a reader with JavaScript disabled sees the surrounding layout but not the counts. The README does not describe a server-side or pre-rendered alternative, so treat the counts as progressive enhancement.

There is a second boundary. The site is a single about page plus theme partials. If you want a publications database you can query, per-paper pages, BibTeX export, or a news feed with its own permalinks, you are building those yourself on top of Jekyll. The README lists no such features and the repository layout shows no data files for publications beyond _data and the generated scholar JSON.

Finally, the fork-and-rename step means your homepage lives in a public repository named after your username. That is fine for a homepage, but it is a poor place for anything you would not publish, and the README offers no private-repository path. If your institution requires a specific CMS or a domain it controls, this template does not meet that requirement.

## AcadHomepage compared with academicpages and minimal-mistakes

The README states that AcadHomepage is influenced by two repositories: academicpages/academicpages.github.io and mmistakes/minimal-mistakes, both MIT-licensed. That lineage explains the shape of the project. Minimal-mistakes is a general Jekyll theme for blogs and documentation, with navigation, archives, categories and a large set of layout options. Academicpages is a Jekyll site aimed at academics, with structured collections for publications, talks and teaching, and it expects you to maintain those files yourself.

AcadHomepage takes the opposite trade. It drops the collections and the blog scaffolding and adds one automated input: the Scholar crawler writing gs_data.json on a schedule. So the difference is not visual polish, it is where the maintenance burden sits. With academicpages you edit a publications file and keep it current. With AcadHomepage you paste a Scholar paper ID once and let the daily action refresh the number, accepting that the number depends on a scraper continuing to work. If you want talks, teaching and per-paper pages, academicpages covers more ground out of the box. If you want one page and a citation number that maintains itself, AcadHomepage is the smaller tool.

## Maintenance, licence and what upgrading costs you

The repository is MIT-licensed, and the README's acknowledgements note that it incorporates Font Awesome, distributed under SIL OFL 1.1 and the MIT License. MIT is permissive: you can reuse and modify the theme, and the practical obligation is keeping the licence text with the code. That is a summary of what the README states, not legal advice; if you redistribute the theme as part of a product, read the LICENSE file and the Font Awesome terms yourself.

Upgrade cost is the part people underestimate. You forked, so upstream changes do not reach you automatically. Pulling them in means merging against your edited _config.yml and _pages/about.md, and any change to _layouts or _includes can collide with your own edits. The repository has no releases, so there is no version number to pin or changelog to read; you are tracking the default branch. The last push to that branch was on 2026-09-05, which tells you the project has seen recent commits, but it does not tell you what changed or whether a change is breaking. Read the diff before merging. The crawler is the other maintenance surface: because it depends on Google Scholar's page structure, a Scholar redesign can break it independently of anything in your content.

## Conclusion

Adopt AcadHomepage if you want a GitHub Pages academic homepage whose citation numbers refresh without manual editing, and you are willing to keep the repository public and accept Google Scholar scraping as the data source. Do not adopt it if you need a built-in publication database, a content editor, or a site that works without JavaScript-driven data loading. Before committing, verify three things in your own fork: that the Action runs and writes gs_data.json to the google-scholar-stats branch, that your Scholar profile returns data for the paper IDs you paste into _pages/about.md, and that the site renders correctly under bash run_server.sh at http://127.0.0.1:4000 rather than only on the deployed URL.

## FAQ

### Does AcadHomepage update Google Scholar citations automatically?

Yes. The README states that a GitHub Action runs a Google Scholar crawler and writes citation statistics to gs_data.json in the google-scholar-stats branch. It is triggered when you update the main branch and also runs at 08:00 UTC every day.

### How do I get the Google Scholar paper ID for the show_paper_citations span?

The README says to open your Google Scholar homepage and click the paper name, then read the paper ID from citation_for_view=XXXX in the URL. That XXXX value goes into the data attribute of the span.

### Can I run AcadHomepage locally before publishing?

The README documents a local workflow: clone the repository, install Ruby, RubyGems, GCC and Make following the Jekyll installation guide, then run bash run_server.sh. The site is then available at http://127.0.0.1:4000 with livereload.

### What licence does AcadHomepage use?

The repository is MIT-licensed. The README's acknowledgements also note that it incorporates Font Awesome, distributed under SIL OFL 1.1 and the MIT License.

## Sources

- [Issues](https://github.com/RayeRen/acad-homepage.github.io/issues)
- [License: MIT](https://github.com/RayeRen/acad-homepage.github.io/blob/main/LICENSE)
- [RayeRen/acad-homepage.github.io on GitHub](https://github.com/RayeRen/acad-homepage.github.io)
- [README](https://github.com/RayeRen/acad-homepage.github.io/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/rayeren-acad-homepage-github-io
