From 09a8e1bfbee42972a7ba5319240e8eef1a0471cc Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Tue, 26 May 2026 08:43:55 +0800 Subject: [PATCH] =?UTF-8?q?SEO=20=E5=85=A8=E9=93=BE=E8=B7=AF=EF=BC=9AOG/Tw?= =?UTF-8?q?itter=20=E6=A0=87=E7=AD=BE=20+=20robots.txt=20+=20sitemap.xml?= =?UTF-8?q?=20+=20JSON-LD=20=E7=BB=93=E6=9E=84=E5=8C=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - layout metadata: Open Graph + Twitter Card + canonical + robots 指令 - app/robots.ts: 允许首页/auth,禁止 /terminal/account/ops/api - app/sitemap.ts: 首页 1.0 + /auth/login 0.6 - 首页 JSON-LD: WebApplication schema,含 $10/mo 定价 --- frontend/app/layout.tsx | 41 +++++++++++++++++++++++++++++++++++++++-- frontend/app/page.tsx | 21 +++++++++++++++++++++ frontend/app/robots.ts | 14 ++++++++++++++ frontend/app/sitemap.ts | 20 ++++++++++++++++++++ 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 frontend/app/robots.ts create mode 100644 frontend/app/sitemap.ts diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index fe24ccbf..c18cfc24 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -18,10 +18,47 @@ const jetbrainsMono = JetBrains_Mono({ }); export const metadata: Metadata = { - title: "PolyWeather | Weather Intelligence", + title: { + default: "PolyWeather | Institutional Weather Signal Intelligence", + template: "%s | PolyWeather", + }, description: - "PolyWeather paid professional terminal for weather-signal intelligence, city decision cards, and subscription-only analytics.", + "PolyWeather is a paid professional weather-signal intelligence terminal with METAR evidence, DEB forecast blending, and AI decision cards. Real-time observations for 51 global cities.", manifest: "/site.webmanifest", + metadataBase: new URL("https://polyweather.top"), + alternates: { + canonical: "/", + }, + openGraph: { + type: "website", + siteName: "PolyWeather", + title: "PolyWeather | Institutional Weather Signal Intelligence", + description: + "Paid professional weather-signal intelligence terminal. METAR evidence, DEB forecast blending, AI decision cards. 51 cities, real-time.", + url: "https://polyweather.top", + images: [ + { + url: "/apple-touch-icon.png", + width: 180, + height: 180, + alt: "PolyWeather", + }, + ], + }, + twitter: { + card: "summary", + title: "PolyWeather | Weather Signal Intelligence", + description: + "Paid professional weather-signal intelligence terminal. 51 cities, real-time observations.", + images: ["/apple-touch-icon.png"], + }, + robots: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, icons: { icon: [ { url: "/favicon.ico", type: "image/x-icon" }, diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index f890c2bf..3ea56d6a 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -33,8 +33,29 @@ export default async function HomePage({ const qs = usp.toString(); redirect(`/auth/callback${qs ? `?${qs}` : ""}`); } + const jsonLd = { + "@context": "https://schema.org", + "@type": "WebApplication", + name: "PolyWeather", + description: + "Paid professional weather-signal intelligence terminal with METAR evidence, DEB forecast blending, and AI decision cards.", + url: "https://polyweather.top", + applicationCategory: "BusinessApplication", + operatingSystem: "Web", + offers: { + "@type": "Offer", + price: "10.00", + priceCurrency: "USD", + description: "Monthly subscription", + }, + }; + return ( <> +