Skip to content

feat(seo): harden site metadata and indexing - #82

Merged
AnnatarHe merged 2 commits into
masterfrom
agent/improve-site-seo
Aug 1, 2026
Merged

AnnatarHe merged 2 commits into
masterfrom
agent/improve-site-seo

Conversation

@AnnatarHe

Copy link
Copy Markdown
Member

Summary

  • centralize canonical metadata, Open Graph, Twitter cards, and Schema.org data
  • add unique curated descriptions for all 75 episodes and exclude unpublished content from production surfaces
  • improve page semantics, RSS, sitemap, robots, manifest, and generated social cards
  • remove legacy demo routes and add build-time SEO regression checks

Why

AsyncTalk is the official podcast website, but its generated HTML contained duplicate titles and descriptions, lacked canonical URLs, exposed malformed podcast structured data, and included demo routes in the sitemap. Episode descriptions also repeated their titles instead of summarizing the content.

Impact

Search engines and social crawlers now receive consistent trailing-slash canonicals, Chinese-language metadata, valid PodcastSeries and PodcastEpisode data, absolute share images, and richer episode summaries. Future builds fail if key SEO invariants regress.

Verification

  • pnpm astro check
  • pnpm build
  • SEO validation: 77 HTML pages, 77 sitemap URLs, 75 RSS items
  • git diff --check
  • visually inspected the default and EP72 Open Graph images

Deployment note

Add the planned Cloudflare 301 rule for non-trailing-slash page URLs after deployment; Cloudflare configuration is outside this repository.

@AnnatarHe
AnnatarHe temporarily deployed to agent/improve-site-seo - asynctalk-website PR #82 August 1, 2026 16:01 — with Render Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 69263c41ae

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/pages/rss.xml.ts
pubDate: post.data.publicationDate,
author: post.data.author,
categories: post.data.categories,
customData: `<guid isPermaLink="true">${escapeXml(pageUrl)}</guid>`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid emitting a second GUID for each RSS item

@astrojs/rss already derives a <guid isPermaLink="true"> element from each item's link, so adding the same element through customData gives every item two GUIDs. RSS consumers and validators can reject the invalid item structure or disagree about its identifier; remove the custom GUID and make the SEO check assert that the library-generated GUID occurs exactly once.

Useful? React with 👍 / 👎.

Comment thread src/lib/seo.ts
Comment on lines +52 to +53
const bvid = normalized ? new URL(normalized).searchParams.get("bvid") : null;
return bvid ? `https://www.bilibili.com/video/${bvid}/` : undefined;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve direct Bilibili video URLs

When biliUrl is a normal video URL such as the existing src/content/posts/ep52.mdx value https://www.bilibili.com/video/BV1yvFXzuEfY, it has no bvid query parameter, so this helper returns undefined. The new PodcastEpisode.sameAs metadata therefore silently omits that episode's valid Bilibili link; extract the BV id from the pathname as well or preserve an already canonical direct URL.

Useful? React with 👍 / 👎.

@AnnatarHe
AnnatarHe merged commit e636c2b into master Aug 1, 2026
3 of 4 checks passed
@AnnatarHe
AnnatarHe deleted the agent/improve-site-seo branch August 1, 2026 16:03

This branch was successfully deployed

No deployments
agent/improve-site-seo - asynctalk-website PR #82 231ae99b Deployed Aug 1, 2026 by AnnatarHe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant