Skip to main content
Glama
IMPROVEMENT_GUIDE.md3.55 kB
# xiayan-mcp 发布功能改进说明 ## 问题分析 根据微信公众号API文档分析,之前发布功能遇到的主要问题是: 1. **封面图片尺寸限制**:微信要求封面图片(缩略图)不超过64KB,而原代码没有处理这个限制 2. **图片类型使用错误**:封面图片必须使用 `thumb` 类型而不是 `image` 类型 3. **缺少图片压缩功能**:原代码没有自动压缩大图片到符合微信要求的尺寸 ## 主要改进 ### 1. 新增图片自动压缩功能 在 `publisher.py` 中添加了 `_resize_image_for_thumb` 方法: - 自动检测图片尺寸,如果超过要求则压缩 - 支持JPEG格式优化,逐步降低质量直到满足64KB限制 - 保持图片长宽比例,确保显示效果 ### 2. 改进封面图片上传逻辑 - 封面图片总是作为永久 `thumb` 素材上传 - 自动调整图片大小以满足微信要求 - 上传后自动清理临时文件 ### 3. 新增专门的封面图片上传工具 在MCP服务器中新增 `upload_cover_image` 工具: - 专门用于上传文章封面图片 - 自动处理图片尺寸和格式要求 - 返回可用于文章封面的 `thumb_media_id` ### 4. 改进发布流程 - 简化了发布流程,封面图片总是使用永久素材 - 更新了响应信息,包含封面图片的媒体ID - 增强了错误处理和用户反馈 ## 使用方法 ### 方法1:使用新的封面上传工具 ```bash # 先上传封面图片获取 thumb_media_id upload_cover_image("path/to/cover.jpg") # 返回:Media ID: 9q5Pthue6WCZZGn3PsSlVr5wbqlNKfXqP7eNHJN3HP5YJ2FOWme14_UG2nee1UCx # 然后发布文章(会自动使用第一个图片作为封面) publish_article(content, theme_id="default", author="文颜") ``` ### 方法2:直接发布(自动处理封面) ```bash # 直接发布,系统会自动: # 1. 提取内容中的第一张图片 # 2. 压缩到64KB以内 # 3. 上传为thumb素材 # 4. 设置为文章封面 publish_article(content, theme_id="default", author="文颜") ``` ## 技术细节 ### 图片压缩算法 1. **尺寸调整**:如果图片尺寸超过400px,等比例缩放到400px宽度 2. **质量压缩**:从85%质量开始,逐步降低直到文件大小满足64KB要求 3. **二次压缩**:如果仍然过大,缩小到300px再次尝试 ### API调用顺序 ``` 1. 上传封面图片 -> upload_permanent_material(type='thumb') 2. 创建文章草稿 -> _add_draft_with_options(thumb_media_id) 3. 返回草稿ID和封面媒体ID ``` ### 错误处理 - 图片尺寸超限:自动压缩到合适大小 - 格式不支持:转换为JPEG格式 - 上传失败:提供详细的错误信息和解决建议 ## 测试验证 运行测试脚本验证改进功能: ```bash python test_improved_publish.py ``` 测试内容包括: - 封面图片自动压缩和上传 - 文章发布流程完整性 - 错误处理机制 ## 注意事项 1. **PIL/Pillow依赖**:需要安装 `Pillow` 库来支持图片处理: ```bash pip install Pillow ``` 2. **临时文件管理**:系统会自动创建和清理临时文件,确保不会占用磁盘空间 3. **网络图片**:支持远程URL图片,会先下载到本地再处理 4. **向后兼容**:保持了原有API接口的兼容性,不会影响现有使用方式 ## 预期效果 使用改进后的功能: - ✅ 封面图片自动满足微信64KB限制 - ✅ 正确使用thumb类型作为封面图片 - ✅ 提高文章发布成功率 - ✅ 减少"invalid media_id"错误 - ✅ 更好的用户体验和错误提示

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/herofox2024/xiayan-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server