hadipourh/hadipourh.github.io
GitHub: hadipourh/hadipourh.github.io
一个面向科研人员的自动化静态学术网站模板,支持从 DBLP 和 GitHub 自动同步学术成果。
Stars: 0 | Forks: 0
# 学术网站
一个使用 Astro 构建的学术网站,具备自动内容更新功能和简洁、专业的设计。
## 概述
本网站作为一个专业的学术平台,专为研究人员、学者和科学家设计。它提供简洁、响应式的界面,用于展示研究、出版物、简历和专业活动,同时保持高标准的安全性和自动化的内容同步。
## 技术栈
- **框架**: Astro v5.x(带有视图过渡的静态生成)
- **样式**: TailwindCSS + DaisyUI(32 种主题及自定义赛博朋克调色板)
- **内容**: 带有 frontmatter 验证的 Markdown + JSON 数据集
- **数学公式**: 使用 MathJax 3.x 进行公式渲染
- **安全**: 多层内容过滤和速率限制
- **自动化**: 使用 GitHub Actions 进行内容更新和部署
- **联系系统**: 集成 n8n webhook 并通过 Telegram 发送
- **托管**: GitHub Pages(静态部署)
## 主要功能
- 自动获取出版物、项目、演讲和简历数据
- 适用于简历各部分的专业图标系统(单色 SVG,荣誉奖项支持 emoji 备选)
- 亮/暗模式下感知无障碍访问的高对比度企业/夜间主题
- 带有安全防护和 Telegram 发送功能的交互式“快速消息终端”
- 自动生成 RSS feed、sitemap 和 robots 规则以保障 SEO 健康
## 快速开始
1. **克隆并安装**
git clone
cd mywebsite
npm install
2. **开发**
npm run dev
3. **构建生产版本**
npm run build
## 配置
### 个人信息 (src/settings.ts)
配置您的个人详细信息、研究领域和社交媒体链接:
```
export const profile = {
fullName: "Your Name",
title: "Your Title",
institute: "Your Institution",
research_areas: ["Area 1", "Area 2"],
// ... additional settings
};
```
### 简历数据 (src/data/cv.ts)
核心简历部分(经验、教育、技能、荣誉等)存储在 `src/data/cv.ts` 中,并且可以通过 CV 解析脚本从您的 LaTeX CV 自动更新。出版物不再在此处硬编码——它们是从 DBLP 自动生成的(见下文)。
### 自动生成的出版物 (src/data/publications.json)
出版物通过 `scripts/update-publications.js` 从 DBLP 自动同步,并存储在 `src/data/publications.json` 中。各个页面(首页、CV、论文)直接使用此 JSON。更新脚本每 6 天自动运行一次,也可以手动触发。
### 专业图标映射 (src/data/researchIcons.ts)
简历各部分和研究领域引用语义化的图标键。图标系统使用来自 `src/assets/social-icons/` 的 SVG 资产,以保持一致、专业的外观。
## 内容管理
### 博客文章
- **位置**: `src/content/BlogPosts/`
- **格式**: 带有 frontmatter 的 Markdown
- **必填字段**: 标题 (title)、日期 (date)、摘要 (excerpt)
- **可选字段**: 标签 (tags) (数组)
**示例文章结构:**
```
---
title: "Research Update"
date: "2024-09-08"
excerpt: "Brief description of the post"
tags: ["research", "cryptography"]
---
Your markdown content here with MathJax support:
$$E = mc^2$$
```
### 数学内容
- **引擎**: MathJax 3.x
- **行内公式**: `$equation$`
- **块级公式**: `$$equation$$`
- **LaTeX 支持**: 完整的 LaTeX 数学符号(在文章中渲染,并在导入简历时被调用)
## 自动化功能
网站包含几个用于内容管理的自动化脚本:
### 更新出版物
```
npm run update:publications # Updates from DBLP API
```
### 管理演讲
```
npm run update:talks # Syncs from GitHub repository
```
### 同步项目
```
npm run update:projects # Fetches from GitHub API
```
### 更新 CV
```
npm run update:cv # Parses CV.tex and refreshes src/data/cv.ts
```
### 所有更新
```
npm run update:all # Runs all update scripts
```
### GitHub Actions 自动部署设置
网站通过 GitHub Actions 每 6 天自动更新内容并进行部署。要启用此功能:
1. **创建个人访问令牌**:
- 前往 GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
- 点击 "Generate new token (classic)"
- 将其命名为 "Website Auto Deploy"
- 设置有效期(建议:1 年)
- 选择范围:
- ✅ `repo` (所有子范围)
- ✅ `workflow` (用于触发部署工作流)
- 点击 "Generate token" 并**立即复制它**
2. **将 PAT 添加为仓库密钥**:
- 前往仓库的 Settings → Secrets and variables → Actions
- 点击 "New repository secret"
- 名称: `PAT_TOKEN`
- 值: 粘贴您的 PAT
- 点击 "Add secret"
3. **工作原理**:
- `update-content.yml` 工作流按计划运行(每 6 天)
- 从外部来源更新出版物、演讲和项目
- 使用 PAT 提交更改(而不是默认的 `GITHUB_TOKEN`)
- PAT 认证的 push 操作会触发 `deploy.yml` 工作流
- 站点自动重新构建并部署到 GitHub Pages
**注意**:之所以需要使用 PAT 而不是 `GITHUB_TOKEN`,是因为 GitHub 阻止默认令牌触发其他工作流(这是防止递归运行的安全特性)。
## 安全功能
### 终端联系系统
- **速率限制**: 消息发送间隔 5 秒
- **内容过滤**: 多层 XSS 和注入防护
- **编码检测**: URL 和 HTML 实体解码
- **消息验证**: 长度限制和模式匹配
- **请求安全**: 超时和指纹识别
### 安全措施
- **输入净化**: 多层编码检测
- **速率限制**: 客户端和服务器端双重保护
- **内容验证**: 可疑模式检测
- **错误处理**: 安全的错误消息提示
- **监控**: 内置滥用检测
## 维护
### 常规更新
1. **内容同步**(通过 GitHub Actions 每 6 天自动执行)
2. **安全补丁**(监控漏洞)
3. **依赖项**(定期进行 npm audit 和更新)
4. **性能监控**(构建时间和站点速度)
### 手动维护任务
- **博客文章**: 在 `src/content/BlogPosts/` 中添加新内容
- **简历更新**: 更新 `public/cv/CV.tex` 并运行 `npm run update:cv` 以同步更改
- **设置**: 修改 `src/settings.ts` 以更改个人资料
- **主题**: 在 `tailwind.config.mjs` 中自定义(支持 32 种 DaisyUI 主题)
### 部署准备
```
npm run build # Generate static files
npm run preview # Test production build locally
```
### 文件结构
```
src/
components/ # Reusable UI components
content/ # Blog posts and content collections
data/ # CV and research data
layouts/ # Page layouts
pages/ # Route pages
lib/ # Utility functions
assets/ # Static assets
public/
images/ # Public images
cv/ # CV files
scripts/ # Automation scripts
```
## 故障排除
### 常见问题
- **构建错误**: 检查博客文章中内容的 frontmatter 验证
- **MathJax 不渲染**: 验证 LaTeX 公式语法
- **终端联系功能失效**: 检查 n8n webhook 连接
- **自动化失败**: 确认是否已在仓库机密中设置 PAT_TOKEN
- **出版物更新失败**: 检查 DBLP API 的可用性
### 调试命令
```
npm run build # Check for build errors
npm run preview # Test production build
npm run update:all # Manually trigger all content updates
```
## 贡献
在进行更改时:
1. 使用 `npm run dev` 进行本地测试
2. 使用 `npm run build` 验证构建
3. 通过终端测试检查安全性
4. 根据需要更新文档
5. 遵循提交信息规范
## 许可证
鼓励用于学术用途和个人作品集。商业用途请查看特定的许可条款。
标签:Astro, TailwindCSS, 个人网站, 学术主页, 防御加固, 静态网站