/** * 原 PC 站 SEO 基线。 * * 已上线页面继续沿用旧站的标题分隔符、默认描述与关键词,避免重构后 * 搜索引擎把同一页面识别成一套全新的内容。新功能页可继续使用自己的 TDK。 */ export const LEGACY_SITE_URL = 'https://tool.aionline.cc' export const LEGACY_DEFAULT_DESCRIPTION = 'AI在线是一个 AI 工具的集合地,可以找到各种各样的 AI 工具,满足你的不同需求。无论你是想翻译一段文字,还是想生成一篇文章,或者是想制作一张图片,AI在线都能为你提供帮助, AI 工具大全宝库!' export const LEGACY_DEFAULT_KEYWORDS = 'AI,AI在线,AI伙伴,免费AI网站' /** 原站非首页统一使用「页面标题_AI在线」 */ export function legacyPageTitle(title) { return `${String(title || 'AI在线').trim()}_AI在线` } /** * 沿用旧 PC 站的应用 TDK 数据源:后台 app.page_title/description/keywords。 * 本地开发库未配置旧应用时使用线上旧站当前 TDK 作为兜底。 */ export function useLegacyAppSeo({ appKey, fallbackTitle, fallbackDescription = LEGACY_DEFAULT_DESCRIPTION, fallbackKeywords = LEGACY_DEFAULT_KEYWORDS, canonicalPath, }) { const { post } = useApi() const asyncData = useAsyncData(`legacy-app-seo-${appKey}`, () => post('/app/getdetail', { key: appKey }).catch(() => ({ data: {} }))) const appInfo = computed(() => asyncData.data.value?.data || {}) const title = computed(() => legacyPageTitle(appInfo.value.page_title || fallbackTitle)) const description = computed(() => appInfo.value.description || fallbackDescription) const keywords = computed(() => appInfo.value.keywords || fallbackKeywords) useSeoMeta({ title, description, keywords, }) if (canonicalPath) { useHead({ link: [{ rel: 'canonical', href: `${LEGACY_SITE_URL}${canonicalPath}` }], }) } return asyncData }