中文 | English
- 🦆🦆 DoubleDuckLab (DDLab)
一个基于 Astro 构建的现代化课题组官网模板, 为科研团队设计。
- 基于 Astro 构建,静态生成,速度极快
- JSON / Markdown 内容驱动,无需后端
- 专为 科研团队官网 场景设计
- 响应式布局
- 深色 / 浅色模式
- 可直接部署到 Cloudflare Pages / Vercel
左:Light / 右:Dark(点击图片可直接访问 doubleducklab.com)
克隆项目:
git clone https://github.com/nightt5879/doubleducklab.git
cd doubleducklab安装依赖:
npm install构建项目:
npm run build本地预览:
npm run preview访问:
http://localhost:4321
网站主要内容存储在:
src/content/
例如:
members/*.md
papers/*.md
news/*/*_cn.md
news/*/*_en.md
project/
join/*/overview_cn.md
join/*/overview_en/md
修改这些文件即可更新网站内容。接下来将从主页开始讲解能修改的内容:
brand:用于左上角品牌(Header)siteName:用于首页 Hero 标题和浏览器标签页标题(<title>)
请编辑文件:
src/data/site.zh.json
与
src/data/site.en.json示例:
{
"brand": "DOUBLEDUCK·LAB",
"siteName": "DoubleDuckLab"
}修改后效果:
- Header 左上角显示
brand - 首页主标题显示
siteName - 页面标题显示为
页面名 · siteName(例如:新闻 · DoubleDuckLab)
执行验证:
npm run build
npm run preview首页 Hero、Highlights、Featured Projects 标题都来自:
src/data/site.zh.json(中文)src/data/site.en.json(英文)
重点字段(两份文件都建议保持同结构):
{
"siteName": "DoubleDuckLab",
"home": {
"intro": "首页 Hero 副标题文案",
"sections": {
"highlights": "Highlights/重点信息 标题",
"featuredProjects": "Featured Projects/精选项目 标题"
},
"highlights": [
{ "title": "研究方向", "desc": "研究方向描述" },
{ "title": "近期成果", "desc": "近期成果描述" },
{ "title": "招生与合作", "desc": "招生方向、合作方式、联系方式描述" }
]
}
}/join 与 /en/join 采用 Markdown 内容驱动,路径如下:
src/content/join/recruitment/
overview_cn.md
overview_en.md
说明:
- 中文页读取
overview_cn.md - 英文页读取
overview_en.md frontmatter.title可选,用于页面主标题- 正文支持完整 Markdown(列表、图片、代码块等)
成员内容使用 Astro Content Collections,文件位置:
src/content/members/*.md
头像资源目录:
public/member/images/
默认头像(未匹配到成员头像时使用):
public/images/avatar-default.png
---
id: "zhang-wei"
name:
zh: "张伟"
en: "Wei Zhang"
role:
zh: "博士生"
en: "PhD"
area:
zh: "多模态智能体"
en: "Multimodal Agents"---
id: "li-ming"
name:
zh: "李明"
en: "Ming Li"
role:
zh: "硕士生"
en: "Master"
status:
zh: "在读"
en: "Current"
area:
zh: "机器人规划"
en: "Robot Planning"
bio:
zh: "研究方向聚焦于机器人规划与控制。"
en: "Focused on robot planning and control."
avatar: "/member/images/custom-li-ming.png"
links:
scholar: "https://scholar.google.com/"
github: "https://github.com/yourname"
homepage: "https://example.com"
email: "liming@xxx.com"
---字段说明:
- 必填:
id、name.zh/en、role.zh/en、area.zh/en - 可选:
status、bio、avatar、links links子字段可选:scholar、github、homepage、email
显示规则(不填即不显示):
- 不写
bio:详情页不显示简介区块 links四项都不写:详情页不显示 Links 区块links.email写了:详情页显示完整邮箱文本,可点击复制。- 不写
status:列表卡片右上角不显示状态角标(PI 默认也不显示)
系统会自动按 name 去找同名头像:
public/member/images/<name>.png
public/member/images/<name>.jpg
public/member/images/<name>.svg
示例:
name.zh: "张教授"->public/member/images/张教授.pngname.en: "Prof. Zhang"->public/member/images/Prof. Zhang.jpg
支持中文文件名。
列表页默认按以下顺序展示:
- PI(负责人)
- 在组成员:PhD -> Master -> RA
- 离组成员:PhD -> Master -> RA
状态角标颜色:
- 蓝色:
在读 / 在职(Current / Active) - 绿色:
已毕业 / 已离开(Alumni / Former)
项目模块采用“每个项目一个目录 + 中英文各两篇 Markdown(概览/背景)”的结构。
目录结构:
src/content/projects/<slug>/
overview_cn.md
overview_en.md
background_cn.md
background_en.md
说明:
<slug>会作为项目详情页路径:/projects/<slug>/与/en/projects/<slug>/overview_*用于“项目概览”区块background_*用于“背景与目标”区块- 正文是标准 Markdown,支持图片、列表、代码块等
overview 文件支持可选 frontmatter(建议写):
title: "Project Orion"
tag: "Embodied AI"
status: "进行中"
links:
repo: "https://github.com/xxx"
demo: "https://example.com/demo"
paper: "https://example.com/paper"显示逻辑:
- 详情页固定保留:项目概览、背景与目标
links三项(repo/demo/paper)全部可选- 三项都不写:
Links区块不显示 - 只写某几项:只显示对应按钮
- 列表卡片只显示上方 badge 状态,不再重复显示“项目状态:xxx”文案
将项目图片放到:
public/prj/
在项目 markdown 里引用:
或者也可以单独一个项目创建一个文件夹方便管理
- 新建目录:
src/content/projects/my-new-project/ - 放四个文件:
overview_cn.md、overview_en.md、background_cn.md、background_en.md - 在
overview_cn.md / overview_en.md顶部填title/tag/status/links(可选) - 正文写 Markdown,图片放
public/prj后用/prj/xxx.png引用 - 运行
npm run build与npm run preview验证
论文内容使用 Astro Content Collections,文件位置:
src/content/papers/*.md
每篇 paper 的 frontmatter 最小模板(仅必填):
year: 2025
title: "Embodied Skill Transfer with Sparse Demo"
venue: "ICRA"完整模板(可选字段全部展示):
---
year: 2025
title: "Embodied Skill Transfer with Sparse Demo"
venue: "ICRA"
abstract: |
We study skill transfer with sparse demonstrations and propose a lightweight pipeline
that improves generalization across tasks.
links:
online: "https://example.com/paper"
pdf: "/papers/embodied-skill-transfer.pdf"
project: "https://doubleducklab.com/projects/embodied-skill-transfer"
code: "https://github.com/nightt5879/DoubleDuckLab"
bibtex: |
@inproceedings{demo2025,
title={Embodied Skill Transfer with Sparse Demo},
author={First Author and Second Author},
booktitle={ICRA},
year={2025}
}
---字段说明:
- 必填:
year、title、venue - 可选:
abstract、links、bibtex links子字段全部可选:online、pdf、project、code
详情页显示规则:
- 不写
abstract:不显示 Abstract/摘要 区块 links四项都不写:不显示 Links 区块links只写某一项:仅显示对应按钮- 不写
bibtex:不显示 Citation (BibTeX) 区块
links.pdf 支持两种写法:
- 外链:
https://... - 站内静态路径:
/papers/xxx.pdf
如果使用站内路径,请把 PDF 文件放到:
public/papers/xxx.pdf
新闻模块采用“每条新闻一个目录 + 中英文各一篇 Markdown”的逻辑。
你只要按下面 4 步操作,就会自动出现在新闻列表和详情页。
src/content/news/<slug>/
<slug> 会直接作为详情页路径:
- 中文:
/news/<slug>/ - 英文:
/en/news/<slug>/
示例:
src/content/news/2026-02-20/
src/content/news/<slug>/
实验室春季招新启动_cn.md
Spring_recruitment_started_en.md
命名规则:
- 中文文件必须以
_cn.md结尾 - 英文文件必须以
_en.md结尾 - 文件名前半部分会作为该语言标题(
_会自动转空格)
也就是说,上面示例最终标题会是:
- 中文标题:
实验室春季招新启动 - 英文标题:
Spring recruitment started
正文可以直接使用 Markdown 语法:
- 段落、标题、列表
- 图片、链接
- 代码块、引用等
可选 frontmatter(推荐保留 date):
date: "2026-02-20"说明:
date可选;不写时会尝试从目录名推断(如2026-02-20)- 中英文正文互相独立,可分别编辑
建议目录:
public/news/
在 Markdown 里这样写:
与project一样,是可以分具体的小文件,方便进行管理
- 只放了
_cn.md或只放了_en.md:该新闻不完整。 - 文件名后缀写成
_zh.md:不会被识别,必须是_cn.md。 - 图片不显示:确认路径是
/news/xxx.png,并且文件真实位于public/news/xxx.png。
推荐使用 Cloudflare Pages。
构建命令:
npm run build
输出目录:
dist
上面指令就完成了网站的静态编译,接下来会从0开始完成使用cloudflare pages进行配置,具体请点这里
计划中的功能:
- 可视化编辑主页元素
- 自动通过Google scholar抓取论文
- 更加0代码基础的可视化编辑后台(优先本地)
欢迎提交 Issue 或 Pull Request。
MIT License
DoubleDuckLab 来源于中山大学的一个网络昵称 “双鸭山大学”。
项目旨在为科研团队提供一个简单、现代、易维护的官网模板。
