# 博客园CLI **Repository Path**: maoxuner/cnblogs-cli ## Basic Information - **Project Name**: 博客园CLI - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-12 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cnblogs - 博客园 MetaWeblog 客户端 这是一个使用 Go 语言开发的博客园 MetaWeblog 客户端工具,支持文章管理、分类管理和文件上传等功能。 **注意:本项目代码由 AI 编写,使用时请注意以下事项:** - **信息安全**:配置文件中存储的密码为明文形式,请确保配置文件的安全性,避免泄露个人账号信息。 - **免责声明**:本工具仅供学习和个人使用,使用本工具产生的任何风险和后果由用户自行承担。 - **代码质量**:虽然经过测试,但可能存在未发现的问题,请注意代码审查和功能验证。 ## 功能特性 - 支持从配置文件或命令行参数读取服务器地址、用户名和密码 - 支持管理博客文章(列出、查看、创建、更新、删除) - 支持管理分类(列出、创建) - 支持上传媒体文件 - 支持灵活的发布状态控制 - 支持短参数形式,如 `-f` 对应 `--file`,`-c` 对应 `--categories`,`-p` 对应 `--publish` ## 安装 ### 从源码构建 1. 克隆项目到本地: ```bash git clone cd cnblogs ``` 2. 构建项目: ```bash go build -o cnblogs main.go ``` 3. 将可执行文件添加到系统路径(可选): ```bash mv cnblogs /usr/local/bin/ ``` ## 配置 ### 配置文件 默认配置文件为 `cnblogs.conf`,位于当前工作目录。配置文件格式为 `key=value` 形式: ``` server=https://rpc.cnblogs.com/metaweblog/your-blog username=your-username password=your-password ``` ### 环境变量 也可以通过环境变量配置: - `CNBLOGS_SERVER` - MetaWeblog 服务器地址 - `CNBLOGS_USERNAME` - 用户名 - `CNBLOGS_PASSWORD` - 密码 ### 命令行参数 可以在执行命令时通过参数指定: ```bash ./cnblogs -server -username -password ``` ## 命令使用 ### 全局选项 - `-server ` - MetaWeblog 服务器 URL - `-username ` - 用户名 - `-password ` - 密码 - `-config ` - 配置文件路径 - `-debug` - 启用调试模式,显示请求和响应 XML ### 命令选项 - `-publish|-p` - 发布文章 - `-type |-t ` - 文章类型 (posts/articles/diaries) - `-markdown|-m` - 标记为 Markdown 文章 - `-categories |-c ` - 文章分类 - `-file |-f ` - 从文件读取内容 ### 命令列表 #### 1. 列出博客信息 ```bash ./cnblogs info ``` #### 2. 管理分类 - 列出所有分类: ```bash ./cnblogs cate ``` - 创建新分类: ```bash ./cnblogs cate "分类名称" ``` #### 3. 列出最近文章 ```bash # 列出最近10篇文章(默认) ./cnblogs list # 列出最近20篇文章 ./cnblogs list 20 ``` #### 4. 查看文章详情 ```bash ./cnblogs show ``` #### 5. 创建新文章 ```bash # 基本用法 ./cnblogs create "文章标题" "文章内容" # 从文件读取内容 ./cnblogs create "文章标题" -f content.md # 指定分类 ./cnblogs create "文章标题" "文章内容" -c 分类1,分类2 # 标记为Markdown文章(会自动添加 [Markdown] 分类标签) ./cnblogs create "文章标题" "文章内容" -m # 指定文章类型(会自动添加对应的分类标签) # - posts: 无特殊分类标签 # - articles: 自动添加 [发布为文章] 分类标签 # - diaries: 自动添加 [发布为日记] 分类标签 ./cnblogs create "文章标题" "文章内容" -t articles # 立即发布 ./cnblogs create "文章标题" "文章内容" -p # 发布状态控制 ./cnblogs create "文章标题" "文章内容" -p=1 # 发布 ./cnblogs create "文章标题" "文章内容" -p=true # 发布 ./cnblogs create "文章标题" "文章内容" -p=yes # 发布 ./cnblogs create "文章标题" "文章内容" -p=0 # 草稿 ./cnblogs create "文章标题" "文章内容" -p=false # 草稿 ./cnblogs create "文章标题" "文章内容" -p=no # 草稿 # 组合使用 ./cnblogs create "Markdown文章" -f post.md -c 技术,博客 -m -t articles -p ``` #### 6. 更新文章 ```bash # 基本用法 ./cnblogs update "新标题" "新内容" # 从文件读取内容 ./cnblogs update "新标题" -f content.md # 指定分类 ./cnblogs update "新标题" "新内容" -c 分类1,分类2 # 标记为Markdown文章(会自动添加 [Markdown] 分类标签) ./cnblogs update "新标题" "新内容" -m # 发布状态控制 ./cnblogs update "新标题" "新内容" -p # 组合使用 ./cnblogs update "更新的Markdown文章" -f updated.md -c 技术,博客 -m -p ``` #### 7. 删除文章 ```bash ./cnblogs delete ``` #### 8. 上传媒体文件 ```bash ./cnblogs upload ``` ## 示例 ### 1. 配置并测试连接 1. 创建配置文件 `cnblogs.conf`: ``` server=https://rpc.cnblogs.com/metaweblog/your-blog username=your-username password=your-password ``` 2. 测试连接: ```bash ./cnblogs info ``` ### 2. 创建并发布文章 ```bash # 创建并立即发布文章 ./cnblogs create "Hello World" "This is my first post" -p # 从文件创建文章 ./cnblogs create "My Blog Post" -f post.md -c 技术,博客 -p ``` ### 3. 管理分类 ```bash # 列出所有分类 ./cnblogs cate # 创建新分类 ./cnblogs cate "Go语言" ``` ### 4. 上传图片 ```bash ./cnblogs upload image.png ``` ## 注意事项 1. 请确保配置文件中的服务器地址格式正确,应为 `https://rpc.cnblogs.com/metaweblog/your-blog`,其中 `your-blog` 是你的博客名称。 2. 密码存储在配置文件中是明文形式,请确保配置文件的安全性。 3. 上传文件时,文件大小可能会受到博客园服务器的限制。 4. 发布状态控制参数支持多种格式: - 未传参:默认草稿 - `-publish` 或 `-p`:立即发布 - `-publish=1`、`-publish=true`、`-publish=yes` 或 `-p=1`、`-p=true`、`-p=yes`:立即发布 - `-publish=0`、`-publish=false`、`-publish=no` 或 `-p=0`、`-p=false`、`-p=no`:草稿 5. 使用 `-debug` 参数可以查看详细的请求和响应 XML,有助于排查问题。 ## 项目结构 ``` cnblogs/ ├── api/ # API 数据结构定义 │ └── types.go ├── client/ # MetaWeblog 客户端实现 │ └── client.go ├── config/ # 配置管理 │ └── config.go ├── cnblogs # 可执行文件 ├── cnblogs.conf # 配置文件 ├── go.mod # Go 模块定义 ├── main.go # 主程序 └── README.md # 项目说明 ``` ## 许可证 本项目采用 MIT 许可证。