mcp: add image url support (#1)

* refactor: remove redundant validation in service and clean up code

- Remove validatePublishRequest function as gin binding already handles validation
- Remove unused errors import
- Simplify PublishContent method by relying on gin's built-in validation
- Add comprehensive image processing support with URL download capability

* 添加 MCP 说明文档,完善教程
This commit is contained in:
zy
2025-08-10 15:44:15 +08:00
committed by GitHub
parent 7cd35ebb71
commit 58faab15c4
14 changed files with 396 additions and 37 deletions

View File

@@ -0,0 +1,53 @@
package downloader
import (
"fmt"
"github.com/xpzouying/xiaohongshu-mcp/configs"
)
// ImageProcessor 图片处理器
type ImageProcessor struct {
downloader *ImageDownloader
}
// NewImageProcessor 创建图片处理器
func NewImageProcessor() *ImageProcessor {
return &ImageProcessor{
downloader: NewImageDownloader(configs.GetImagesPath()),
}
}
// ProcessImages 处理图片列表,返回本地文件路径
// 支持两种输入格式:
// 1. URL格式 (http/https开头) - 自动下载到本地
// 2. 本地文件路径 - 直接使用
func (p *ImageProcessor) ProcessImages(images []string) ([]string, error) {
var localPaths []string
var urlsToDownload []string
// 分离URL和本地路径
for _, image := range images {
if IsImageURL(image) {
urlsToDownload = append(urlsToDownload, image)
} else {
// 本地路径直接添加
localPaths = append(localPaths, image)
}
}
// 批量下载URL图片
if len(urlsToDownload) > 0 {
downloadedPaths, err := p.downloader.DownloadImages(urlsToDownload)
if err != nil {
return nil, fmt.Errorf("failed to download images: %w", err)
}
localPaths = append(localPaths, downloadedPaths...)
}
if len(localPaths) == 0 {
return nil, fmt.Errorf("no valid images found")
}
return localPaths, nil
}