Kami menggunakan cookies untuk meningkatkan pengalaman Anda di website ini. Dengan melanjutkan, Anda menyetujui penggunaan cookies sesuai Kebijakan Privasi kami.
SEO bukan cuma soal keyword dan backlink. SEO teknis — metadata, sitemap, schema markup, canonical URL — adalah fondasi yang sering diabaikan tapi sangat menentukan ranking di Google.
Muhamad Putra Aulia Hidayat
SEO Teknis Next.js: Dari Dasar Sampai Advanced
Banyak website bagus yang tidak pernah muncul di halaman pertama Google bukan karena kontennya jelek, tapi karena SEO teknisnya berantakan. Ini checklist lengkap yang kami terapkan di setiap project.
// app/layout.tsx
import type { Metadata, Viewport } from "next"
export const viewport: Viewport = {
width: "device-width",
initialScale: 1,
themeColor: "#2563eb",
}
export const metadata: Metadata = {
metadataBase: new URL("https://digiupti.com"),
title: {
default: "Digital Uptime - Jasa Pembuatan Website & Aplikasi",
template: "%s | Digital Uptime"
},
description: "Jasa pembuatan website profesional, aplikasi mobile, dan solusi digital untuk bisnis Indonesia.",
openGraph: {
type: "website",
locale: "id_ID",
url: "https://digiupti.com",
siteName: "Digital Uptime",
images: [{
url: "/og-image.jpg",
width: 1200,
height: 630,
}]
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
"max-snippet": -1,
}
}
}
// app/blog/[slug]/page.tsx
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { slug } = await params
const post = await getPost(slug)
if (!post) return { title: "Artikel tidak ditemukan" }
return {
title: post.title,
description: post.excerpt,
alternates: { canonical: `https://digiupti.com/blog/${slug}` },
openGraph: {
title: post.title,
description: post.excerpt,
type: "article",
publishedTime: post.created_at,
authors: [post.author_name],
images: [{ url: post.cover_image || "/og-default.jpg", width: 1200, height: 630 }]
}
}
}
// app/sitemap.ts
import { MetadataRoute } from "next"
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const supabase = await createClient()
const { data: posts } = await supabase
.from("blog_posts")
.select("slug, updated_at")
.eq("published", true)
const blogUrls = (posts ?? []).map(post => ({
url: `https://digiupti.com/blog/${post.slug}`,
lastModified: new Date(post.updated_at),
changeFrequency: "monthly" as const,
priority: 0.7
}))
return [
{ url: "https://digiupti.com", lastModified: new Date(), changeFrequency: "weekly", priority: 1 },
{ url: "https://digiupti.com/blog", lastModified: new Date(), changeFrequency: "daily", priority: 0.9 },
...blogUrls
]
}
export function ArticleSchema({ post }: { post: BlogPost }) {
const schema = {
"@context": "https://schema.org",
"@type": "Article",
"headline": post.title,
"description": post.excerpt,
"author": {
"@type": "Person",
"name": post.author_name
},
"publisher": {
"@type": "Organization",
"name": "Digital Uptime",
"logo": {
"@type": "ImageObject",
"url": "https://digiupti.com/logo.png"
}
},
"datePublished": post.created_at,
"dateModified": post.updated_at,
}
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
)
}
On-page:
Teknis:
Structured data:
Cek implementasi SEO website Anda? Kami menyediakan audit SEO gratis untuk website bisnis.
Tips teknologi & bisnis mingguan
Bergabung dengan 2,500+ subscriber yang mendapatkan insight teknologi, tutorial development, dan tips bisnis digital langsung ke inbox mereka setiap minggu.
Dapatkan tips & insight teknologi terbaru langsung ke inbox Anda.
© 2026 PT Digital Uptime Teknologi Informasi. Hak cipta dilindungi.