一份学术个人主页,可以把研究方向、论文、项目、简历和联系方式放在同一个地址下。申请学校、寻找合作或参加学术会议时,把这个地址附在邮件签名和个人资料中,对方就能直接了解你的研究工作。
这篇教程使用 GitHub Pages 和 Academic Pages 模板搭建网站。主线操作全部在浏览器中完成,按顺序做好仓库、部署和内容配置,就能得到一个可以持续更新的个人主页。
最终的网站包含个人介绍、论文列表、研究项目和简历页面。本文用 yourname 代表你的 GitHub 用户名,用“林同学”代表示例作者。姓名、学校、论文和经历都是演示内容,发布时请换成自己的资料。
一 开始前认识网站的组成
这套方案由四部分组成,各自承担不同的工作。
| 组成 | 用途 | 你主要需要做什么 |
|---|---|---|
| GitHub 仓库 | 保存网站文件和修改记录 | 创建仓库,编辑和提交文件 |
| Academic Pages | 提供学术网站的页面和布局 | 修改个人信息,添加论文和项目 |
| Jekyll | 把 Markdown 和模板生成网页 | 使用模板已有的构建配置 |
| GitHub Pages | 托管生成后的静态网站 | 开启发布,检查部署结果 |
Academic Pages 基于 Jekyll 和 Minimal Mistakes 主题扩展,提供论文、报告、教学、项目和简历等内容结构。可以先看看模板演示站,确认页面组织符合自己的需要。模板项目 · 演示网站
准备账号和第一批资料
先准备一个已验证邮箱的 GitHub 账号,以及个人照片、简短介绍和可公开的学术资料。即使暂时没有论文,也可以先完成介绍、研究方向和项目页面。
本文采用 GitHub Free 账号和公开仓库的方式,使用 GitHub 提供的 github.io 地址。Pages 提供静态网站托管,适合展示这些内容。购买自定义域名属于后面的可选步骤。GitHub Pages 官方说明
确定网站地址
个人站点的仓库名称需要是 用户名.github.io。例如,用户名为 yourname 时,仓库名称应为 yourname.github.io,网站地址为 https://yourname.github.io/。
这里使用的是 GitHub 用户名,可以在个人主页地址中找到。每个账号只能有一个这样的用户站点。如果你已经使用了这个地址,可以用普通仓库搭建项目站点。用户站点与项目站点的区别
| 站点类型 | 仓库名称示例 | 默认访问地址 |
|---|---|---|
| 用户站点 | yourname.github.io | https://yourname.github.io/ |
| 项目站点 | academic-homepage | https://yourname.github.io/academic-homepage/ |
后续主线按用户站点操作。需要使用项目站点时,在配置步骤中设置对应的 baseurl。
查找学术网站模板的资源网站
选择模板时,可以先比较首页、论文列表、项目和简历的演示效果,再看文档中如何新增内容和发布更新。下面的入口既有可以直接使用的学术模板,也有用于浏览更多设计的主题目录。
| 资源 | 类型与技术 | 适合的用途及费用情况 | 官方入口或项目地址 |
|---|---|---|---|
| Academic Pages | 学术模板,Jekyll | 适合按论文、报告、项目和简历组织主页,免费开源,本文使用这一模板 | 模板仓库 https://github.com/academicpages/academicpages.github.io · 在线演示 https://academicpages.github.io/ |
| al-folio | 学术网站 starter,Jekyll | 适合研究人员的个人主页,界面简洁,采用 MIT 开源许可 | 项目与文档 https://github.com/alshedivat/al-folio · 在线演示 https://alshedivat.github.io/al-folio/ |
| HugoBlox Templates | 模板目录,Hugo | 可查看 Academic CV 等研究者模板,Academic CV 开源版免费且采用 MIT 许可,可选编辑和托管服务按各自方案计费 | 模板目录 https://hugoblox.com/templates · Academic CV https://hugoblox.com/templates/academic-cv |
| Jekyll Themes | Jekyll 主题目录 | 可以按作品集、博客和 GitHub Pages 分类浏览,包含免费和付费主题 | https://jekyllthemes.io/ |
| Hugo Themes | Hugo 官方主题目录 | 适合寻找个人主页、博客和文档主题,具体许可查看各主题项目 | https://themes.gohugo.io/ |
| Astro Themes | Astro 官方主题目录 | 适合希望定制个人作品集或研究博客的开发者,包含免费和付费模板 | https://astro.build/themes/ |
| GitHub Academic Website Topics | 社区项目集合,多种技术 | 可以查找更多学术主页项目,逐个核对许可证、演示和维护记录 | https://github.com/topics/academic-website |
如果希望沿着本教程完成建站,选择 Academic Pages 即可。考虑 al-folio 时,可以先在演示站里体验论文和简历页面,再按项目当前文档安装。主题目录中的模板,最好同时确认移动端布局、论文维护方式、近期更新和发布说明。
Hugo 和 Astro 生成的静态网站也能部署到 GitHub Pages,分别需要使用各自的构建工具和工作流。选择这些模板后,应使用对应框架的部署指南配置发布。Hugo 部署指南 · Astro 部署指南
二 从模板创建自己的仓库
打开 Academic Pages 模板,点击 Use this template → Create a new repository,然后完成下面的设置。Academic Pages 模板入口
- Owner 选择自己的 GitHub 账号。
- Repository name 填写
yourname.github.io,把yourname换成真实用户名。 - 可见性选择 Public。
- 创建仓库,进入自己的仓库首页。
在页面左上角确认仓库属于自己,再看一下文件列表上方的默认分支名称,记住它是 main 还是 master。后面配置自动部署时会用到。
创建后,仓库中应当能找到这些文件和目录。
_config.yml 网站和作者配置
_data/navigation.yml 顶部导航
_pages/about.md 网站首页
_pages/publications.html 论文汇总页
_pages/cv.md Markdown 简历页
_publications/ 每篇论文的 Markdown 文件
_portfolio/ 项目条目
images/ 头像和图片
files/ 简历和论文 PDF
.github/workflows/ 自动构建与部署流程
这些路径属于你刚创建的学术网站仓库。接下来的配置和文件内容,都在这个仓库里修改。
三 开启自动部署并确认网站能访问
选择 GitHub Actions 作为发布源
进入仓库的 Settings → Pages,在 Build and deployment → Source 中选择 GitHub Actions。
本文使用模板已经提供的工作流,文件路径为 .github/workflows/jekyll.yml。它会安装构建依赖、生成网页,并把生成结果部署到 Pages。模板部署工作流
GitHub Pages 也支持从分支发布。本文各步骤统一使用上面的 Actions 配置,以便直接沿用模板工作流。GitHub Pages 发布源设置
核对工作流监听的分支
打开 .github/workflows/jekyll.yml,点击编辑按钮,找到 on 下的 push.branches。
截至本文更新时,模板写的是 master。如果你创建的仓库默认分支为 main,把这部分改成下面的内容。这里只替换对应的触发配置,其余工作流步骤继续使用模板原有内容。
on:
push:
branches: ["main"]
workflow_dispatch:
如果你的默认分支为 master,就保留 branches: ["master"]。workflow_dispatch 允许你在 Actions 页面手动启动部署。
编辑完成后,点击 Commit changes,填写简短的提交说明,并把修改提交到默认分支。模板仓库的工作流如果处于停用状态,先在 Actions 页面启用它。
检查第一次部署
打开仓库的 Actions 页面,进入对应工作流,查看最新一次运行。如果还没有运行记录,可以点击 Run workflow,选择默认分支并启动。
等待 build 和 deploy 两个任务完成,然后从部署结果或 Settings → Pages 中打开网站地址。首次发布可能需要一些时间,GitHub 官方说明更改发布最长可能需要约 10 分钟。创建 Pages 站点
此时能访问到模板首页,就完成了第一次上线。接下来把模板内容换成自己的资料,每次提交后都会触发同一套部署流程。
四 配置网站名称和个人资料
修改网站基础信息
打开根目录的 _config.yml,找到开头的基础配置,修改对应字段。下面是这一部分的完整示例,文件后面的插件、集合和布局配置继续保留。
locale: "zh-CN"
site_theme: "default"
title: "林同学的学术主页"
title_separator: "-"
name: &name "林同学"
description: &description "林同学的学术主页,介绍信息检索与自然语言处理研究、论文、项目及学术经历。"
url: "https://yourname.github.io"
baseurl: ""
repository: "yourname/yourname.github.io"
url 填网站的协议和域名,baseurl 填部署子路径。用户站点位于域名根目录,因此 baseurl 为空。repository 填 GitHub 的 用户名/仓库名。保留示例中的 &name 和 &description,可以兼容模板中可能引用这些 YAML 锚点的配置。模板配置文件
如果使用普通仓库 academic-homepage,对应三个字段应改成下面这样。
url: "https://yourname.github.io"
baseurl: "/academic-homepage"
repository: "yourname/academic-homepage"
修改侧边栏资料
在同一个 _config.yml 文件里找到 author:,可以把整个 author 配置块替换为下面的内容,继续保留它后面的其他顶层配置。
author:
avatar: "avatar.jpg"
name: "林同学"
bio: "计算机科学博士研究生,研究信息检索与自然语言处理。"
location: "中国 上海"
employer: "你的学校或研究机构"
uri: "https://yourname.github.io"
email: "yourname@example.com"
github: "yourname"
googlescholar: ""
orcid: ""
github 填用户名。googlescholar 和 orcid 填各自个人主页的完整 URL,暂时没有账号时可以保持空字符串。模板会根据这些值生成侧边栏链接。侧边栏作者信息的实现
如果使用项目站点,将 author.uri 同步改为 https://yourname.github.io/academic-homepage/,让侧边栏的网站链接指向这个学术主页。
YAML 用缩进表达层级。上面 author 下的字段统一缩进两个空格,输入法使用英文引号,尽量给包含特殊符号的文字加上引号。
上传头像
进入仓库的 images 目录,点击 Add file → Upload files,上传自己的照片并命名为 avatar.jpg,然后提交。
当前模板会把 avatar: "avatar.jpg" 解析到 images/avatar.jpg。照片可以裁成正方形,并压缩到适合网页显示的大小。文件名、扩展名和大小写需要与配置一致。
五 写好个人介绍和研究方向
打开 _pages/about.md。这个文件虽然叫 about.md,但它的 permalink: / 把它设置为了网站首页。
可以将文件完整替换为下面的示例。最上方两个 --- 之间是 Front Matter,也就是页面元信息,后面是 Markdown 正文。
---
title: "林同学的学术主页"
permalink: /
author_profile: true
description: "林同学的研究介绍,涵盖信息检索、自然语言处理、近期动态与学术联系方式。"
---
欢迎来到我的个人主页。我是林同学,目前在你的学校攻读计算机科学博士学位。
我的研究关注如何让检索系统更准确地理解用户需求,并为复杂问题提供可追溯的信息支持。
## 研究方向
- 信息检索与文档排序
- 自然语言处理与语义表示
- 检索增强生成及其评估
## 近期动态
- 2026 年 11 月,更新了研究项目与实验结果。
- 2026 年 9 月,开始新的学期研究计划。
## 联系我
欢迎就相关研究和开源项目交流。
邮箱为 [yourname@example.com](mailto:yourname@example.com)。
写研究方向时,可以先用一段话解释自己研究的问题,再列出几个具体主题。近期动态只记录真实发生的事项,按时间倒序更新即可。模板首页结构
页面标题交给主题生成,正文从 ## 开始组织章节。提交后打开网站首页,检查标题、照片、介绍和联系方式是否正确。
六 添加论文和可下载的学术资料
为每篇论文创建一个文件
进入 _publications 目录,点击 Add file → Create new file,新建 2026-10-01-efficient-retrieval.md,把下面的内容作为起点。
---
title: "Efficient Retrieval for Research Documents"
collection: publications
category: conferences
permalink: /publication/2026-10-01-efficient-retrieval/
date: 2026-10-01
excerpt: "研究面向学术文档的检索方法,讨论检索效果、计算开销和实验评估。"
venue: "填写实际会议或期刊名称"
paperurl: "https://yourname.github.io/files/efficient-retrieval.pdf"
citation: "Lin, A., and Chen, B. (2026). Efficient Retrieval for Research Documents. 填写实际发表信息。"
---
## 研究问题
介绍论文要解决的问题,以及现有方法在什么情况下存在不足。
## 方法与结果
说明自己的主要贡献、实验设置和结果。根据论文实际内容填写结论。
这是一篇虚构论文,用来演示字段和页面结构。请把标题、作者、日期和发表信息一起换成真实内容。论文条目使用 YAML 元信息生成列表和详情页面。模板论文条目示例
| 字段 | 填写方式 |
|---|---|
collection | 保持为 publications,与模板配置的集合一致 |
category | 使用 _config.yml 中已有的分类键 |
permalink | 当前论文详情页的路径,各条目保持唯一 |
date | 按 YYYY-MM-DD 填写实际日期 |
venue | 填写会议、期刊或实际发表状态 |
paperurl | 填可访问的论文 PDF、预印本或出版页面完整 URL |
citation | 填写论文引用信息 |
当前模板的分类键包括 books、manuscripts 和 conferences。示例使用 conferences,会进入 Conference Papers 分组。论文汇总页按这些键筛选条目,添加其他分类时,需要同步在 _config.yml 的 publication_category 中定义它。论文列表的分类逻辑
上传论文和简历 PDF
进入 files 目录,通过 Add file → Upload files 上传 PDF。示例论文使用 efficient-retrieval.pdf,简历可以命名为 cv.pdf。
用户站点上传后,对应地址如下。
https://yourname.github.io/files/efficient-retrieval.pdf
https://yourname.github.io/files/cv.pdf
如果使用项目站点,地址中需要包含项目路径。例如 https://yourname.github.io/academic-homepage/files/cv.pdf。论文的 paperurl 也应填写包含这个路径的完整地址。
上传论文时,使用允许公开传播的版本,也可以把 paperurl 指向论文已有的预印本或出版页面。发布后,从网站中实际点击链接,确认打开的是正确文件。
七 展示研究项目和个人简历
添加研究项目
进入 _portfolio 目录,新建 research-search.md,填写项目内容。
---
title: "学术文献检索实验平台"
collection: portfolio
permalink: /portfolio/research-search/
excerpt: "支持文献导入、语义检索和实验评估的研究项目,介绍项目职责与实现方法。"
---
## 项目目标
为研究人员提供可复现的文献检索实验环境。
## 我的工作
- 整理公开数据集和评估流程。
- 实现检索方法,并比较不同配置的实验结果。
- 记录运行环境和复现实验的方法。
根据项目实际情况,可以补充代码仓库、演示地址、协作者和论文链接。写清自己承担的部分,并为实验结果提供可核对的背景。
更新在线简历
打开 _pages/cv.md。本文使用 Markdown 简历页,可以将其完整替换为下面的内容。
---
layout: archive
title: "林同学的学术简历"
permalink: /cv/
author_profile: true
description: "林同学的教育背景、研究经历、学术服务与简历下载。"
---
[下载 PDF 简历]({{ '/files/cv.pdf' | relative_url }})
## 教育背景
- 2024 年至今,你的学校,计算机科学博士研究生。
- 2020 年至 2024 年,你的学校,计算机科学学士。
## 研究经历
- 文献检索项目,负责实验设计、方法实现和结果分析。
## 学术服务
- 按实际情况填写会议志愿服务、审稿或学术组织经历。
这里的 relative_url 是 Jekyll 过滤器,会根据 baseurl 生成站内链接。因此,同一段 PDF 链接可以适配用户站点和项目站点。在线简历和 PDF 简历需要分别更新。Jekyll URL 过滤器
导航中的简历入口统一指向 /cv/,对应这里设置的 permalink。模板简历页
八 整理顶部导航和模板样例
设置导航菜单
打开 _data/navigation.yml,将内容替换为下面的配置。
main:
- title: "个人介绍"
url: /
- title: "论文发表"
url: /publications/
- title: "研究项目"
url: /portfolio/
- title: "个人简历"
url: /cv/
main 中的排列顺序就是菜单顺序。导航链接要与目标页面的 permalink 对应,已有的论文和项目汇总页可以直接使用。模板导航配置
清理模板带来的演示内容
发布自己的主页前,检查 _publications、_portfolio、_talks、_teaching 和 _posts。保留已改成真实资料的条目,删除属于模板作者的演示条目,并检查其他 _pages 页面里是否还留有默认人物和学校。
移除导航项只会让入口消失,对应页面仍可能被生成和访问。暂时不用的演示页面,可以删除对应源文件。首页、论文汇总页、项目汇总页和简历页等正在使用的页面继续保留。
一并检查 _config.yml 中的默认作者、学术账号和社交链接,确认网站展示的是自己的信息。
九 发布后的检查和日常更新
从访问者的角度检查网站
等最新部署成功后,用电脑和手机各打开一次网站,完成下面的检查。
- 首页显示自己的姓名、头像、研究方向和联系方式。
- 菜单中的论文、项目和简历页面都能打开。
- 论文进入了预期分组,详情页内容完整。
- 简历和论文 PDF 可以访问,内容与链接文字对应。
- 浏览器标签页显示正确标题,网站中已清理模板演示资料。
- 手机页面可以阅读,菜单展开和链接点击正常。
用浏览器持续更新
日常更新仍然可以在 GitHub 网页完成。修改文件,点击 Commit changes 提交到工作流监听的分支,等待 Actions 部署成功,再打开网站检查。
新增一篇论文时,在 _publications 中创建新的文件,设置独立的 permalink,上传需要的 PDF,并更新首页动态。已有条目的地址尽量保持稳定,方便别人继续使用原来的引用链接。
使用 Git 在本地编辑
如果已经安装 Git,也可以把自己的学术网站仓库克隆到本地。先把下面的 yourname 换成真实用户名,再执行命令。
git clone https://github.com/yourname/yourname.github.io.git
cd yourname.github.io
每次编辑前先同步远端修改。
git pull --ff-only
编辑并保存文件后,先查看差异,再提交修改。下面演示只更新首页的情况。
git diff -- _pages/about.md
git add _pages/about.md
git commit -m "Update academic homepage introduction"
git push
命令在克隆下来的学术网站仓库根目录运行。如果更新了多个文件,将对应路径加入 git add。首次推送按 GitHub 提示完成认证,然后在 Actions 页面确认部署结果。
十 可选配置自定义域名
当网站内容稳定后,可以把 https://yourname.github.io/ 换成自己的域名。下面以已经持有 example.com,准备使用 www.example.com 为例。
- 在 GitHub 个人 Settings → Pages 中按说明验证域名所有权。
- 进入网站仓库 Settings → Pages,在 Custom domain 中填写
www.example.com并保存。 - 到域名的 DNS 管理后台,添加一条主机名为
www的CNAME记录,目标填写yourname.github.io。 - 将
_config.yml的url改为https://www.example.com,baseurl保持空字符串,同步更新author.uri和站内 PDF 的paperurl等完整 URL,然后提交并重新部署。 - 等 DNS 检查和证书签发完成后,在 Pages 设置中启用 Enforce HTTPS,再测试新地址。
DNS 记录的目标填写主机名 yourname.github.io,省略协议和仓库路径。GitHub 建议先完成 Pages 域名设置,再配置 DNS,DNS 变更传播可能需要最长 24 小时。本文使用的自定义 Actions 发布方式在 Pages 设置里配置域名,GitHub 不要求为此创建仓库 CNAME 文件。自定义域名配置说明
十一 常见问题排查
| 现象 | 优先检查 | 处理方法 |
|---|---|---|
| 网站地址返回 404 | 仓库名、Pages 发布源和部署状态 | 确认用户站点仓库名与用户名匹配,使用 Pages 设置中显示的地址 |
| 提交后没有运行记录 | .github/workflows/jekyll.yml 的分支条件 | 让 push.branches 与实际提交分支一致,并确认工作流已启用 |
| 工作流成功但页面仍是旧内容 | 最新部署对应的提交 | 查看 Actions 的提交记录,确认访问的是对应站点,再刷新浏览器 |
| 构建提示 YAML 错误 | 最近修改的配置或页面元信息 | 检查空格缩进、英文引号和 Front Matter 的起止 --- |
| 头像或 PDF 打不开 | 文件路径和大小写 | 在仓库中核对真实文件名,并检查项目站点的 baseurl |
| 新论文没有进入列表 | collection 和 category | 使用 publications 集合,并让分类键与配置匹配 |
| 菜单链接返回 404 | 导航 URL 与页面 permalink | 让两处路径一致,并确认页面已随最新部署发布 |
| 自定义域名无法启用 HTTPS | Pages 的 DNS 检查和证书状态 | 核对 DNS 目标,等待解析和证书处理完成后重试 |
遇到构建失败,进入 Actions → 失败的运行 → 失败的步骤,先阅读最早出现的具体错误。通常可以定位到文件名和行号,修正后再提交。GitHub 也提供了 Pages 构建和 404 的排查文档。构建错误排查 · 404 排查
网站上线后,可以在搜索引擎站长工具中验证所有权,并检查网站实际生成的 sitemap.xml。模板已配置 jekyll-sitemap 插件,域名更换后需要核对站点地图和页面链接是否使用新地址。搜索结果的更新取决于后续抓取与收录。Jekyll Sitemap 插件说明