feat: Add SEO/AEO/Geo improvements
- Add ai.txt and llms.txt endpoints for AI/LLM discoverability - Enhance metadata across all pages (canonical URLs, OpenGraph, Twitter) - Add structured data (JSON-LD) to blog index, tag pages - Update robots.txt with AI crawler rules - Improve BlogPosting and CollectionPage schemas
This commit is contained in:
@@ -1,26 +1,62 @@
|
||||
import { Link } from 'next-view-transitions';
|
||||
import { getAllPostsSorted } from '@/lib/posts';
|
||||
import { PostListWithControls } from '@/components/post-list-with-controls';
|
||||
import { TimelineWrapper } from '@/components/timeline-wrapper';
|
||||
import { SidebarLayout } from '@/components/sidebar-layout';
|
||||
import { SectionDivider } from '@/components/section-divider';
|
||||
import { ScrollReveal } from '@/components/scroll-reveal';
|
||||
import { FiTrendingUp } from 'react-icons/fi';
|
||||
import { siteConfig } from '@/lib/config';
|
||||
import { JsonLd } from '@/components/json-ld';
|
||||
|
||||
export const metadata = {
|
||||
title: '所有文章'
|
||||
title: '所有文章',
|
||||
description: '瀏覽所有文章,持續更新中。',
|
||||
alternates: {
|
||||
canonical: `${siteConfig.url}/blog`
|
||||
}
|
||||
};
|
||||
|
||||
export default function BlogIndexPage() {
|
||||
const posts = getAllPostsSorted();
|
||||
|
||||
// Blog schema
|
||||
const blogSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'Blog',
|
||||
name: '所有文章',
|
||||
description: '瀏覽所有文章,持續更新中。',
|
||||
url: `${siteConfig.url}/blog`,
|
||||
inLanguage: siteConfig.defaultLocale,
|
||||
blogPost: posts.slice(0, 10).map((post) => ({
|
||||
'@type': 'BlogPosting',
|
||||
headline: post.title,
|
||||
url: `${siteConfig.url}${post.url}`,
|
||||
datePublished: post.published_at,
|
||||
dateModified: post.updated_at || post.published_at,
|
||||
author: {
|
||||
'@type': 'Person',
|
||||
name: siteConfig.author
|
||||
}
|
||||
}))
|
||||
};
|
||||
|
||||
return (
|
||||
<section className="space-y-4">
|
||||
<JsonLd data={blogSchema} />
|
||||
<SidebarLayout>
|
||||
<header className="space-y-1">
|
||||
<h1 className="type-title font-semibold text-slate-900 dark:text-slate-50">
|
||||
所有文章
|
||||
</h1>
|
||||
<p className="type-small text-slate-500 dark:text-slate-400">
|
||||
繼續往下滑,慢慢逛逛。
|
||||
</p>
|
||||
</header>
|
||||
<SectionDivider>
|
||||
<ScrollReveal>
|
||||
<header className="space-y-1">
|
||||
<h1 className="type-title font-semibold text-slate-900 dark:text-slate-50">
|
||||
所有文章
|
||||
</h1>
|
||||
<p className="type-small text-slate-500 dark:text-slate-400">
|
||||
繼續往下滑,慢慢逛逛。
|
||||
</p>
|
||||
</header>
|
||||
</ScrollReveal>
|
||||
</SectionDivider>
|
||||
<PostListWithControls posts={posts} />
|
||||
</SidebarLayout>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user