File size: 3,617 Bytes
cf30fac
5ee72d2
 
39754cf
 
 
cf30fac
 
 
 
 
 
 
39754cf
 
 
 
 
cf30fac
39754cf
 
 
5ee72d2
 
39754cf
e692546
 
39754cf
 
 
e692546
39754cf
 
e692546
39754cf
 
 
 
 
 
 
5ee72d2
e692546
 
39754cf
 
 
5ee72d2
 
39754cf
 
e692546
 
39754cf
 
 
 
 
 
 
 
 
 
 
 
cf30fac
 
 
39754cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5ee72d2
 
 
 
 
39754cf
 
 
 
 
 
cf30fac
5ee72d2
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { Inter, JetBrains_Mono } from 'next/font/google'
import './globals.css'

const inter = Inter({
  subsets: ['latin'],
  display: 'swap',
  variable: '--font-sans',
})

const jetbrainsMono = JetBrains_Mono({
  subsets: ['latin'],
  display: 'swap',
  variable: '--font-mono',
})

const SITE_URL = (process.env.NEXT_PUBLIC_SITE_URL || 'https://rembg.vercel.app').replace(/\/+$/, '')

export const viewport = {
  themeColor: '#FFEB3B',
  width: 'device-width',
  initialScale: 1,
}

export const metadata = {
  metadataBase: new URL(SITE_URL),
  title: 'RemBG: Pemotong Latar Belakang Foto',
  description: 'Pisahkan latar belakang foto menjadi format PNG transparan secara cepat menggunakan model BiRefNet dan ISNet.',
  keywords: [
    'hapus background foto',
    'remove background online',
    'background transparan',
    'rembg online',
    'BiRefNet',
    'potong latar belakang foto',
  ],
  authors: [{ name: 'RemBG' }],
  creator: 'RemBG',
  publisher: 'RemBG',
  alternates: {
    canonical: '/',
  },
  openGraph: {
    title: 'RemBG: Pemotong Latar Belakang Foto',
    description: 'Pisahkan latar belakang foto menjadi format PNG transparan secara cepat menggunakan model BiRefNet dan ISNet.',
    url: SITE_URL,
    siteName: 'RemBG',
    locale: 'id_ID',
    type: 'website',
  },
  twitter: {
    card: 'summary_large_image',
    title: 'RemBG: Pemotong Latar Belakang Foto',
    description: 'Pisahkan latar belakang foto menjadi format PNG transparan secara cepat menggunakan model BiRefNet dan ISNet.',
  },
  robots: {
    index: true,
    follow: true,
    googleBot: {
      index: true,
      follow: true,
      'max-video-preview': -1,
      'max-image-preview': 'large',
      'max-snippet': -1,
    },
  },
  verification: process.env.NEXT_PUBLIC_GSC_VERIFICATION
    ? { google: process.env.NEXT_PUBLIC_GSC_VERIFICATION }
    : undefined,
}

const jsonLd = {
  '@context': 'https://schema.org',
  '@graph': [
    {
      '@type': 'WebApplication',
      '@id': `${SITE_URL}/#app`,
      name: 'RemBG',
      url: SITE_URL,
      description: 'Aplikasi web penghapus background foto otomatis berbasis AI dengan model BiRefNet dan ISNet.',
      applicationCategory: 'MultimediaApplication',
      operatingSystem: 'All',
      browserRequirements: 'Requires JavaScript. Requires HTML5.',
      offers: {
        '@type': 'Offer',
        price: '0',
        priceCurrency: 'USD',
      },
    },
    {
      '@type': 'HowTo',
      '@id': `${SITE_URL}/#howto`,
      name: 'Cara Menghapus Background Foto dengan RemBG',
      description: 'Langkah mudah menghapus background foto secara otomatis menggunakan AI.',
      step: [
        {
          '@type': 'HowToStep',
          name: 'Pilih atau Tarik Foto',
          text: 'Unggah foto berformat JPG, PNG, atau WEBP ke area unggah.',
        },
        {
          '@type': 'HowToStep',
          name: 'Pilih Model AI yang Sesuai',
          text: 'Pilih model BiRefNet Portrait untuk orang atau BiRefNet General untuk produk dan objek.',
        },
        {
          '@type': 'HowToStep',
          name: 'Unduh Hasil PNG Transparan',
          text: 'Klik tombol Hapus Background, periksa hasil pratinjau, dan unduh foto PNG transparan.',
        },
      ],
    },
  ],
}

export default function RootLayout({ children }) {
  return (
    <html lang="id">
      <head>
        <script
          type="application/ld+json"
          dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
        />
      </head>
      <body className={`${inter.variable} ${jetbrainsMono.variable}`}>{children}</body>
    </html>
  )
}