2026-07-12 15:40:35 +02:00
import type { Metadata } from "next" ;
import { Inter } from "next/font/google" ;
import "./globals.css" ;
import { Providers } from "./providers" ;
2026-07-29 19:45:17 +02:00
import { JsonLd } from "@/components/JsonLd" ;
2026-07-12 15:40:35 +02:00
const inter = Inter ( { subsets : [ "latin" ] } ) ;
2026-07-29 19:45:17 +02:00
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." ;
2026-07-12 15:40:35 +02:00
export const metadata : Metadata = {
2026-07-29 19:45:17 +02:00
metadataBase : new URL ( SITE_URL ) ,
title : {
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" ,
} ,
2026-07-12 15:40:35 +02:00
} ;
export default function RootLayout ( {
children ,
} : Readonly < {
children : React.ReactNode ;
} > ) {
return (
2026-07-27 16:26:19 +02:00
< html lang = "en" suppressHydrationWarning >
< body className = { inter . className } suppressHydrationWarning >
2026-07-29 19:45:17 +02:00
< JsonLd / >
2026-07-12 15:40:35 +02:00
< Providers > { children } < / Providers >
< / body >
< / html >
) ;
}