Files

1 line
12 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "chenyuheee/autoblog-oss", "files": {"README.md": {"4e11016df5be502a9ebf80268975608e672a56b3": {"t": 1785746371.30788, "n": 8152, "h": "cc6f85877a0801ad", "c": "<div align=\"center\">\n\n# AutoBlog\n\n一个使用 Python 编写的轻量级静态博客生成器:将 `source/` 中的 Markdown 构建为 `public/` 下的可部署网站,可直接托管在 GitHub Pages。\n\n<!-- 仓库:ChenyuHeee/AutoBlog -->\n\n![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?style=for-the-badge&logo=python&logoColor=white)\n![License](https://img.shields.io/github/license/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Repo Size](https://img.shields.io/github/repo-size/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Top Language](https://img.shields.io/github/languages/top/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Languages](https://img.shields.io/github/languages/count/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Stars](https://img.shields.io/github/stars/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Forks](https://img.shields.io/github/forks/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Issues](https://img.shields.io/github/issues/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Commit Activity](https://img.shields.io/github/commit-activity/m/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Contributors](https://img.shields.io/github/contributors/ChenyuHeee/AutoBlog?style=for-the-badge)\n![Last Commit](https://img.shields.io/github/last-commit/ChenyuHeee/AutoBlog?style=for-the-badge)\n\n[![README 中文](https://img.shields.io/badge/README-%E4%B8%AD%E6%96%87-1f6feb?style=for-the-badge)](README.md)\n[![README EN](https://img.shields.io/badge/README-English-1f6feb?style=for-the-badge)](README_en.md)\n\n</div>\n\n## 这是什么?(给想搭博客的你)\n\nAutoBlog 用来把你写的 Markdown 文章生成一个完整的静态博客站点,并且可以一条命令部署到 GitHub Pages。\n\n你会得到:\n\n- 文章页 + 首页列表\n- 标签页、归档页、站内搜索\n- RSS + sitemap(配置 `site_url` 后自动生成)\n\n你只需要:用 Markdown 写文章,执行构建/部署命令。\n\n## 5 分钟上手:从 0 到上线\n\n### 0)准备\n\n- 安装 Python 3.10+\n- 本地有 Git\n- 有一个 GitHub 仓库(用于承载博客)\n\n### 1)克隆项目\n\n```bash\ngit clone https://github.com/ChenyuHeee/AutoBlog\n - label: 首页\n url: /\n - label: 标签\n url: /tags/\n - label: GitHub\n url: https://github.com/ChenyuHeee/AutoBlog\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\n## Desktop App (PySide6)\n\n提供一个本地桌面应用(非 Web 后台),用于:编辑 config、编辑 Markdown 并实时预览、编辑主题文件、点击构建并打开本地预览。\n\n1) 安装依赖\n\n```bash\npip install -r requirements.txt -r requirements_desktop.txt\n```\n\n2) 启动\n\n```bash\npython run_desktop.py\n```\n\n说明:\n- “构建”会复用 build.py 的逻辑生成 public/\n- “启动预览服务”会在本机起一个静态服务器,然后用系统浏览器打开\n```\n\n### 3)创建你的站点配置\n\n把示例配置复制为正式配置:\n\n```bash\ncp source/config.yaml.example.yaml source/config.yaml\n - label: 邮箱:you@example.com\n url: mailto:you@example.com\n icon: mail\n note: 学习交流欢迎来信\n - label: GitHub @YourName\n url: https://github.com/YourName\n icon: github\n\ngithub_repo: your-user/your-repo\ngithub_branch: gh-pages\ngithub_remote: origin\n\n# 关键:base_url 决定 GitHub Pages 路径\n# 1) 如果是“项目页”(https://your-user.github.io/your-repo/):\nbase_url: /your-repo/\n# 2) 如果是“个人主页”(https://your-user.github.io/):\n# base_url: /\n\n# 推荐:填上绝对站点地址以生成 RSS/sitemap 的绝对链接\n# site_url: https://your-user.github.io/your-repo/\n```\n\n### 4)写第一篇文章\n\n在 `source/posts/` 下新建一个 Markdown,例如:\n\n```markdown\n---\ntitle: \"Hello AutoBlog\"\ndate: 2025-12-29\nslug: hello\ndescription: \"我的第一篇博客。\"\n---\n\n这里写正文。\n```\n\n### 5)本地预览\n\n```bash\npython3 build.py\n provider: deepseek\n api_key: \"\" # 推荐使用环境变量 DEEPSEEK_API_KEY\n model: deepseek-chat\n endpoint: https://api.deepseek.com/v1/chat/completions\n temperature: 0.2\n max_input_chars: 6000\n max_tokens: 200\n max_output_chars: 120\n\n```bash\npython3 build.py --deploy\n```\n\n然后到 GitHub 仓库设置里启用 Pages:\n\n- Source 选择 `github_branch`(默认示例是 `gh-pages`)\n- 目录选择仓库根目录(root)\n\n几分钟后即可通过 Pages 地址访问。\n\n## 常见踩坑(最重要的 2 个)\n\n1. 页面路径不对/资源 404:优先检查 `base_url` 是否正确(项目页通常是 `/<repo>/`)。\n2. RSS / sitemap 里链接不对:补上 `site_url`(带 `https://` 且以 `/` 结尾)。\n\n## 更多功能(按需看)\n\n- 文件夹元数据:`source/posts/**/_meta.yaml` 可以批量追加 tags / 默认字段\n- 合集(collection):把一个目录折叠成首页一张合集卡片\n- AI 摘要:缺少 `description` 时可用 DeepSeek 自动生成并写回\n\n<details>\n<summary>高级配置(config.yaml 参考)</summary>\n\n权威参考:`source/config.yaml.example.yaml`(建议从它复制一份作为 `source/config.yaml` 再改)。\n\n### URL / GitHub Pages\n\n- `github_repo`:`owner/repo`,用于推导默认 Pages 地址与推送目标\n- `github_branch`:承载静态文件的分支(常用 `gh-pages`)\n- `github_remote`:本地 git remote 名称(默认 `origin`)\n- `github_remote_url`:显式指定推送地址(不想依赖本地 remote 或 `github_repo` 时用)\n- `base_url`:资源与路由前缀(项目页通常 `/<repo>/`;个人主页通常 `/`)\n- `site_url`:站点绝对地址(用于 RSS/sitemap 的绝对链接,必须以 `https://` 开头并以 `/` 结尾)\n\n### 导航栏(可选,自定义)\n\n不配置时会自动生成“首页/归档/标签/页面”。如果你想完全自定义:\n\n```yaml\nnav_links:\n - label: 首页\n url: /\n - label: 标签\n url: /tags/\n - label: GitHub\n url: https://github.com/ChenyuHeee/AutoBlog\n```\n\n### RSS / Sitemap\n\n- `rss_enabled: false`:关闭 RSS(同时会影响页面中 RSS 相关输出)\n\n### 侧栏联系方式\n\n```yaml\ncontacts:\n - label: 邮箱:you@example.com\n url: mailto:you@example.com\n icon: mail\n note: 学习交流欢迎来信\n - label: GitHub @YourName\n url: https://github.com/YourName\n icon: github\n```\n\n### 背景音乐播放器\n\n```yaml\nbackground_music:\n enabled: true\n src: media/your.mp3\n title: \"Song Title\"\n artist: \"Artist\"\n cover: media/cover.jpg\n autoplay: false\n start_muted: true\n```\n\n`src/cover` 对应的是 `source/assets/` 下的相对路径(例如文件放在 `source/assets/media/your.mp3`,这里写 `media/your.mp3`)。\n\n### AI 摘要(DeepSeek)\n\n当文章没写 `description` 时可自动生成摘要并写回 Markdown。\n\n```yaml\nai_summary:\n provider: deepseek\n api_key: \"\" # 推荐使用环境变量 DEEPSEEK_API_KEY\n model: deepseek-chat\n endpoint: https://api.deepseek.com/v1/chat/completions\n temperature: 0.2\n max_input_chars: 6000\n max_tokens: 200\n max_output_chars: 120\n```\n\n</details>\n\n## 可视化管理后台(本地 Web UI)\n\n如果你想通过界面管理 `config.yaml`、编辑文章并实时预览、以及修改主题模板/资源,可以启动本项目自带的本地管理后台。\n\n安装依赖:\n\n```bash\npip install -r requirements.txt -r requirements_admin.txt\n```\n\n启动:\n\n```bash\npython3 -m uvicorn admin.app:app --reload --port 5177\n```\n\n打开:\n\n- 管理后台:`http://127.0.0.1:5177/`\n- 构建后的站点预览:`http://127.0.0.1:5177/preview/`\n\n提示:后台会直接修改仓库里的源文件(例如 `source/config.yaml`、`source/posts/**.md`、`templates/*.html`),建议配合 Git 使用。\n\n<details>\n<summary>高级写作(Front Matter / _meta.yaml / 合集 / 置顶)</summary>\n\n### 文章 Front Matter\n\n文章(`source/posts/**/*.md`)支持 YAML Front Matter,例如:\n\n```yaml\n---\ntitle: \"我的第一篇文章\"\ndate: 2025-12-29\nslug: my-first-post\ndescription: \"一句话摘要(用于首页卡片/SEO)。\"\nexcerpt: \"可选:更短的摘要,或给 RSS/列表用。\"\ntags: [AIOps, 论文]\ndraft: false\n\n# 置顶(两种写法都支持):\npinned: true\n# 或 pinned: 10 (数字也会被当成置顶,并作为优先级参考)\npinned_priority: 0\n---\n```\n\n要点:\n\n- `tags` 支持数组,或字符串(支持逗号/分号/斜杠分隔)。\n- `draft: true` 默认不会输出(用 `python3 build.py --drafts` 才会包含)。\n- `pinned: true` 置顶;`pinned_priority` 越小越靠前;不填默认当作 `0`。\n\n### 目录级 `_meta.yaml`(批量默认值 + 批量标签)\n\n在 `source/posts/` 的任意子目录里放 `_meta.yaml`,它会对该目录及所有子目录文章生效,并且会沿目录层级叠加:\n\n```text\nsource/posts/\n _meta.yaml\n aiops/\n _meta.yaml\n intro.md\n```\n\n支持两类能力:\n\n1) `tags`:会和文章自身 `tags` 合并,去重(大小写不敏感),并且会把合并结果写回到文章 Front Matter,保证下次构建一致。\n\n2) 其它键:作为“默认值”填充到文章 Front Matter(仅当文章缺少该字段时才会填充),同样可能写回文件。\n\n示例:\n\n```yaml\ntags: [AIOps]\ndraft: false\n```\n\n### 合集(collection)\n\n在 `_meta.yaml` 中配置 `collection`,可以把一个目录折叠成首页的一张合集卡片,并生成合集列表页面。\n\n最简单:\n\n```yaml\ncollection: true\n```\n\n完整写法(可覆盖标题/描述/排序/标签):\n\n```yaml\ncollection:\n enabled: true\n title: \"AIOps 学习笔记\"\n description: \"论文精读、项目复现与实践记录。\"\n order: 10\n tags: [AIOps, 论文]\n```\n\n关闭合集(对某个子目录禁用):\n\n```yaml\ncollection: false\n# 或\ncollection:\n enabled: false\n```\n\n说明:\n\n- `order` 越小越靠前(用于首页排序)。\n- `tags` 不填时,会从该合集内文章的 tags 统计出出现频率最高的前 4 个作为合集卡片标签。\n\n### 一个容易忽略的点:构建可能会“写回”Markdown\n\n构建时会自动规范化 tags、补默认值;如果开启了 AI 摘要,还会把生成的 `description` 写回到 Markdown。\n\n</details>\n\n<details>\n<summary>仓库状态面板(图表/炫技)</summary>\n\n<!-- 这些都是图片(非可点击链接) -->\n\n![作者概览](https://github-readme-stats.vercel.app/api?username=ChenyuHeee&show_icons=true&include_all_commits=true&hide_rank=false)\n\n![语言分布](https://github-readme-stats.vercel.app/api/top-langs/?username=ChenyuHeee&layout=compact)\n\n![连续贡献](https://streak-stats.demolab.com?user=ChenyuHeee)\n\n![活跃度曲线](https://github-readme-activity-graph.vercel.app/graph?username=ChenyuHeee&area=true)\n\n![仓库卡片](https://github-readme-stats.vercel.app/api/pin/?username=ChenyuHeee&repo=AutoBlog&show_owner=true)\n\n![Star 趋势](https://api.star-history.com/svg?repos=ChenyuHeee/AutoBlog&type=Date)\n\n![贡献者](https://contrib.rocks/image?repo=ChenyuHeee/AutoBlog)\n\n</details>\n\n<details>\n<summary>工具脚本(偏开发/维护)</summary>\n\n- `scripts/package_project.py`:将项目拷贝到 `dist/`(可加 `--zip` 打包)。\n- `scripts/publish_open_source.py`:发布“脱敏 + 单提交历史”的快照分支到远程。\n\n</details>\n\n## 许可证\n\nMIT\n"}}}}