在维护 奥升官网(基于 Nuxt 3 构建)的过程中,我们需要将发布在其他平台的技术文章迁移到官网的内容管理系统中。手动复制粘贴不仅效率低下,还容易遗漏图片资源或导致格式错乱。
借助 Trae IDE 及 Chrome MCP,我们可以将这一过程高度自动化。本文将详细介绍这套抓取方案的思路与实现。
本方案依赖以下核心环境与工具:
整个抓取流程可以概括为以下四个步骤:
public/images/articles 目录,并按文章id分文件夹存储。sharp 对图片进行压缩优化(WebP/JPG 转换、尺寸调整)。content/articles/ 目录。利用 MCP 的 chrome_read_page 或 chrome_get_web_content 工具,我们可以直接获取渲染后的页面内容,这对于动态加载的页面尤为重要。
1. 提取链接
AI 会从 DOM 中找出所有 <img> 标签的 src 属性。
2. 批量下载
AI 会生成并执行 Shell 命令(如 curl 或 wget)来下载图片。
# AI 自动生成的下载命令示例
mkdir -p public/images/articles/21
curl -o public/images/articles/21/1.jpg http://example.com/path/to/image.jpg
3. 图片压缩
利用项目中的 sharp 脚本对下载的图片进行批量处理,确保加载性能。
4. 图片上传到 OSS
使用ali-oss 库,编写 upload_oss 脚本,将压缩后的图片上传到 OSS 上指定的目录。
async function uploadFile(filePath, retryCount = 0) {
// 处理上传到oss的文件路径
const relativePath = path.relative(articlesDir, filePath);
const objectName = `website/article/${relativePath.split(path.sep).join('/')}`;
try {
const result = await client.put(objectName, filePath);
//...
} catch (err) {
//...
}
}
Nuxt Content 要求每篇文章包含特定的元数据。我们定义了统一的 Prompt 模板,让 AI 生成标准格式:
---
title: 文章标题
slug: article-slug
description: 文章摘要...
date: 2024-03-20
category: 分类
cover: https://ucode-orise.oss-cn-beijing.aliyuncs.com/website/article/[slug]/cover.jpg
---
## 正文内容
...
下图是我们在 Trae 环境中开发时的文章列表页面截图,展示了收录后的效果:



通过 Trae IDE + MCP 的组合,我们将原本需要 10 分钟/篇的人工迁移工作缩短到了 2-3 分钟/篇(主要是AI对话推理时间)。开发者只需提供一个 URL,剩下的分析、下载、转换、优化工作全部由 AI 代理完成。这不仅极大提升了效率,还保证了代码风格与目录结构的一致性。