Skip to content

Latest commit

 

History

History
162 lines (124 loc) · 5.18 KB

File metadata and controls

162 lines (124 loc) · 5.18 KB

NYCU Human-AI & Creative Computing (HAIX) Lab Website

This site is a Hugo website with a Homepage and People pages:

  • Homepage sections: News, Research, Info
  • Dedicated People page: /people/, with profile pages at /people/<username>/
  • Manual people photos with local WebP assets and WebP placeholders
  • Spreadsheet/CSV-driven people, news, publications, and research areas
  • Lab branding and logo
  • SEO-ready static rendering for homepage and people profile pages (/people/<username>/)

Run locally

python3 scripts/sync_sheet.py --fetch --generate-og
hugo server

SEO and static profile generation

To generate all SEO pages/data from current CSV files:

python3 scripts/sync_sheet.py --generate-og

To fetch latest Google Spreadsheet CSV first:

python3 scripts/sync_sheet.py --fetch --generate-og

Generated outputs:

  • content/people/*.md (profile pages routed as /people/<username>/)
  • data/generated/*.json (server-rendered homepage content)
  • static/og/*.webp (people-specific OG images converted to WebP)

SEO coverage now includes:

  • Unique title + description per page
  • og:* + twitter:* tags per page (og:image uses local WebP assets)
  • Canonical URLs per page
  • robots.txt + sitemap.xml
  • Structured data (Organization, Person, ItemList/ScholarlyArticle)

Data source setup (Google Sheet or CSV)

Update:

static/data/sources.json

Current spreadsheet:

  • https://docs.google.com/spreadsheets/d/1_L3tFxWwN1jLGDb94X7ewO4VMo9p0q9jvubQ96vutUI/edit
  • Sheet tabs / gid:
    • people0
    • publications313564106
    • news1707205392
    • research1173471225

Recommended config for this project:

{
  "peopleCsvUrl": "https://docs.google.com/spreadsheets/d/1_L3tFxWwN1jLGDb94X7ewO4VMo9p0q9jvubQ96vutUI/export?format=csv&gid=0",
  "publicationsCsvUrl": "https://docs.google.com/spreadsheets/d/1_L3tFxWwN1jLGDb94X7ewO4VMo9p0q9jvubQ96vutUI/export?format=csv&gid=313564106",
  "newsCsvUrl": "https://docs.google.com/spreadsheets/d/1_L3tFxWwN1jLGDb94X7ewO4VMo9p0q9jvubQ96vutUI/export?format=csv&gid=1707205392",
  "researchCsvUrl": "https://docs.google.com/spreadsheets/d/1_L3tFxWwN1jLGDb94X7ewO4VMo9p0q9jvubQ96vutUI/export?format=csv&gid=1173471225",
  "peopleLocalCsv": "/data/people.csv",
  "publicationsLocalCsv": "/data/publications.csv",
  "newsLocalCsv": "/data/news.csv",
  "researchLocalCsv": "/data/research.csv"
}

If remote CSV fails, the site automatically falls back to local CSV files.

Important:

  • Use .../export?format=csv&gid=... URLs, not gviz URLs.
  • Keep row 1 as exact header names (for example name, degree, year, title, authors, date, content).
  • Spreadsheet must be shared as viewable by the website runtime (for public site, usually "Anyone with the link can view").

CSV columns

People (people.csv)

Required:

  • name

Recommended:

  • degree (e.g., Master, PhD)
  • year (cohort/admission year, e.g., 2024, 2025)
  • role
  • email
  • github
  • orcid
  • scholar (Google Scholar URL)
  • website
  • photo (e.g., /images/people/alice.webp)
  • description
  • tags (people-defined tags for People filtering; separate multiple tags with ,, ;, /, |, , or )
  • username (URL slug for modal route, e.g., grace)
  • profile_markdown (popup content, supports new lines, headings #~######, links, lists, and images ![alt](url))

Photo fallback order:

  1. photo
  2. /images/people/<username>.webp when a matching local file exists
  3. /images/people/people-placeholder.webp

People route behavior:

  • People list page is available at /people/
  • People profile pages are generated at /people/<username>/
  • Short links /<username>/ are generated as aliases and redirect to /people/<username>/
  • Unknown paths still redirect through static/404.html

News (news.csv)

Required:

  • date
  • content or title

Recommended:

  • title
  • content (supports [label](https://example.com) and plain https://... links)
  • link_url
  • link_text

Publications (publications.csv)

Required:

  • title

Recommended:

  • key (stable identifier, e.g., omniobserve; do not change when title changes)
  • authors
  • author_usernames (comma-separated People usernames matching authors, e.g., alice,bob,grace)
  • proceedings
  • year
  • doi (raw DOI or full URL)
  • thumbnail (e.g., /images/publications/paper1.webp)
  • pdf
  • video (e.g., YouTube URL)
  • website
  • award

Research (research.csv)

Required:

  • topic (or title)

Recommended:

  • description
  • order (numeric sort order, e.g., 1, 2, 3)

Image replacement

  • Lab logo: update static/images/haix-logo.svg; rendered pages and favicon both use this source vector. Keep static/images/haix-logo.webp only as a raster fallback asset.
  • Group photo: replace static/images/group-photo.webp
  • People photos: add files under static/images/people/ and set CSV photo path
  • News data: update static/data/news.csv or set newsCsvUrl in static/data/sources.json
  • Publication thumbnails: add files under static/images/publications/ and set CSV thumbnail path
  • Research data: update static/data/research.csv or set researchCsvUrl in static/data/sources.json