Skip to main content
Glama

X(Twitter) MCP Server

by cjkcr
媒体功能说明.md9.83 kB
# 媒体功能详细说明 ## 功能概述 本项目现已支持完整的媒体功能,包括上传图片、视频、GIF动图,创建带媒体的推文,以及无障碍Alt文本支持,为用户提供丰富的多媒体推文体验。 ## 新增工具说明 ### 1. `upload_media` - 上传媒体文件 上传图片、视频或GIF文件到Twitter,获取媒体ID用于后续推文。 **参数说明:** - `file_path` (字符串,必需): 媒体文件的本地路径 - `media_type` (字符串,必需): 媒体类型,可选值:`"image"`, `"video"`, `"gif"` - `alt_text` (字符串,可选): 图片的替代文本,用于无障碍访问 **支持的文件格式:** - **图片**: JPG, JPEG, PNG, WebP - **视频**: MP4, MOV, AVI - **GIF**: GIF动图 **使用场景:** - 为推文准备媒体内容 - 批量上传多个媒体文件 - 为图片添加无障碍描述 **示例:** ```json { "name": "upload_media", "arguments": { "file_path": "/Users/username/Pictures/sunset.jpg", "media_type": "image", "alt_text": "山峦上的美丽日落,天空呈现橙红色渐变" } } ``` ### 2. `create_tweet_with_media` - 创建带媒体的推文 使用已上传的媒体ID创建推文。 **参数说明:** - `content` (字符串,必需): 推文的文本内容 - `media_ids` (数组,必需): 媒体ID列表,最多4个 **使用场景:** - 发布带图片的推文 - 分享视频内容 - 发布GIF动图 **示例:** ```json { "name": "create_tweet_with_media", "arguments": { "content": "今天拍到的美丽日落!🌅", "media_ids": ["1234567890123456789"] } } ``` ### 3. `create_draft_tweet_with_media` - 创建带媒体的推文草稿 创建包含媒体文件的推文草稿,支持稍后发布。 **参数说明:** - `content` (字符串,必需): 推文的文本内容 - `media_files` (数组,必需): 媒体文件信息列表 **媒体文件对象结构:** ```json { "file_path": "文件路径", "media_type": "媒体类型", "alt_text": "Alt文本(可选)" } ``` **使用场景:** - 准备包含多个媒体的推文 - 需要审核的媒体内容 - 定时发布的媒体推文 **示例:** ```json { "name": "create_draft_tweet_with_media", "arguments": { "content": "我的摄影作品集 📸", "media_files": [ { "file_path": "/path/to/photo1.jpg", "media_type": "image", "alt_text": "城市夜景,灯火通明" }, { "file_path": "/path/to/photo2.jpg", "media_type": "image", "alt_text": "自然风光,绿树成荫" } ] } } ``` ### 4. `get_media_info` - 获取媒体信息 获取已上传媒体的详细信息。 **参数说明:** - `media_id` (字符串,必需): 要查询的媒体ID **返回信息:** - 媒体ID - 媒体类型 - 文件大小 - 媒体URL(如果可用) **示例:** ```json { "name": "get_media_info", "arguments": { "media_id": "1234567890123456789" } } ``` ## 增强的现有功能 ### `publish_draft` 功能增强 现在支持发布带媒体的草稿,系统会自动: 1. **上传媒体文件** - 自动上传草稿中的媒体文件 2. **应用Alt文本** - 为图片和GIF添加无障碍描述 3. **创建推文** - 使用上传的媒体ID创建推文 4. **清理草稿** - 发布成功后删除草稿文件 ### `list_drafts` 功能增强 现在会显示媒体草稿的详细信息: - 推文内容预览 - 媒体文件数量和类型 - 每个媒体文件的路径和Alt文本 - 草稿类型标识(tweet_with_media) **显示示例:** ``` 📷 媒体推文草稿: media_draft_1234567890.json 内容: 我的摄影作品集 📸 媒体文件: 2 个 - image: /path/to/photo1.jpg (Alt: 城市夜景,灯火通明) - image: /path/to/photo2.jpg (Alt: 自然风光,绿树成荫) ``` ## 数据结构说明 ### 媒体推文草稿的JSON结构 ```json { "content": "推文文本内容", "media_files": [ { "file_path": "/path/to/file.jpg", "media_type": "image", "alt_text": "图片的Alt文本描述" } ], "timestamp": "2025-09-17T10:30:00.000000", "type": "tweet_with_media" } ``` **字段说明:** - `content`: 推文的文本内容 - `media_files`: 媒体文件信息数组 - `timestamp`: 草稿创建时间 - `type`: 草稿类型标识,值为 "tweet_with_media" ## 使用工作流程 ### 工作流程1:直接发布媒体推文 1. **上传媒体** - 用户:`"上传图片 /path/to/sunset.jpg,Alt文本为'美丽的日落'"` - 系统调用 `upload_media` - 返回媒体ID 2. **创建推文** - 用户:`"使用媒体ID 123456789 创建推文'今天的日落真美!'"` - 系统调用 `create_tweet_with_media` - 立即发布带媒体的推文 ### 工作流程2:草稿模式媒体推文 1. **创建媒体草稿** - 用户:`"创建带媒体的推文草稿'我的作品集',附加图片 /path/to/photo.jpg"` - 系统调用 `create_draft_tweet_with_media` - 草稿保存到本地文件系统 2. **查看和管理草稿** - 用户:`"显示我的草稿"` - 系统调用 `list_drafts` - 显示包括媒体草稿在内的所有草稿 3. **发布草稿** - 用户:`"发布这个媒体草稿"` - 系统调用 `publish_draft` - 自动上传媒体文件并发布推文 ## 无障碍功能 ### Alt文本支持 - **自动应用** - 为图片和GIF自动添加Alt文本 - **可选设置** - 用户可以为每个媒体文件单独设置Alt文本 - **无障碍合规** - 符合Web内容无障碍指南(WCAG) ### 文件验证 - **类型检查** - 验证文件类型与指定的媒体类型匹配 - **存在性检查** - 确保文件在指定路径存在 - **格式支持** - 支持主流的图片、视频和GIF格式 ## 错误处理机制 ### 🔧 媒体上传错误处理 **常见错误类型:** 1. **文件不存在** ``` File not found: /path/to/image.jpg ``` 2. **文件类型不匹配** ``` File is not an image: /path/to/document.pdf ``` 3. **文件大小限制** ``` File size exceeds Twitter's limits ``` 4. **格式不支持** ``` Cannot determine media type for file ``` ### 草稿保留机制 与其他功能一致,媒体功能也支持草稿保留: - ✅ **上传失败时草稿被保留** - 用户可以修复文件问题后重试 - ✅ **发布成功时草稿被删除** - 避免重复发布 - ✅ **部分上传失败处理** - 记录已成功上传的媒体 ## 技术实现细节 ### 媒体上传流程 1. **文件验证** - 检查文件存在性和类型 2. **MIME类型检测** - 使用mimetypes库检测文件类型 3. **Twitter上传** - 使用tweepy的media_upload方法 4. **Alt文本应用** - 调用create_media_metadata添加描述 5. **返回媒体ID** - 提供给后续推文使用 ### 支持的媒体限制 - **图片**: 最大5MB,支持JPG、PNG、WebP、GIF - **视频**: 最大512MB,支持MP4、MOV - **GIF**: 最大15MB - **数量限制**: 每条推文最多4个媒体文件 ### API调用说明 ```python # 上传媒体 media_upload = client.media_upload(filename=file_path) media_id = media_upload.media_id_string # 添加Alt文本 client.create_media_metadata(media_id=media_id, alt_text=alt_text) # 创建带媒体的推文 response = client.create_tweet(text=content, media_ids=media_ids) ``` ## 最佳实践建议 ### 媒体文件准备 - **优化文件大小** - 压缩图片和视频以加快上传速度 - **选择合适格式** - 使用Twitter推荐的文件格式 - **准备Alt文本** - 为所有图片提供有意义的描述 ### Alt文本编写指南 - **描述内容** - 简洁描述图片的主要内容 - **避免冗余** - 不要重复推文中已有的信息 - **保持简洁** - 控制在125个字符以内 - **关注重点** - 突出图片的关键信息 ### 性能优化 - **批量上传** - 一次性准备多个媒体文件 - **本地缓存** - 保存媒体ID避免重复上传 - **异步处理** - 大文件上传时使用异步方式 ### 安全考虑 - **文件扫描** - 确保上传的文件安全无害 - **路径验证** - 验证文件路径的合法性 - **权限检查** - 确保有读取文件的权限 ## 兼容性说明 ### Twitter API 兼容性 - 支持 Twitter API v2 媒体上传 - 兼容 tweepy 库的媒体功能 - 遵循 Twitter 的媒体政策和限制 ### 文件系统兼容性 - 支持 Windows、macOS、Linux 文件路径 - 自动处理不同操作系统的路径分隔符 - 支持相对路径和绝对路径 ## 使用示例 ### 基础媒体上传 ```bash # 上传图片 "上传图片 /Users/username/photos/sunset.jpg,媒体类型为image,Alt文本为'海边的美丽日落'" # 上传视频 "上传视频 /Users/username/videos/demo.mp4,媒体类型为video" # 上传GIF "上传GIF /Users/username/gifs/funny.gif,媒体类型为gif,Alt文本为'搞笑的猫咪动图'" ``` ### 创建媒体推文 ```bash # 直接创建带媒体推文 "使用媒体ID 1234567890123456789 创建推文'今天的摄影作品 📸'" # 创建多媒体推文 "使用媒体ID 123456789,987654321 创建推文'我的旅行照片合集 🌍'" ``` ### 媒体草稿管理 ```bash # 创建媒体草稿 "创建带媒体的推文草稿'我的新项目展示',附加文件 /path/to/screenshot.png,媒体类型image,Alt文本'项目界面截图'" # 发布媒体草稿 "发布媒体草稿 media_draft_1234567890.json" ``` ## 功能扩展可能性 未来可以考虑添加的相关功能: - 媒体文件预处理(压缩、裁剪) - 批量媒体上传管理 - 媒体文件本地缓存 - 视频缩略图生成 - 媒体文件元数据提取 - 自动Alt文本生成(AI辅助) 这个媒体功能的实现大大增强了用户创建丰富多媒体内容的能力,提供了完整、易用、无障碍的媒体推文解决方案。

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/cjkcr/x-mcp'

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