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, 个人网站, 学术主页, 防御加固, 静态网站