素材SoSo是我2025年的时候上的一个新站,当时做了一些站内 SEO 优化,在这里和大家分享一下我的思路和实践经验。
背景与挑战
素材SoSo 的核心功能是提供素材搜索服务,整个网站只有一个主功能页面。这种单页面结构存在明显的 SEO 劣势:
- 难以覆盖多样化的搜索关键词
- 不利于提升网站整体权重
- 用户触达路径单一

核心策略:增加内容页
对于新站来说,增加内容页是实施 SEO 的关键一步。
常见方案的利弊分析
| 方案 | 优点 | 缺点 |
|---|---|---|
| 手动撰写原创文章 | 质量高,搜索引擎友好 | 实施成本高,产出效率低 |
| AI 生成或采集伪原创 | 产出快,成本低 | 风险高,搜索引擎可能惩罚 |
| 基于现有资源组合生成 | 成本低,相关性高 | 需要一定的技术实现 |
更重要的是,内容页需要真正匹配用户的搜索意图,才能实现有效转化。
基于以上分析,我最终采用了两个方案:
- 博客文章模块:展示原创技术文章
- 素材合集页:利用素材库内容自动生成
方案一:构建轻量级博客模块
设计原则
由于博客系统主要服务于 SEO 目的,所以核心原则是尽可能简单,把开发成本降到最低。
其中最复杂的模块——编辑器,我采用了一个巧妙的解耦方案:将写文章和渲染文章完全分离。
技术方案
1. 文章编写
使用 Visual Studio Code 作为编辑器,配合内置的 Markdown Image 插件,可以实现无痛的图片上传和插入。

2. 文章渲染
展示端相对简单,技术栈选择:
- SSR 渲染方案:基于 Vue + Vite + SSR 构建,对 SEO 更友好
- Markdown 解析:使用 markdown-it + front-matter
- 样式美化:配合精选的 Markdown CSS 主题
3. 文章格式规范
---
title: SEO 标题
description: SEO 的 description 信息
author: 文章作者
date: 文章创建日期
cover: 封面图片
---
Markdown 格式的文章正文4. 核心代码实现
加载单篇文章:
/**
* 加载文章内容
*/
export function loadArticle(file_name) {
const md_file = resolve(`blog/${file_name}.md`)
const md_content = fs.readFileSync(md_file, 'utf-8')
const article = fm(md_content)
return {
title: article.attributes.title,
description: article.attributes.description,
date: article.attributes.date,
author: article.attributes.author,
cover: article.attributes.cover,
body: md.render(article.body)
}
}获取文章列表:
/**
* 获取文章列表(分页)
*/
export function getArticleList(page, limit) {
const dirPath = resolve('blog')
const list_json = fs.readFileSync(path.join(dirPath, 'list.json'), 'utf-8')
const list = JSON.parse(list_json)
const total = list.length
const start = (page - 1) * limit
const total_page = Math.ceil(total / limit)
if (start >= total) {
return { list: [], pageSize: limit, total, pageCount: total_page, currentPage: page }
}
const end = start + limit
return {
list: list.slice(start, end),
pageSize: limit,
total,
pageCount: total_page,
currentPage: page
}
}5. 自动生成文章索引
每次服务启动时,自动遍历 Markdown 文件目录,生成 JSON 索引文件:
const blog_list_file = 'list.json'
/**
* 生成文章列表数据:按日期排序,取前30条
*/
export function generateArticleListJson() {
const dirPath = resolve('blog')
const files = fs.readdirSync(dirPath)
.filter(file => path.extname(file) === '.md' && path.basename(file) !== '404.md')
const list = files.map(md_file => {
const md_content = fs.readFileSync(path.join(dirPath, md_file), 'utf-8')
const article = fm(md_content)
return {
link: `/blog/${md_file.substring(0, md_file.lastIndexOf('.'))}`,
title: article.attributes.title,
description: article.attributes.description,
author: article.attributes.author,
date: article.attributes.date,
cover: article.attributes.cover,
}
})
const result_list = list
.sort((a, b) => b.date.getTime() - a.date.getTime())
.slice(0, 30)
fs.writeFileSync(path.join(dirPath, blog_list_file), JSON.stringify(result_list))
}
方案二:自动化生成素材合集页
核心思路
利用网站现有的素材资源,通过组合方式自动生成内容页面。这种方式有几个显著优势:
- 成本极低:可以程序化批量产出
- 相关性高:与搜索用户的需求天然匹配
- 可扩展性强:轻松扩展到不同主题领域
页面结构设计

一个合集页面的核心元素包括:
- 标签关键词:如"节日灯笼"、"户外健身"
- 描述信息:针对该标签的一句话说明
- 相关素材:与标签匹配的图片或视频
自动化生成流程
Step 1: AI 生成元数据
通过 ChatGPT 或 DeepSeek 批量生成标签和描述:
帮我列举100个关于"节日"的图片素材种类的tag关键词和介绍描述信息(用于SEO目的),
结果以json格式返回,格式为:[{"tag": "标签名", "description": "描述信息"}]输出示例:
[
{"tag": "春节", "description": "展示中国农历新年的庆祝活动,如舞狮、鞭炮、团圆饭等传统元素"},
{"tag": "圣诞节", "description": "充满节日氛围的圣诞树、圣诞老人、礼物与家庭聚会场景"},
{"tag": "万圣节", "description": "南瓜灯、化妆舞会、鬼怪服装和糖果主题的万圣节庆祝画面"},
{"tag": "中秋节", "description": "描绘赏月、吃月饼和家庭团圆等中秋节文化习俗"}
]Step 2: 自动匹配素材
调用素材SoSo内部接口,根据标签获取相关的 20 张图片,第一张作为封面。
Step 3: 数据入库
将元数据和素材信息录入数据库,每个标签即为一个合集页。
💡 效率提升:只需数分钟,就可以批量生成数百个内容页面,性价比极高!

其他优化细节
URL 结构设计
清晰的链接结构有助于搜索引擎理解页面内容:
| 页面类型 | URL 格式 | 示例 |
|---|---|---|
| 博客文章 | /blog/{文章标识} | /blog/two_ways_add_pictures_in_article |
| 素材合集 | /{资源类型}/{标签名} | /photos/节日灯笼 |
Sitemap 配置
虽然对现代搜索引擎来说 sitemap 是否必要尚存争议,但添加它几乎没有额外成本,还能主动提交给搜索引擎。
推荐使用 sitemap 这个 npm 库,配置简单直观。
成效验收
完成上述优化后,几天内 Google 和 Bing 已陆续开始收录相关页面:

总结与思考
对于独立开发者来说,做好产品本身已经很不容易,还要想办法获取流量。在资源有限的情况下,我们应该追求:
- ✅ 简单化:能少写的代码就少写
- ✅ 自动化:让程序批量产出内容
- ✅ 高性价比:用最小投入获得最大收益
以上是我在新站 SEO 优化方面的一些实践经验,不一定都是最优解,但希望能给你提供一些思路。