- 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
65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
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: '所有文章',
|
||
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>
|
||
<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>
|
||
);
|
||
}
|