From 261e4bf1fdef667b97bbb7defb17d287dacbf9c5 Mon Sep 17 00:00:00 2001 From: S M Fahim Hossen Date: Thu, 4 Sep 2025 15:36:24 +0600 Subject: [PATCH] update titile and meta tag --- next-sitemap.config.mjs | 7 +++++++ package-lock.json | 43 ++++++++++++++++++++++++++++++++++++++--- package.json | 1 + public/robots.txt | 9 +++++++++ public/sitemap.xml | 3 +++ src/app/layout.tsx | 23 ++++++++++++++++++++-- 6 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 next-sitemap.config.mjs create mode 100644 public/robots.txt create mode 100644 public/sitemap.xml diff --git a/next-sitemap.config.mjs b/next-sitemap.config.mjs new file mode 100644 index 0000000..2826e5a --- /dev/null +++ b/next-sitemap.config.mjs @@ -0,0 +1,7 @@ +/** @type {import('next-sitemap').IConfig} */ +const config = { + siteUrl: "https://planpostai.com", + generateRobotsTxt: true, +}; + +export default config; diff --git a/package-lock.json b/package-lock.json index a3d4639..60b0219 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "framer-motion": "^12.4.7", "lucide-react": "^0.476.0", "next": "15.1.7", + "next-sitemap": "^4.2.3", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^3.0.2", @@ -47,6 +48,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@corex/deepmerge": { + "version": "4.0.43", + "resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz", + "integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==", + "license": "MIT" + }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -3067,7 +3074,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3084,7 +3090,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -4328,7 +4333,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4455,6 +4459,39 @@ } } }, + "node_modules/next-sitemap": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/next-sitemap/-/next-sitemap-4.2.3.tgz", + "integrity": "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==", + "funding": [ + { + "url": "https://github.com/iamvishnusankar/next-sitemap.git" + } + ], + "license": "MIT", + "dependencies": { + "@corex/deepmerge": "^4.0.43", + "@next/env": "^13.4.3", + "fast-glob": "^3.2.12", + "minimist": "^1.2.8" + }, + "bin": { + "next-sitemap": "bin/next-sitemap.mjs", + "next-sitemap-cjs": "bin/next-sitemap.cjs" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "next": "*" + } + }, + "node_modules/next-sitemap/node_modules/@next/env": { + "version": "13.5.11", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.11.tgz", + "integrity": "sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==", + "license": "MIT" + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", diff --git a/package.json b/package.json index 67c0dc0..64e9f67 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "framer-motion": "^12.4.7", "lucide-react": "^0.476.0", "next": "15.1.7", + "next-sitemap": "^4.2.3", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^3.0.2", diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..aadc14d --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,9 @@ +# * +User-agent: * +Allow: / + +# Host +Host: https://planpostai.com + +# Sitemaps +Sitemap: https://planpostai.com/sitemap.xml diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..39fed00 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 5dc7dc9..e9070ff 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -16,11 +16,27 @@ const geistMono = Geist_Mono({ }); export const metadata: Metadata = { - title: "PlanPost AI", - description: "Generate Schedule Automate", + title: "AI Marketing Assistant – Content, Ads & SEO | PlanPost AI", + description: + "PlanPost AI is your all-in-one AI marketing assistant. Generate social media posts, ad copy & SEO-optimized content in seconds to grow faster.", other: { "google-site-verification": "Rn-ac8EjV1gz0_r88occ0drnrpdHj636Us5SZvm5o5I", }, + openGraph: { + title: "AI Marketing Assistant – Content, Ads & SEO | PlanPost AI", + description: + "PlanPost AI is your all-in-one AI marketing assistant. Generate social media posts, ad copy & SEO-optimized content in seconds to grow faster.", + url: "https://planpostai.com", + siteName: "PlanPost AI", + locale: "en_US", + type: "website", + }, + twitter: { + card: "summary", + title: "AI Marketing Assistant – Content, Ads & SEO | PlanPost AI", + description: + "PlanPost AI is your all-in-one AI marketing assistant. Generate social media posts, ad copy & SEO-optimized content in seconds to grow faster.", + }, }; export default function RootLayout({ @@ -49,7 +65,9 @@ export default function RootLayout({ `}