个人学习知识库博客,使用原生 HTML、CSS 和 JavaScript 构建,Markdown 文件作为笔记内容源。index.html 是个人首页,about.html 是独立的关于我页面,library.html 是四大知识库入口页,category.html?category=... 是单个知识库的独立层级目录与笔记页面。
发布前会通过 scripts/build-static.mjs 生成 dist 静态产物目录。
mcp-server/ 是 Power Notes 的本地 MCP 目标端。它只接收标准化 NotePackage,不读取或管理 Obsidian、uTools 等来源 MCP。
- 复制
mcp-server/config/sources.example.json为mcp-server/config/sources.json; - 只填写 Power Notes 目标仓库的绝对路径;
- 在
mcp-server目录执行npm install; - 在 Agent 的 MCP 配置中用
node mcp-server/src/server.mjs以 stdio 启动; - 由来源 MCP 和 Agent 先生成标准 Markdown 输入,再调用
preview_note,确认后传入approved: true调用import_note。
MCP Server 默认只写入工作区,不自动 commit、push 或创建 Pull Request。导入索引是 agent-notes.js,与人工维护的 notes.js 分开。
python -m http.server 4173然后打开 http://127.0.0.1:4173/index.html 查看个人首页,打开 http://127.0.0.1:4173/about.html 查看关于我页面,打开 http://127.0.0.1:4173/library.html 进入四大知识库入口,或打开 http://127.0.0.1:4173/category.html?category=embedded 查看嵌入式知识库。
.github/workflows/deploy.yml 会在推送到 main 或手动触发时:
- 检查全部 JavaScript 文件语法;
- 构建并检查
dist静态产物和 Sites 配置文件; - 通过 GitHub Pages 发布
dist。
Pull Request 只执行校验,不会直接发布生产站点。
笔记文件支持以下 fenced code block:
```mermaid
flowchart LR
A[输入] --> B[处理] --> C[输出]
```
```echarts
{"xAxis":{"type":"category","data":["A","B"]},"yAxis":{},"series":[{"type":"bar","data":[12,20]}]}
```
```c
int main(void) { return 0; }
```
```json
{
"name": "Power Notes",
"enabled": true
}
```
行内公式支持 `$E = mc^2$` 或 `\(E = mc^2\)`;独占一行的块级公式支持:
```markdown
$$
\int_0^1 x^2\,dx = \frac{1}{3}
$$
```独占一行的图片使用标准 Markdown 图片语法:
Mermaid、ECharts 和 KaTeX 只在当前笔记确实包含对应内容时按需加载;外部渲染库加载失败时会保留 Mermaid、ECharts 或 LaTeX 源码,避免笔记内容消失。JSON 代码块支持 json 和 jsonc 语言标记。
使用导入器可以把 Deep-In-Embedded 的 Markdown 笔记按原仓库层级加入现有四大知识库:开发板、操作系统、常用驱动、通信协议和中间件归入“嵌入式”;嵌入式项目文档归入“软件工程”;必备开发工具和笔记系统归入“工具与方法”。“思考与随笔”不强行放入不匹配的技术笔记。
node scripts/import-deep-in-embedded.mjs --source=..\Deep-In-Embedded-source
node scripts/build-static.mjs导入器会记录源仓库提交号,并在每篇笔记顶部保留来源链接。图片文件不会复制到当前站点仓库;本次导入将图片引用重写为源仓库固定提交的 GitHub Raw 地址,因此 Git 只保存 Markdown 和索引文件,避免大量二进制文件阻塞上传。后续源仓库更新时重新执行导入器即可刷新内容和固定提交地址。
这种方式依赖源仓库保持公开且可访问。如果未来需要完全独立于源仓库长期保存图片,再将图片迁移到 Git LFS、对象存储或独立资源仓库,并把导入器的图片地址策略切换到该资源域名。