roy0x01/shadownote

GitHub: roy0x01/shadownote

ShadowNote 是一款自包含的本地 Markdown 编辑与静态站点发布工具,集笔记管理、全文搜索、版本控制和多主题站点导出于一体。

Stars: 0 | Forks: 1

ShadowNote

编写、预览并发布 —— 本地进行。

CI Release Go 1.22+ MIT License

ShadowNote 是一款本地 Markdown 发布工具,用于在浏览器仪表盘中起草、预览和导出静态站点。它也可以用作研究和记笔记的工作区,用于存放可能永远不会发布的草稿、笔记和参考资料。它的工作流非常简单:在本地编写,管理笔记和资源,预览主题,并在内容准备好后导出或部署静态站点。 它作为本地仪表盘在 `127.0.0.1:3000` 上运行。内容是磁盘上的纯 Markdown 文件。搜索功能使用 SQLite FTS5。二进制文件包含所有内容 —— 主题、模板和静态站点生成器 —— 因此除了二进制文件本身之外,无需安装或配置任何东西。 ## 截图 ![仪表盘截图占位符](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/04eb3f9f29041328.png) ![预览与导出截图占位符](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3a64400e83041334.png) ## 安装 **预构建二进制文件** — 从 [发布页面](https://github.com/roy0x01/shadownote/releases/latest) 获取最新的 Linux amd64 构建版本,并将其放入你的 `$PATH` 中。 **`go install`** 需要 C 编译器,因为 `go-sqlite3` 使用 CGO: ``` go install -tags fts5 github.com/roy0x01/shadownote@latest ``` **从源码构建:** ``` git clone https://github.com/roy0x01/shadownote.git cd shadownote go build -tags fts5 -trimpath -o shadownote . ``` **当前发布产物:** Linux amd64。其他平台可以使用 Go 1.22+ 和可用的 C 编译器从源码构建。 ## 快速开始 ``` shadownote ``` 首次运行时,它会创建 `~/.shadownote/` 目录,解压内置的主题和模板,并启动仪表盘。在首次登录界面设置密码 —— 就这样。 然后在浏览器中打开 `http://127.0.0.1:3000`。 ## 工作原理 ShadowNote 有五种文档类型。该类型决定了文档是否可以出现在你的公开站点上: | 类型 | 可见性 | |---|---| | `post` | 当 `status: live` 时发布 | | `page` | 独立页面,例如关于或项目 | | `draft` | 正在进行的工作 —— 在提升状态前永不发布 | | `note` | 仅限本地 —— 无论如何都不会发布 | | `research` | 仅限本地 —— 无论如何都不会发布 | 笔记和研究内容被硬排除在静态站点生成器之外。无论状态如何,它们都不会出现在任何构建输出中。 ## 功能 **编辑器** - Markdown 编辑器,支持编写、拆分预览和专注模式 - 用于常见语法的格式化工具栏 - 带有 shell 语法高亮的实时预览 - 字数统计、阅读时间估算和光标位置显示 - 每次保存前自动创建版本快照 —— 可通过历史记录一键还原 **内容库** - 通过 SQLite FTS5 对标题、正文和标签进行全文搜索 - 按类型、状态和标签进行过滤 - 资源管理器,具有上传限制和活动内容拦截功能 - 仅发布被引用的资源,确保多余文件永远不会进入公开站点 **静态站点生成器** - 构建 文章页面、分页索引、标签页、作者页面、RSS feed 和站点地图 - 六款内置主题:`default`、`terminal`、`cipher`、`mono`、`plaintext`、`daylight` - 主题位于 `~/.shadownote/themes/` 目录下,且完全可编辑 - Mermaid 图表支持按站点开启,启用时从 CDN 加载 Mermaid **发布** - 本地预览:构建站点并将其从本地端口提供服务,以便在发布前进行审查 - 归档导出:构建站点并生成可移植的 `.tar.gz` 文件,你可以将其托管在任何地方 **安全性** - 仪表盘绑定到 `127.0.0.1` —— 默认情况下无法从你的机器外部访问 - 首次运行时使用 PBKDF2-SHA256 进行密码设置 - 默认情况下,在 Markdown 预览和已发布的渲染中禁用原始 HTML - 阻止 SVG、HTML 和 XML 资源上传 —— 无法通过资源管理器上传活动内容 - 文档版本历史意味着错误的编辑永远不会是永久性的 ## 主题 二进制文件附带了六款主题。它们的渲染效果截然不同,以适应不同的发布场景 —— 个人安全博客的阅读体验与研究笔记本或专业作品集截然不同。 | 主题 | 特征 | |---|---| | `default` | 干净、易读、通用 | | `terminal` | 等宽字体、深色、代码优先 | | `cipher` | 极简深色,带强调色 | | `mono` | 全局严格的等宽字体 | | `plaintext` | 无装饰,最大化可读性 | | `daylight` | 浅色模式,柔和对比度 | 要创建自定义主题,请复制任何现有主题并编辑 HTML 布局和 CSS: ``` cp -r ~/.shadownote/themes/terminal ~/.shadownote/themes/mytheme ``` 一个有效的主题需要包含 `layouts/base.html`、`layouts/post.html`、`layouts/list.html`、`layouts/tags.html`、`layouts/author.html` 和 `assets/blog.css`。它会立即出现在预览与导出选择器中。 ## 命令 ``` shadownote # start the dashboard (default) shadownote gui # start the dashboard explicitly shadownote build # build the static site headlessly shadownote deploy # build and run local preview or export archive shadownote version # print version ``` 使用 `SHADOWNOTE_DB` 覆盖默认的数据库路径: ``` SHADOWNOTE_DB=/path/to/shadownote.db shadownote ``` 默认数据路径: ``` ~/.shadownote/shadownote.db SQLite database ~/.shadownote/themes/ bundled themes, editable ~/.shadownote/templates/ document starter templates ~/.shadownote/content/ your Markdown documents ~/.shadownote/assets/ uploaded assets ~/.shadownote/public/ generated static site output ~/.shadownote/logs/ application logs ``` ## 运行时数据 所有内容都存放在 `~/.shadownote/` 目录下 —— 数据库、内容、资源、生成的输出、主题和日志。没有任何内容存储在远程。移动或备份整个 ShadowNote 数据只需复制一个目录: ``` cp -r ~/.shadownote ~/shadownote-backup ``` 如果你需要将数据库放在其他位置,请使用 `SHADOWNOTE_DB` 覆盖数据库路径。内容、资源和输出路径可以在设置页面中更改。 ## 许可证 MIT — 请参阅 [LICENSE](LICENSE)。
标签:EVTX分析, Go, Markdown, Ruby工具, SQLite, 多模态安全, 日志审计, 本地工具, 笔记软件, 防御加固, 静态站点生成器