Add SEO metadata, sitemap, robots, and JSON-LD for search ranking.
Ship canonical/Open Graph/Twitter tags, WebApplication schema, and landing copy aimed at audio-to-YouTube queries.
This commit is contained in:
+68
-3
@@ -2,13 +2,77 @@ import type { Metadata } from "next";
|
|||||||
import { Inter } from "next/font/google";
|
import { Inter } from "next/font/google";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
import { Providers } from "./providers";
|
import { Providers } from "./providers";
|
||||||
|
import { JsonLd } from "@/components/JsonLd";
|
||||||
|
|
||||||
const inter = Inter({ subsets: ["latin"] });
|
const inter = Inter({ subsets: ["latin"] });
|
||||||
|
|
||||||
|
const SITE_URL = "https://songs2vid.com";
|
||||||
|
const SITE_NAME = "Songs2VID";
|
||||||
|
const DEFAULT_TITLE =
|
||||||
|
"Songs2VID - Fast Audio to Video Converter for YouTube | TunesToTube Alternative";
|
||||||
|
const DEFAULT_DESCRIPTION =
|
||||||
|
"Convert MP3, WAV, and audio files into YouTube videos instantly. The fastest, privacy-focused online tool to upload music, beats, and podcasts directly to YouTube.";
|
||||||
|
const OG_TITLE = "Songs2VID - Fast Audio to Video Converter for YouTube";
|
||||||
|
const OG_DESCRIPTION =
|
||||||
|
"Convert MP3 & audio files into YouTube videos instantly without heavy editing.";
|
||||||
|
const TWITTER_DESCRIPTION = "Convert MP3 & audio files into YouTube videos instantly.";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Songs2VID",
|
metadataBase: new URL(SITE_URL),
|
||||||
description:
|
title: {
|
||||||
"Songs2VID is an automation tool that converts your audio and image files into high-quality videos and uploads them directly to YouTube.",
|
default: DEFAULT_TITLE,
|
||||||
|
template: `%s | ${SITE_NAME}`,
|
||||||
|
},
|
||||||
|
description: DEFAULT_DESCRIPTION,
|
||||||
|
keywords: [
|
||||||
|
"mp3 to youtube",
|
||||||
|
"audio to video converter",
|
||||||
|
"upload audio to youtube",
|
||||||
|
"tunestotube alternative",
|
||||||
|
"song to video",
|
||||||
|
"podcast to youtube",
|
||||||
|
"convert mp3 to mp4",
|
||||||
|
],
|
||||||
|
authors: [{ name: SITE_NAME, url: SITE_URL }],
|
||||||
|
creator: SITE_NAME,
|
||||||
|
publisher: SITE_NAME,
|
||||||
|
applicationName: SITE_NAME,
|
||||||
|
alternates: {
|
||||||
|
canonical: SITE_URL,
|
||||||
|
},
|
||||||
|
openGraph: {
|
||||||
|
title: OG_TITLE,
|
||||||
|
description: OG_DESCRIPTION,
|
||||||
|
url: SITE_URL,
|
||||||
|
siteName: SITE_NAME,
|
||||||
|
type: "website",
|
||||||
|
locale: "en_US",
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: "/logo.png",
|
||||||
|
width: 512,
|
||||||
|
height: 512,
|
||||||
|
alt: SITE_NAME,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
card: "summary_large_image",
|
||||||
|
title: OG_TITLE,
|
||||||
|
description: TWITTER_DESCRIPTION,
|
||||||
|
images: ["/logo.png"],
|
||||||
|
},
|
||||||
|
robots: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
googleBot: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
icons: {
|
||||||
|
icon: "/favicon.png",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
@@ -19,6 +83,7 @@ export default function RootLayout({
|
|||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en" suppressHydrationWarning>
|
||||||
<body className={inter.className} suppressHydrationWarning>
|
<body className={inter.className} suppressHydrationWarning>
|
||||||
|
<JsonLd />
|
||||||
<Providers>{children}</Providers>
|
<Providers>{children}</Providers>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+3
-2
@@ -41,8 +41,9 @@ export default async function HomePage() {
|
|||||||
<span className="text-red-400">2VID</span>
|
<span className="text-red-400">2VID</span>
|
||||||
</h1>
|
</h1>
|
||||||
<p className="mx-auto mt-6 max-w-2xl text-base leading-relaxed text-gray-200 sm:text-lg md:text-xl">
|
<p className="mx-auto mt-6 max-w-2xl text-base leading-relaxed text-gray-200 sm:text-lg md:text-xl">
|
||||||
Songs2VID is an automation tool that converts your audio and image files into
|
Convert MP3, WAV, and audio files into YouTube videos instantly — a fast, privacy-focused
|
||||||
high-quality videos and uploads them directly to YouTube.
|
audio to video converter and TunesToTube alternative that uploads music, beats, and
|
||||||
|
podcasts directly to your channel.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="mt-10 flex flex-col items-center gap-3">
|
<div className="mt-10 flex flex-col items-center gap-3">
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ import { LegalPageLayout } from "@/components/LegalPageLayout";
|
|||||||
import { LEGAL_OPERATOR } from "@/lib/legal/constants";
|
import { LEGAL_OPERATOR } from "@/lib/legal/constants";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Privacy Policy | Songs2VID",
|
title: "Privacy Policy",
|
||||||
description: "How Songs2VID collects, uses, and protects your personal data.",
|
description: "How Songs2VID collects, uses, and protects your personal data.",
|
||||||
|
alternates: { canonical: "https://songs2vid.com/privacy" },
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function PrivacyPage() {
|
export default function PrivacyPage() {
|
||||||
|
|||||||
+2
-1
@@ -4,8 +4,9 @@ import { LegalPageLayout } from "@/components/LegalPageLayout";
|
|||||||
import { LEGAL_OPERATOR } from "@/lib/legal/constants";
|
import { LEGAL_OPERATOR } from "@/lib/legal/constants";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Refund Policy | Songs2VID",
|
title: "Refund Policy",
|
||||||
description: "Refund and cancellation policy for Songs2VID paid plans.",
|
description: "Refund and cancellation policy for Songs2VID paid plans.",
|
||||||
|
alternates: { canonical: "https://songs2vid.com/refund" },
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RefundPage() {
|
export default function RefundPage() {
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import type { MetadataRoute } from "next";
|
||||||
|
|
||||||
|
export default function robots(): MetadataRoute.Robots {
|
||||||
|
return {
|
||||||
|
rules: {
|
||||||
|
userAgent: "*",
|
||||||
|
allow: "/",
|
||||||
|
},
|
||||||
|
sitemap: "https://songs2vid.com/sitemap.xml",
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import type { MetadataRoute } from "next";
|
||||||
|
|
||||||
|
const SITE_URL = "https://songs2vid.com";
|
||||||
|
|
||||||
|
export default function sitemap(): MetadataRoute.Sitemap {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
url: SITE_URL,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: "daily",
|
||||||
|
priority: 1.0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${SITE_URL}/privacy`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: "monthly",
|
||||||
|
priority: 0.3,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
+2
-1
@@ -4,8 +4,9 @@ import { LegalPageLayout } from "@/components/LegalPageLayout";
|
|||||||
import { LEGAL_OPERATOR } from "@/lib/legal/constants";
|
import { LEGAL_OPERATOR } from "@/lib/legal/constants";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Terms of Service | Songs2VID",
|
title: "Terms of Service",
|
||||||
description: "Terms and conditions for using the Songs2VID hosted service.",
|
description: "Terms and conditions for using the Songs2VID hosted service.",
|
||||||
|
alternates: { canonical: "https://songs2vid.com/terms" },
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function TermsPage() {
|
export default function TermsPage() {
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
export function JsonLd() {
|
||||||
|
const schema = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "WebApplication",
|
||||||
|
name: "Songs2VID",
|
||||||
|
url: "https://songs2vid.com",
|
||||||
|
operatingSystem: "Web",
|
||||||
|
applicationCategory: "MultimediaApplication",
|
||||||
|
description: "Online tool to convert audio files into YouTube videos.",
|
||||||
|
offers: {
|
||||||
|
"@type": "Offer",
|
||||||
|
price: "0",
|
||||||
|
priceCurrency: "USD",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<script
|
||||||
|
type="application/ld+json"
|
||||||
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user