diff --git a/public/images/lora-social-card.webp b/public/images/lora-social-card.webp new file mode 100644 index 0000000..ea196d5 Binary files /dev/null and b/public/images/lora-social-card.webp differ diff --git a/scripts/audit-release.mjs b/scripts/audit-release.mjs index 395cb9f..266b8fa 100644 --- a/scripts/audit-release.mjs +++ b/scripts/audit-release.mjs @@ -10,6 +10,7 @@ const required = [ 'blog/index.html', 'notes/index.html', 'projects/index.html', + 'projects/zhihu-threads/index.html', 'lab/index.html', 'talks/index.html', 'about/index.html', @@ -17,6 +18,22 @@ const required = [ 'now/index.html', 'links/index.html', 'search/index.html', + 'archives/index.html', + 'tags/index.html', + 'guestbook/index.html', + 'resume/index.html', + 'terms/index.html', + 'en/index.html', + 'en/work/index.html', + 'en/writing/index.html', + 'en/now/index.html', + 'en/links/index.html', + 'en/about/index.html', + 'en/contact/index.html', + 'en/search/index.html', + 'en/guestbook/index.html', + 'en/resume/index.html', + 'en/projects/zhihu-threads/index.html', '404.html', 'rss.xml', 'robots.txt', @@ -74,6 +91,9 @@ for (const file of files.filter((path) => textExtensions.has(extname(path)))) { url.startsWith(`${base}/tags/`) || url.startsWith(`${base}/archives`) || url.startsWith(`${base}/terms`) || + url.startsWith(`${base}/guestbook`) || + url.startsWith(`${base}/resume`) || + url.startsWith(`${base}/en/`) || url.startsWith(`${base}/404`) ) continue diff --git a/scripts/fetch-github-projects.mjs b/scripts/fetch-github-projects.mjs index dbb365c..adb733c 100644 --- a/scripts/fetch-github-projects.mjs +++ b/scripts/fetch-github-projects.mjs @@ -97,6 +97,8 @@ const buildingRepositories = new Set([ ]) const summaryOverrides = new Map([ + // Reviewed against Glassbox c191401 on 2026-09-10; roadmap capabilities are not shipped. + ['glassbox-agent-harness', '正在演进为长期运行的个人 Agent 工作台。当前支持 Codex、Claude Code、本地会话、运行回放、审批与画布检查;微信、QQ、长期任务和学习沉淀仍在规划。'], ['zhihu-threads', '从知乎回答与专栏摘录中选择来源,生成可追问、自测和导出的学习线。'], ['lorasys', '基于 Astro 的个人站,收录项目、构建笔记和公开贡献,通过 GitHub Pages 发布。'], [ @@ -127,7 +129,7 @@ const summaryOverrides = new Map([ const titleOverrides = new Map([ ['zhihu-threads', 'Zhihu Threads'], - ['glassbox-agent-harness', 'Glassbox Agent Harness'], + ['glassbox-agent-harness', 'Glassbox'], ['ai-engineering-harness', 'AI Engineering Harness'], ['nano-vllm-interactive-guide', 'nano-vLLM Interactive Guide'], ['trandingos', 'TradingOS'], diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro index bde6441..802ecca 100644 --- a/src/components/BaseHead.astro +++ b/src/components/BaseHead.astro @@ -34,18 +34,25 @@ const alternateWithBase = alternatePath ? alternatePath : `${basePath}/${alternatePath.replace(/^\/+/, '')}` : undefined -const siteTitle = `${title} ${config.titleDelimiter} ${config.title}` +const hasBrandInTitle = title.toLocaleLowerCase().includes(config.title.toLocaleLowerCase()) +const siteTitle = hasBrandInTitle ? title : `${title} ${config.titleDelimiter} ${config.title}` const canonicalURL = new URL(Astro.url.pathname, Astro.site) const socialImageURL = new URL(ogImage ? ogImage : config.socialCard, Astro.url).href const alternateURL = alternateWithBase ? new URL(alternateWithBase, Astro.site) : undefined const socialProfiles = socialLinks.filter((link) => link.href.startsWith('http')).map((link) => link.href) const twitterCreator = socialLinks.find((link) => link.name === 'X')?.handle +const structuredSiteDescription = + locale === 'zh-CN' + ? 'AI Agent 开发者与全栈工程师的个人网站,记录项目、技术写作、公开构建与正在进行的实验。' + : config.description +const structuredJobTitle = locale === 'zh-CN' ? 'AI Agent 开发者与全栈工程师' : 'AI Agent Developer & Full-stack Engineer' const websiteJsonLd = { '@context': 'https://schema.org', '@type': 'WebSite', name: config.title, url: canonicalURL.origin + baseUrl, - description: config.description, + description: structuredSiteDescription, + inLanguage: locale, publisher: { '@type': 'Person', name: config.author } } const webPageJsonLd = { @@ -62,8 +69,8 @@ const profileJsonLd = { '@type': 'Person', name: config.author, url: canonicalURL.origin + baseUrl, - jobTitle: config.description, - description: config.description, + jobTitle: structuredJobTitle, + description: structuredSiteDescription, sameAs: socialProfiles } --- diff --git a/src/components/layout/SiteHeader.astro b/src/components/layout/SiteHeader.astro index 29cf0f8..5f630bc 100644 --- a/src/components/layout/SiteHeader.astro +++ b/src/components/layout/SiteHeader.astro @@ -25,7 +25,7 @@ const search = locale === 'en-US' ? '/en/search' : '/search' {copy.contactLabel} {alternate && {copy.switchLabel}} -