From 8ed930e65a225e1bc03346dfd82e22caaa41124e Mon Sep 17 00:00:00 2001 From: Richard Roberson Date: Sun, 26 Jan 2025 23:11:36 -0700 Subject: [PATCH] Improve SEO --- src/app/layout.tsx | 43 +++++++++++++++++++++++++----- src/app/page.tsx | 21 ++++++++------- src/components/PDFViewSettings.tsx | 4 +-- 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e8d9541..8543d0c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -6,11 +6,42 @@ import { Footer } from "@/components/Footer"; export const metadata: Metadata = { title: "OpenReader WebUI", - description: "A modern web interface for reading and managing documents", - appleWebApp: { - capable: true, - statusBarStyle: "black-translucent", - } + description: 'A "bring your own TTS api" web interface for reading documents with high quality text-to-speech voices.', + keywords: "PDF reader, text to speech, tts open ai, kokoro tts, Kokoro-82M, OpenReader, TTS PDF reader, high quality text to speech", + authors: [{ name: "Richard Roberson" }], + manifest: "/manifest.json", + metadataBase: new URL("https://openreader.richardr.dev"), // Replace with your domain + openGraph: { + type: "website", + locale: "en_US", + url: "https://openreader.richardr.dev", + siteName: "OpenReader WebUI", + title: "OpenReader WebUI", + description: 'A "bring your own TTS api" web interface for reading documents with high quality text-to-speech voices.', + images: [ + { + url: "/web-app-manifest-512x512.png", + width: 512, + height: 512, + alt: "OpenReader WebUI Logo", + }, + ], + }, + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true, + 'max-video-preview': -1, + 'max-image-preview': 'large', + 'max-snippet': -1, + }, + }, + verification: { + // Add your verification codes if you have them + google: "MJXyTudn1kgQF8EtGD-tsnAWev7Iawso9hEvqeGHB3U", + }, }; export default function RootLayout({ @@ -27,7 +58,7 @@ export default function RootLayout({
-
+
{children}
diff --git a/src/app/page.tsx b/src/app/page.tsx index d7e4c4a..b01f602 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -5,22 +5,23 @@ import { PDFUploader } from '@/components/PDFUploader'; import { DocumentList } from '@/components/DocumentList'; import { SettingsModal } from '@/components/SettingsModal'; import { SettingsIcon } from '@/components/icons/Icons'; +import { Button } from '@headlessui/react'; export default function Home() { const [isSettingsOpen, setIsSettingsOpen] = useState(false); return (
-
-

OpenReader WebUI

- -
+ +

OpenReader WebUI

+

{'A "bring your own text-to-speech api" web interface for reading documents with high quality voices.'}

diff --git a/src/components/PDFViewSettings.tsx b/src/components/PDFViewSettings.tsx index 767d843..9918a98 100644 --- a/src/components/PDFViewSettings.tsx +++ b/src/components/PDFViewSettings.tsx @@ -61,7 +61,7 @@ export function PDFViewSettings({ isOpen, setIsOpen }: PDFViewSettingsProps) { value={selectedView} onChange={(newView) => updateConfigKey('viewType', newView.id as ViewType)} > -
+
{selectedView.name} @@ -118,7 +118,7 @@ export function PDFViewSettings({ isOpen, setIsOpen }: PDFViewSettingsProps) { className="inline-flex justify-center rounded-lg bg-background px-4 py-2 text-sm font-medium text-foreground hover:bg-background/90 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 - transform transition-transform duration-200 ease-in-out hover:scale-[1.04] hover:text-accent" + transform transition-transform duration-200 ease-in-out hover:scale-[1.04] hover:text-accent z-1" onClick={() => setIsOpen(false)} > Close