diff --git a/src/components/Analytics/Analytics.tsx b/src/app/Analytics.tsx
similarity index 100%
rename from src/components/Analytics/Analytics.tsx
rename to src/app/Analytics.tsx
diff --git a/src/app/JsonLD.tsx b/src/app/JsonLD.tsx
new file mode 100644
index 00000000..aafccb49
--- /dev/null
+++ b/src/app/JsonLD.tsx
@@ -0,0 +1,15 @@
+import Script from 'next/script';
+
+import { JSON_LD } from '@/constants';
+
+export default function JsonLD() {
+ return (
+
+ );
+}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 4e080b19..2b7dd4d7 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,8 +1,7 @@
import './globals.css';
-import { Suspense } from 'react';
-
-import { Analytics } from '@/components/Analytics';
+import Analytics from './Analytics';
+import JsonLD from './JsonLD';
import { OverlayProvider } from '@/components/Overlay/OverlayProvider';
import METADATA from '@/constants/meta';
import QueryProvider from '@/provider/QueryProvider';
@@ -16,11 +15,10 @@ export const metadata: Metadata = METADATA;
export default function RootLayout({ children }: PropsWithChildren) {
return (
-
-
-
-
-
+
+
+
+
{children}
diff --git a/src/components/Analytics/index.ts b/src/components/Analytics/index.ts
deleted file mode 100644
index d6c2226e..00000000
--- a/src/components/Analytics/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as Analytics } from './Analytics';
diff --git a/src/components/index.ts b/src/components/index.ts
new file mode 100644
index 00000000..45e407a3
--- /dev/null
+++ b/src/components/index.ts
@@ -0,0 +1 @@
+export * from './JsonLD';
diff --git a/src/constants/index.ts b/src/constants/index.ts
index 8b794342..2726b244 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -1,2 +1,3 @@
+export * from './meta';
export * from './auth';
export * from './error';
diff --git a/src/constants/meta.ts b/src/constants/meta.ts
index be126961..3fa19e96 100644
--- a/src/constants/meta.ts
+++ b/src/constants/meta.ts
@@ -74,3 +74,39 @@ const METADATA: Metadata = {
};
export default METADATA;
+
+export const JSON_LD = {
+ '@context': 'https://schema.org',
+ '@type': 'WebSite',
+ name: 'PosePicker | 포즈피커',
+ description: '포토부스에서 고민하는 당신을 위한 포즈 추천 서비스',
+ keywords: 'pose, photo booth, recommendation, 포즈, 포토부스, 추천',
+ url: 'https://www.posepicker.site',
+ image: 'https://www.posepicker.site/meta/og_main.png',
+ author: {
+ '@type': 'Organization',
+ name: 'PosePicker',
+ },
+ datePublished: '2024-08-08T00:00:00+09:00',
+ dateModified: '2024-08-08T00:00:00+09:00',
+ publisher: {
+ '@type': 'Organization',
+ name: 'PosePicker',
+ logo: {
+ '@type': 'ImageObject',
+ url: 'https://www.posepicker.site/pwa-icons/apple.png',
+ },
+ },
+ headline: '포즈가 고민될 땐? 포즈피커!',
+ mainEntityOfPage: {
+ '@type': 'WebPage',
+ '@id': 'https://www.posepicker.site',
+ },
+ offers: {
+ '@type': 'Offer',
+ price: '0',
+ priceCurrency: 'KRW',
+ availability: 'https://schema.org/InStock',
+ },
+ thumbnailUrl: 'https://www.posepicker.site/meta/og_main.png',
+};
\ No newline at end of file