sebastienrousseau/sebastienrousseau.github.io

GitHub: sebastienrousseau/sebastienrousseau.github.io

一个基于 Rust 和 Python 构建的多语言静态站点流水线,用于发布金融科技、应用 AI 与后量子密码学领域的长篇研究内容。

Stars: 1 | Forks: 0

# sebastienrousseau.com 本仓库托管了 Sebastien Rousseau 网站的静态站点 pipeline,该 pipeline 编译了关于应用 AI、支付和密钥的相关研究,并提供二十八种语言支持。 我们使用 Shokunin 静态站点生成器构建网站,并运行自动化的 postbuild 脚本来优化页面。 ## 目录 本节概述了本仓库的主要主题和指南。 - [快速开始](#quick-start) - [仓库导览](#repository-tour) - [Pipeline 概览](#pipeline-overview) - [构建阶段](#build-stages) - [Postbuild 流程](#postbuild-passes) - [国际化](#internationalisation) - [安全态势](#security-posture) - [边缘路由 Worker](#edge-routing-worker) - [WASM 实验室](#wasm-labs) - [Schema.org 覆盖范围](#schemaorg-coverage) - [AI 与 Agent 发现](#ai-and-agent-discovery) - [开发](#development) - [CI 门禁](#ci-gates) - [部署](#deployment) - [配套文档](#companion-docs) - [License](#license) ## 快速开始 您只需三个简单的命令行步骤即可安装工具并构建网站。 ``` git clone https://github.com/sebastienrousseau/sebastienrousseau.github.io.git cd sebastienrousseau.github.io cargo install ssg --locked pip install -r requirements.txt ./build.sh ``` 一次干净的构建会在十二秒内完成,并输出覆盖二十八种语言的数千个页面。 | 工具 | 配置 | 用途 | |---|---|---| | `Rust` | 稳定版工具链 | 用于运行静态站点编译器 | | `Python` | 3.12 版本 | 运行 postbuild 脚本 | | `Node.js` | 20 或更高版本 | 运行路由测试 | | `Git` | 标准客户端 | 处理代码版本控制 | 在运行构建之前,请确保您的签名密钥处于激活状态。 ## 仓库导览 文件夹大纲将源文章、布局和 python 构建脚本分离开来,以保持工作区的整洁。 - `_posts/` 存放源文章 - `_layouts/` 存放页面模板 - `_data/` 存放 locale 文件 - `scripts/` 包含构建脚本 - `tests/` 存放测试套件 - `project-docs/` 包含指南文件 - `workers/` 存放路由代码 - `labs/` 存放 Rust → WebAssembly 演示 - `public/` 存储构建输出(已被 gitignore;作为 CI 产物部署) - `sigstore-bundles/` 存储已提交的文章签名捆绑包 每个文件夹只负责单一任务,以便于进行更新。 ## Pipeline 概览 静态站点的构建流程以线性的阶段顺序转换内容并应用安全检查。 ``` %%{init: {'theme':'neutral'} }%% flowchart TB subgraph SRC["Source"] EN["_posts/*.md
83 English"] T["_posts/<lang>/*.md
1,728 translations"] L["_layouts/*.html
11 templates"] D["_data/i18n/<lang>/
28 locale dirs"] end subgraph SSG["SSG Compile"] COMP["ssg
(Rust binary)"] end subgraph GEN["Generators (Python)"] BT["build_topics.py"] BR["build_translations.py"] BF["build_lang_feeds.py"] BA["build_agent_api.py"] end subgraph POST["Postbuild (Python)"] PB["postbuild.py
25 single-page passes"] end subgraph CI["CI Gates"] G["13 validation gates
(pytest · Pa11y · CSP · RTL)"] end subgraph OUT["Output"] P["public/
1850 pages"] end EN --> COMP L --> COMP COMP --> BT D --> BR BR --> BF BF --> BA BA --> PB PB --> CI CI --> P ``` 该 pipeline 以源文件开始,以优化后的网页结束。 ## 构建阶段 我们使用六个主要的生成器步骤,将英文源草稿转换为完全翻译的页面。 首先,编译器根据布局文件构建英文页面。 其次,主题工具生成主题着陆页。 第三,翻译工具为所有活动的 locale 创建页面。 第四,Feed 工具写入 RSS 和 Atom feed。 第五,Agent 工具为搜索工具构建 JSON feed。 第六,postbuild 工具运行最终的页面检查。 ## 输入和输出 该 pipeline 读取 markdown 文章和 JSON locale 字符串,以构建优化的 HTML 页面。 输入内容包括位于 locale 文件夹中的英文文章和翻译字符串。 输出文件夹存放编译后的 HTML 页面、图像、站点地图和 Feed。 ## Postbuild 流程 postbuild 脚本运行二十五个独立的检查,以更新页面标签和安全规则。 这些检查会添加作者元数据、尺寸、引用列表、站点地图和脚本哈希。 有关每次优化传递的详细信息,请参阅 postbuild 指南。 ## 国际化 我们通过使用翻译映射存根和语言检查来支持二十八种语言。 注册表文件包含显示名称和标志切换器设置。 所有二十八种语言均在实时网站上处于活动状态。 ## 翻译 Pipeline 翻译工具在本地终端会话中运行,将存根翻译为活动的语言。 ``` %%{init: {'theme':'neutral'} }%% sequenceDiagram autonumber participant SSG as Static Site Generator participant FS as "public//" participant BT as build_translations.py participant LR as _lang_registry.py participant J as "_data/i18n//*.json" participant Out as "public//" SSG->>FS: Emit English HTML BT->>LR: load_languages() loop for each active non-EN lang BT->>J: load strings, labels, … BT->>BT: build_chrome_patches(lang) — auto-gen 30+ patches from strings.json BT->>FS: Read EN page shell BT->>BT: apply auto-gen + manual chrome patches BT->>BT: apply body patches (home or static) BT->>BT: rewrite EN slug links → slugs BT->>BT: set , og:locale, JSON-LD inLanguage BT->>BT: inject hreflang block (28 entries + x-default) BT->>Out: write public///index.html end ``` 该脚本会复制英文页面内容,并自动替换菜单字符串。 ## 按语言的 CI 门禁 七项一致性检查确认每个活动的翻译都与参考的英文页面数量匹配。 这些检查会验证网站的语言文件、作者详细信息和结构元素。 任何失败都会停止构建,需要手动修复才能通过。 ## 安全态势 该网站实施了混合密钥、严格的脚本内容规则以及已签名的 git 提交,以保护访问者。 除非脚本携带在构建期间计算出的唯一哈希值,否则我们将阻止内联脚本。 我们防御供应链黑客攻击的手段依赖于包列表和资产哈希。 边缘服务器预加载传输规则以阻止安全降级。 ## 边缘路由 Worker Cloudflare Worker 处理语言路由,并在边缘服务器上设置安全响应标头。 该 worker 匹配访问者标头,将他们路由到首选语言。 它还设置安全标头以实现传输安全、referrer 规则、权限和框架限制。 ## WASM 实验室 我们将 Rust crate 编译为 WebAssembly,以直接在用户浏览器中提供交互式工具。 每个项目都构建一个可在浏览器中安全加载的独立包。 这些页面在严格的安全策略下运行,以安全地执行代码。 ## 威胁模型 威胁模型图概述了平台的安全边界和防御措施。 ``` %%{init: {'theme':'neutral'} }%% graph TB subgraph EXT["External"] V[/"Visitor"/] AI[/"AI crawler"/] ATK[/"Attacker"/] end subgraph EDGE["Cloudflare edge"] PQ["X25519MLKEM768"] CFW["lang-router Worker"] TR["Transform Rules"] CDN["CDN cache"] end V --> PQ AI --> PQ ATK --> PQ PQ --> CFW CFW --> TR TR --> CDN ``` 该系统经过强化,可抵御解密威胁、页面劫持和供应链篡改。 ## 已交付的功能 该实时网站向读者提供数千个快速、安全且易于访问的页面。 我们支持可变字体、边缘压缩和预加载规则,以快速加载页面。 这些页面在可访问性和 SEO 检查中均获得满分。 ## Schema.org 覆盖范围 每个页面都带有丰富的 schema 块,以帮助搜索引擎和 AI 工具索引网站。 这些块定义了作者、文章类型、面包屑和引用来源。 我们在每次构建运行时都会自动检查这些 schema。 ## AI 与 Agent 发现 我们发布插件规范和文本索引,以协助 AI 爬虫和 Web 客户端。 这些资源允许 AI 爬虫干净地解析内容。 这些 Agent endpoint 为搜索工具公开了文章和主题。 ## 开发 您可以通过运行构建脚本并在浏览器中检查页面来在本地测试更改。 - 步骤 1:运行构建脚本来编译网站。 - 步骤 2:在您的本地主机上提供编译后的页面服务。 - 步骤 3:打开浏览器页面以检查布局。 - 步骤 4:运行测试命令以验证所有测试是否保持绿色(通过)。 这可确保您的更改在推送之前是安全的。 ## CI 门禁 十三项自动测试会验证所有文件是否正确,然后更改才会合并到分支中。 这些门禁会检查页面计数、搜索索引、布局规则和备用链接。 集成运行器会阻止任何未通过这些检查的 Pull Request。 ## 部署 当您推送到 main 分支时,该网站会自动部署到 GitHub Pages。 CI 构建站点,将 `public/` 作为 Pages artifact 上传,并由 `actions/deploy-pages` 发布。 Cloudflare 作为 CDN 和边缘安全层位于 GitHub Pages 源站之前。 ## 当本仓库不符合您的需求时 如果您只需要单语言站点,则可以剥离翻译脚本。 通过禁用活动的 locale,核心 pipeline 适用于单语言站点。 您可以自定义 HTML 布局和 CSS 文件以匹配您自己的品牌。 ## 配套文档 project-docs 文件夹包含关于架构、发布和安全性的详细指南。 - [架构](project-docs/architecture.md) - [CI 门禁](project-docs/ci.md) - [国际化](project-docs/i18n.md) - [Postbuild 流程](project-docs/postbuild.md) - [发布](project-docs/publishing.md) - [Schema](project-docs/schemas.md) - [安全](project-docs/security.md) - [Sigstore](project-docs/sigstore.md) - [每日发布](project-docs/daily-publishing.md) - [SEO 规范](project-docs/web-performance-seo-spec.md) 阅读这些文件以了解更多关于平台设置的信息。 ## License 本项目是开源的,并在 Apache-2.0 许可证下提供。 该代码库可免费修改和共享,供个人或商业使用。
标签:AI工具, MITM代理, Rust, WebAssembly, 可视化界面, 后端开发, 后量子密码学, 国际化, 无障碍访问, 程序员工具, 网络流量审计, 逆向工具, 静态网站生成器