网站维护指南(维护手册)
网站维护指南(维护手册)
本站基于 academicpages(Jekyll)搭建,托管在 GitHub Pages。 本文件面向站点所有者,说明日常更新操作。所有改动 git push 后约 1–2 分钟自动发布。
一、日常更新速查
| 我想做什么 | 怎么做 |
|---|---|
| 同步 Google Scholar 论文 | 仓库根目录运行 python scripts/update_scholar.py,然后提交推送 |
| 发一条新动态 | 在 _posts/ 复制任意现有文件,改文件名/日期/内容 |
| 改首页介绍 | 编辑 _pages/about.md |
| 改简历 | 编辑 _pages/cv.md(章节化结构,新增内容参考 §六) |
| 换头像 | 覆盖 images/profile1.jpg(文件名不变最省事) |
| 加一条手工成果(软著 / 标准 / 专利申请号不在 Scholar 的) | 在 _publications/ 新建一个 .md,见 §五 |
| 新增 / 修改科研项目 | 编辑 _data/projects.yml,见 §六 |
| 替换/上传简历 PDF | 覆盖 assets/cv/CV_Dongkuan_Zhang.pdf(CV 页会自动出现”下载 PDF”按钮) |
二、同步 Google Scholar(论文自动更新)
# 首次使用先装依赖(只需一次)
pip install requests beautifulsoup4
# 一键同步(仓库根目录运行)
python scripts/update_scholar.py
脚本行为:
- 抓取 Google Scholar 主页(用户 ID 已内置:
_R1WLLgAAAAJ); - 为每条成果生成/更新
_publications/pub-<编号>.md,含标题、作者、期刊、年份、实时引用数和 Scholar 链接; - 把总被引 / h-index / i10 写入
_data/scholar.yml(论文页顶部的统计徽章); - 幂等:重复运行只更新数字,不会重复建文件;
- 不会动手工维护的文件(软件著作权、标准等非
pub-开头的文件)。
常用参数:
python scripts/update_scholar.py --dry-run # 只预览不写文件
python scripts/update_scholar.py --user XXXX # 换一个 Scholar 账号
注意事项:
- 若提示触发验证码(HTTP 429/403 或解析不到成果):Google 对频繁抓取有限制,等几小时再跑即可;平时 1–2 个月跑一次完全没问题。
- 想给某篇论文补充中文译名或 DOI:直接编辑对应的
pub-*.md,在 front matter 中加一行title_zh: '中文标题'或doi: '10.xxxx/xxxxx'——脚本更新时会保留这些手工字段。
三、发布一条新动态(Moments)
在 _posts/ 新建文件,文件名必须是 年-月-日-英文小写短横线.md,例如:
_posts/2026-05-20-new-award.md
内容模板(复制现有动态改即可):
---
title: "中文标题 / English Title"
date: 2026-05-20
permalink: /posts/2026/05/new-award/
---
<p class="lang-zh">中文正文……</p>
<p class="lang-en">English body...</p>
<div class="post-figure">
<img src="/images/example.jpg" loading="lazy" alt="图片描述">
</div>
要点:
permalink每篇必须唯一(历史遗留的重复 permalink bug 已修复,别再复制错);- 图片先放进
images/文件夹; - 多图并排用
<div class="post-figure">…</div>包裹,单张大图可用<div class="post-figure single">…</div>,系统会自动在手机和电脑上合理缩放; - 中英文分别放在
class="lang-zh"/class="lang-en"的段落里,由页面右上角语言按钮切换; - 动态列表页现在统一为纯文字 + 时间轴布局:图片只在点进详情页后显示,列表里不再出现大小不一的缩略图。
图片规格建议(保持站点加载速度):
| 图片用途 | 建议宽度 | 建议格式 | 说明 |
|---|---|---|---|
| 动态页照片 | ≤720 px | JPEG 82% | 单张控制在 200 KB 以内 |
| 证书 / 截图 | ≤900 px | PNG-8 或 JPEG 90% | 文字较多用 PNG,照片类用 JPEG |
| 头像 | 400 px | JPEG 85% | 侧栏显示尺寸只有 175 px |
| 首页装饰动图 | ≤480 px,≤30 帧 | GIF | 已在 scripts/optimize_images.py 中自动处理 |
若批量上传后体积仍大,可运行仓库中的 scripts/optimize_images.py 一键压缩(会自动按上表规则处理)。
四、双语机制说明(写内容时必读)
整站通过导航栏右侧的 中 / EN 按钮切换语言,规则:
- 中文内容包在
<span class="lang-zh">…</span>或<p class="lang-zh">…</p>里; - 英文内容包在
<span class="lang-en">…</span>或<p class="lang-en">…</p>里; - 首次访问自动跟随浏览器语言,选择会记忆在浏览器本地;
- 涉及代码文件:
_includes/head.html(首屏防闪烁)、assets/js/language-toggle.js(切换逻辑)、assets/css/main.scss(样式,已内置.home-grid/.home-card卡片样式可复用)。
论文标题保持原文(中文论文就显示中文,英文论文就显示英文),不强行翻译。
五、目录结构
├─ _pages/ 页面:首页 about.md、论文 publications.html、动态 year-archive.html、简历 cv.md、404
├─ _posts/ 动态(Moments)文章
├─ _publications/ 成果条目
│ ├─ pub-*.md ← scripts/update_scholar.py 自动生成,勿手工改名
│ └─ 2025-*-*.md ← 手工维护(软著、标准)
├─ _data/
│ ├─ scholar.yml ← 脚本生成的引用统计,勿手工编辑
│ ├─ navigation.yml ← 导航栏菜单
│ └─ projects.yml ← 科研项目列表(手工维护)
├─ images/ 图片与头像(头像为 profile1.jpg)
├─ scripts/
│ └─ update_scholar.py ← Google Scholar 一键同步脚本
├─ _includes/ 模板片段(语言按钮、论文条目渲染等)
├─ _config.yml 站点主配置(姓名、邮箱、各类学术主页链接)
六、手工新增一条成果(专利 / 软著 / 标准)
Google Scholar 同步脚本只抓 Scholar 上可见的成果,以下条目需要手工添加:
- 发明专利申请公开号(CN…A,公开阶段、未授权);
- 实用新型专利(Scholar 收录不全);
- 软件著作权;
- 团体 / 行业标准。
在 _publications/ 新建一个 .md 文件
文件名按日期 + 类型 + 简短标题,例如:
_publications/2025-08-12-patent-fly-ash.md
模板(以发明专利为例)
---
title: '<span class="lang-zh">一种垃圾焚烧炉内自降飞灰的装置</span><span class="lang-en">A device for self-settling fly ash in a waste incinerator</span>'
collection: publications
category: patents
permalink: /publication/patent-CN223137888U
date: 2025-07-22
venue: '<span class="lang-zh">中国实用新型专利,ZL 2024 2 2052228.7</span><span class="lang-en">China Utility Model Patent No. ZL 2024 2 2052228.7</span>'
authors: '<span class="lang-zh">姬国钊, 张东宽</span><span class="lang-en">Guozhao Ji, Dongkuan Zhang</span>'
---
<p class="lang-zh">简短中文描述……</p>
<p class="lang-en">Short English description...</p>
模板(软件著作权)
把 category: patents 改成 category: software。
模板(标准)
把 category: patents 改成 category: standards,venue 写标准号 + 名称即可。
关键规则
permalink必须唯一(同一个分类下不要重复);date用YYYY-MM-DD或YYYY-01-01(仅知年份时),决定在分类列表中的排序;collection: publications不能漏,否则 Jekyll 不会收录到出版物集合;- 中英文分别用
<span class="lang-zh">和<span class="lang-en">包裹; scripts/update_scholar.py不会动这类手工文件,可放心反复运行同步。
六、新增 / 修改科研项目
论文成果页(/publications/)右侧现在按分类展示,左侧有 sticky 导航。其中「科研项目」板块读取 _data/projects.yml。
模板
- title_zh: "中文项目名称"
title_en: "English project title"
id: "项目编号(没有可留空)"
funder_zh: "资助来源中文"
funder_en: "Funding source English"
role_zh: "参与 / 核心成员 / 数值模拟技术服务"
role_en: "Participant / Core member / Numerical simulation service"
period: "2023–2025"
关键规则
- 所有字段都支持中英双语;
id为空时项目编号行会自动隐藏;- 保存后无需额外配置,论文成果页会自动渲染;
- CV 页如需同步引用科研项目,可直接链接到
/publications/#projects。
七、修改 / 扩展简历页(cv.md)
_pages/cv.md 的结构(直接编辑 markdown):
├─ 顶部:标题 + 三份下载按钮(中文简历 / English CV / 中英对照)
├─ 基本信息 ← 新增联系方式在这里
├─ 教育经历
├─ 工作经历 ← 工业界经历
├─ 联合培养 / 访学经历 ← CSC、连理全球等
├─ 研究方向
├─ 学术成果概览 ← 显示 Scholar 统计徽章(自动)
├─ 期刊论文 ← 表格由 Jekyll 从 _publications 分类 = manuscripts 自动生成
├─ 专利 ← 表格由 Jekyll 从 _publications 分类 = patents 自动生成
├─ 软件著作权 ← 同上,category: software
├─ 标准 ← 同上,category: standards
├─ 科研项目与科技成果转化
├─ 荣誉与获奖 ← 手写维护
├─ 技术服务与学术兼职
└─ 技术技能
新增 / 修改注意事项:
简历内容的双语标记规则
为了从同一份网页 CV 自动生成「中文简历 / 英文简历 / 中英对照」三份 PDF,CV 正文中的每一句/每一段都必须用如下格式包裹:
<span class="lang-zh">中文内容</span><span class="lang-en">English content</span>- 只写中文不写英文 → 英文版 PDF 中该处会缺失;
- 只写英文不写中文 → 中文版 PDF 中该处会缺失;
- 中英混杂写在一个
span里 → 英文版会残留中文、中文版会残留英文,影响纯净度。
对于纯数字 / 专利号 / 网址等专有名词,可以放在对应语言
span内,不影响阅读。论文、专利、软著、标准不要手写
这些列表由 Jekyll 根据
_publications/自动渲染到 CV 页。你只要新增 / 修改对应的*.md文件即可。- 英文论文:保持
title/authors/venue为英文即可,中文版会自动显示英文标题(学术惯例)。 - 中文论文:除
title/authors/venue外,建议再补充title_cn/title_en/authors_cn/authors_en/venue_cn/venue_en,这样中文版显示中文、英文版显示英文翻译。 - 专利 / 软著 / 标准:如果
authors是中英混杂(例如Dongkuan Zhang (张东宽)),请改成双语 span:authors: '<span class="lang-zh">张东宽</span><span class="lang-en">Dongkuan Zhang</span>'
- 英文论文:保持
一键生成三份 PDF
改完 CV 或
_publications/后,运行:python scripts/generate_cv_pdf.py脚本流程:
jekyll build构建站点;- 从
_site/cv/index.html提取 CV 内容区; - 按语言拆分生成 三份 PDF(都会自动覆盖到
assets/cv/):CV_Dongkuan_Zhang.pdf—— 中英对照版(原默认下载文件)CV_Dongkuan_Zhang_CN.pdf—— 纯中文版CV_Dongkuan_Zhang_EN.pdf—— 纯英文版
- 用无头 Edge/Chrome 按 A4 尺寸打印,并自动校验输出。
若
_site已经是最新,可加--skip-build仅重出 PDF:python scripts/generate_cv_pdf.py --skip-build只想生成其中一份时:
python scripts/generate_cv_pdf.py --lang zh # 仅中文版 python scripts/generate_cv_pdf.py --lang en # 仅英文版环境要求:已安装 Ruby/Jekyll(
E:\Ruby)、Microsoft Edge 或 Google Chrome。CV 页使用的样式(
.cv-table/.cv-section)定义在文件顶部的<style>块内,要调整字号、改色或加图标直接在那里改。
八、修改个人信息
_config.yml 顶部 author: 一节集中管理:头像、姓名、简介、所在地、单位、邮箱、 Google Scholar / ORCID / GitHub 等链接——想加 ResearchGate、领英等,填上对应字段即可,侧栏会自动出现图标。
修改微信二维码 / 微信号
- 微信二维码图片:
images/weixin-qr.jpg(建议用微信「我 → 二维码名片」截图,替换此文件即可,保持不倾斜、二维码居中)。 - 微信号:修改
_config.yml中author.wechat的值,并同步修改_pages/about.md中两处DK-techie(图片下方的大字和复制按钮的data-clipboard-text)。 - 首页的联系卡片和左侧边栏都会自动使用新微信号。
九、本地预览(已配置好)
本机已安装 Ruby 3.1.4 + DevKit 到 E:\Ruby,依赖也已装好。两种方式:
方式一(最简单):双击仓库根目录的 serve_local.bat,浏览器打开 http://127.0.0.1:4000/DK/,Ctrl+C 关闭。
方式二(命令行):打开 “Start Command Prompt with Ruby”(开始菜单,装 Ruby 时自带):
cd /d D:\Github_projects\DK
bundle exec jekyll serve
改文件保存后会自动刷新(增量构建),关掉窗口即停。 不本地预览也可以:直接 push,用线上站点检查。
技术备注:原生扩展(racc/sassc 等)编译依赖 MSYS2 工具链(
E:\Ruby\msys64)。 若以后新增 gem 需要编译,务必通过ridk enable环境执行bundle install, 否则会报ruby.h: No such file or directory或临时目录权限错误。
十、常见问题
- 推送后网站没更新:等 1–2 分钟;若仍不行,到仓库 Settings → Pages 查看构建错误,或 Actions/Pages 构建日志。
- 某篇论文信息不对:先去 Google Scholar 修正资料,再跑一次同步脚本。
- 语言切换按钮没反应:清浏览器缓存;确认
assets/js/language-toggle.js存在且_includes/scripts.html中有引用。
十一、图片上传与压缩建议
本站所有图片已经过响应式处理:
- 桌面端:动态页照片默认 320 px 宽、证书默认 420 px 宽;
- 手机端(≤480 px):图片会自动占满容器宽度,避免左右滑动;
- 非首屏图片全部启用
loading="lazy",滚动到附近才加载; - 全局
max-width: 100%; height: auto兜底,防止任何图片撑破布局。
你后续上传图片时,遵循 §三「图片规格建议」即可。若嫌手动压缩麻烦,把原图丢进 images/ 后运行:
python scripts/optimize_images.py
该脚本会按用途自动压缩 GIF/JPEG/PNG,并尽量保留透明度/文字清晰度。
