en un clic
gmai-publication
// Add or update publications on the GMAI Lab Jekyll website. Handles _data/publications.yml, teaser images, BibTeX, and optional news items. Use when adding a new paper, updating metadata, or fixing publication entries.
// Add or update publications on the GMAI Lab Jekyll website. Handles _data/publications.yml, teaser images, BibTeX, and optional news items. Use when adding a new paper, updating metadata, or fixing publication entries.
Add, update, remove, or move team members on the GMAI Lab Jekyll website. Handles _data/team.yml, EN/ZH profile pages, team photos, and Past Members. Use when adding a new lab member, updating someone's info, or archiving a departed member.
Add, update, or remove news items on the GMAI Lab Jekyll website. Handles _data/news.yml with bilingual support (EN/ZH) and category badges. Use when posting announcements about papers, awards, events, or new members.
Add, update, or remove research projects on the GMAI Lab Jekyll website. Handles _data/projects.yml, project thumbnails, Starship subpages, and landing page Featured Research sections. Use when adding a new project, updating project info, or linking a project to the homepage.
Create, update, or delete a "Starship" project subpage for the GMAI Lab Jekyll website (repo: uni-medical/gmai-web). Handles both English and Chinese versions, uploads images, and updates the homepage landing panel link. Use when adding a new research project page, modifying an existing one, or removing it. Covers the full file chain: pages/projects/{slug}.md · pages/zh/projects/{slug}.md · index.md · zh/index.md · assets/images/projects/{slug}/.
| name | gmai-publication |
| description | Add or update publications on the GMAI Lab Jekyll website. Handles _data/publications.yml, teaser images, BibTeX, and optional news items. Use when adding a new paper, updating metadata, or fixing publication entries. |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep"] |
Trigger phrases:
_data/publications.yml Master publication data (newest first)
_includes/pub_card.html Publication card component
assets/images/teasers/ Teaser thumbnails for papers
_data/news.yml Optional: news item for accepted papers
pages/publications.md EN publications page (with filtering)
pages/zh/publications.md ZH publications page
_config.yml site.lab.pi_last = "He" (auto-bold PI)
Ask the user for each field. Mark required with *.
1. * Paper title (exact)?
e.g. "SlideChat: A Large Vision-Language Assistant for Whole-Slide Pathology Image Understanding"
2. * Author list (comma-separated, full names)?
e.g. "Ying Chen, Guoan Wang, ..., Junjun He"
Note: PI "Junjun He" will be auto-bolded in rendering.
3. * Venue?
[CVPR / ICCV / ECCV / NeurIPS / MICCAI / AAAI / IEEE JBHI / arXiv / other]
4. * Year?
e.g. 2025
5. Note? (optional)
e.g. "Oral", "Spotlight", "Best Paper", or leave empty
6. * Abstract (English, 3-5 sentences)?
Summarize the key contribution, method, and results.
7. Abstract (Chinese)?
If not provided, auto-translate from English.
8. Keywords (lowercase, comma-separated)?
Used for client-side filtering. e.g. "computational pathology, vision-language model"
9. Links — provide any available:
- arXiv / paper URL?
- GitHub code URL?
- HuggingFace model/paper URL?
- Dataset URL?
- Project page / demo URL?
10. Teaser image file path?
Recommended: 16:9 or 4:3, ≤300KB, PNG preferred.
Will be placed in assets/images/teasers/
11. BibTeX entry?
Paste from Google Scholar. Will be stored as YAML literal block.
12. Add a news item for this paper? [y/n]
If yes:
- Headline (English)? e.g. "SlideChat accepted at CVPR 2025"
- Headline (Chinese)?
- Body (English, 1-2 sentences)?
- Body (Chinese)?
cp {user_path} assets/images/teasers/{paper_slug}.png
Naming: derive slug from paper name, e.g. "slidechat.png", "gmai_vl.png".
_data/publications.ymlAdd new entry at the top (newest first):
- title: "Paper Title Here"
authors: "Author One, Author Two, ..., Junjun He"
venue: "CVPR"
year: 2025
note: "Oral"
abstract: >
English abstract text here, 3-5 sentences.
abstract_zh: >
中文摘要文本。
teaser: "/assets/images/teasers/paper_slug.png"
keywords: "keyword1, keyword2, keyword3"
links:
paper: "https://arxiv.org/abs/XXXX.XXXXX"
code: "https://github.com/uni-medical/repo"
huggingface: "https://huggingface.co/papers/XXXX.XXXXX"
dataset: "https://huggingface.co/datasets/..."
bibtex: |
@inproceedings{author2025title,
title={Paper Title},
author={Author One and Author Two},
booktitle={CVPR},
year={2025}
}
Critical rules:
code: "" or dataset: ""note: "" is OK (metadata field, not rendered as button)| — indent 4 spacesteaser path must start with /assets/images/teasers/If user wants news, prepend to _data/news.yml:
- date: "Month Year"
category: paper
label: "New Paper"
label_zh: "新论文"
headline: "Paper accepted at VENUE YEAR"
headline_zh: "论文被 VENUE YEAR 录用"
body: "Our paper on X has been accepted..."
body_zh: "我们关于X的论文已被录用..."
bundle exec jekyll build --baseurl ""
# Check publications page renders
curl -s http://localhost:4000/publications/ | grep "Paper Title"
# Check teaser image loads
curl -s -o /dev/null -w "%{http_code}" http://localhost:4000/assets/images/teasers/{slug}.png
grep -n "title.*{keyword}" _data/publications.ymlsite.lab.pi_last ("He") in author stringabstract_zh on ZH pages, abstract on EN pageskeywords fieldPeriodically verify that venue/year data is correct for all publications, especially arXiv preprints that may have been accepted.
grep -n 'venue:.*arXiv' _data/publications.yml
For each arXiv entry, search for acceptance:
If accepted, update venue: and year: fields. Add note: if applicable (e.g. "Oral", "Spotlight").
Example: SAM-Med3D was listed as "arXiv 2023" but was actually "IEEE TNNLS 2025" with "ECCV 2024 Workshop Oral".
Ensure all projects in _data/projects.yml and landing page sections have corresponding publication entries.
publications.yml (complete set)
⊃ projects.yml / Featured Research (curated subset)
⊃ Landing page sections (top highlights)
# List all project slugs
grep "slug:" _data/projects.yml
# Cross-reference with publications
grep "title:" _data/publications.yml
Any project with a links.paper but no matching publication entry is a gap to fill.
When user doesn't provide a teaser image, download the main figure from arXiv:
curl -sL "https://arxiv.org/html/{ARXIV_ID}v{VERSION}" | grep -oP 'src="[^"]*\.(png|jpg)"' | head -3
curl -sL -o assets/images/teasers/{slug}.png "https://arxiv.org/html/{ARXIV_ID}v{VERSION}/{FIGURE_PATH}"
from PIL import Image
img = Image.open("assets/images/teasers/{slug}.png")
if img.width > 520:
ratio = 520 / img.width
img = img.resize((520, int(img.height * ratio)), Image.LANCZOS)
img.save("assets/images/teasers/{slug}.png", optimize=True)
img.save("assets/images/teasers/{slug}.webp", "WEBP", quality=85)
Alternative: Reuse existing project images from assets/images/projects/{slug}/ if available.
_data/publications.yml (top of file)"")assets/images/teasers/ (PNG + WebP)abstract and abstract_zh provided| literal block with 4-space indent_data/news.yml