问题1:SEO设置不稳定
每次加载网站时,SEO设置都会发生变化,无法保持一致性。这导致网站的SEO表现不稳定,影响搜索引擎优化效果。
原因:详见seoManager.ts:90
this.#originMetaRoutes = metaRoutes;
每次打开SEO面板时,initSeoInfo()都从readdy-sitemap.json重新获取数据
系统没有区分服务器和本地数据,用户的编辑只存在于内存中,页面刷新后丢失
问题2:发布时SEO设置未保存
发布页面后,SEO设置似乎没有被正确保存。每次分享页面给自己查看时,所有页面都使用相同的标题。
指包含用户手动编辑的页面,如果选择ai自动生成,editedSeoJson.pages为空数组,导致AI生成时没有保留用户之前的编辑
src/views/project/components/Seo/index.vue
const editedSeoJson = getEditedSeoJson(); // 只在手动编辑模式下有数据
const params = {
embedCode: JSON.stringify(editedSeoJson), // 自动生成时为空对象
isSEO: true
}
getEditedSeoJson() 只返回用户在当前会话中手动编辑的数据,JSON.stringify(editedSeoJson)将这个可能为空的对象序列化后传给AI
问题3:分享链接都使用相同标题
原因:share.ts
export interface projectShareParams {
projectId: string;
versionId: number;
}
分享API只传递项目ID和版本ID,后端无法知道用户要分享的是哪个具体页面,所有分享链接都使用项目默认的meta标签
无论从哪个页面分享,社交平台显示的都是:(不确定,还没验证)
<!-- 微信、Twitter、Facebook等显示的都是这个 -->
<meta property="og:title" content="AI网站生成器 - Readdy.ai" />
<meta property="og:description" content="使用AI快速生成专业网站" />
<meta property="og:url" content="https://yoursite.com" />
问题四:Schema标记生成打乱SEO设置
seoPrompt.ts
2.Update the corresponding meta data in each page based on the data I provided
-Exclude empty/null data fields from consideration
AI prompt没有指示保留用户手动编辑的metadata,生成时会完全重写所有SEO设置,用户的精心编辑被AI的自动生成覆盖
一些解决思路
加载时重置问题:添加持久化本地存储,将用户编辑保存到localstorge,然后恢复用户编辑
修复发布时数据丢失,修改geteditedseojson函数,主要是传递的哪些metadata
分享链接问题:增加参数,添加具体页面路径和标题,然后调用时await json页面路径+标题
改进seo的prompt