Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Search Engine Optimization specialist for Next.js and web projects. Covers keyword research, on-page SEO, technical SEO, schema markup, Core Web Vitals, and content strategy. Use when optimizing pages for search rankings, implementing meta tags, adding structured data, auditing SEO issues, or improving organic visibility.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 134% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 97% | 0% |
Next.js ve genel web projeleri için kapsamlı SEO rehberi — içerik optimizasyonu, teknik SEO ve ölçüm stratejileri.
Her keyword dört niyetten birine hizmet eder. İçeriği buna göre yaz.
| Niyet | Örnek | İçerik Tipi | | -------------- | ---------------------------- | ----------------------- | | Bilgilendirici | "React hooks nedir" | Rehber, makale | | Gezinme | "Next.js docs" | Landing page | | İşlemsel | "CV oluşturma aracı indir" | Ürün sayfası | | Ticari | "En iyi ATS analiz araçları" | Karşılaştırma, inceleme |
Primary keyword şu yerlerde geçmeli: başlık tag'i, H1, ilk paragrafın ilk 100 kelimesi, URL, meta description. Yoğunluk hedefi %1-2, doğal kullanım esas.
html<!-- ✅ Anahtar kelime başta, 60 karakter altı, açıklayıcı --> <title>CV Oluşturma Rehberi 2024 — Talent Architect</title> <!-- ❌ Çok uzun, keyword stuffing, jenerik --> <title>CV Oluştur CV Yap CV Hazırla CV Örneği CV Şablonu Online CV</title>
Next.js App Router'da:
typescript// app/cv-guide/page.tsx import type { Metadata } from 'next' export const metadata: Metadata = { title: 'CV Oluşturma Rehberi 2024 — Talent Architect', description: 'ATS uyumlu profesyonel CV nasıl oluşturulur? Adım adım rehber, şablonlar ve uzman ipuçları. 10 dakikada etkileyici CV hazırlayın.', }
150-160 karakter, değer önerisi + CTA içermeli, her sayfada benzersiz olmalı.
typescriptexport const metadata: Metadata = { description: 'ATS uyumlu profesyonel CV nasıl oluşturulur? Adım adım rehber, şablonlar ve uzman ipuçları. 10 dakikada etkileyici CV hazırlayın.', openGraph: { title: 'CV Oluşturma Rehberi', description: '...', images: [{ url: '/og/cv-guide.jpg', width: 1200, height: 630 }], }, }
html<h1>Ana Sayfa Başlığı (Primary Keyword)</h1> <h2>Bölüm Başlığı (İlgili Keyword)</h2> <h3>Alt Bölüm</h3> <h3>Alt Bölüm</h3> <h2>Başka Bölüm</h2>
Her sayfada yalnızca bir H1. H2/H3 başlıkları anlam taşımalı, dekoratif olmamalı.
✅ /rehber/ats-uyumlu-cv-hazirlama
✅ /arac/cv-olusturucu
✅ /blog/is-basvurusu-ipuclari
❌ /page.php?id=123&ref=xyz
❌ /kategori-1/alt-kategori-2/item-999tsximport Image from 'next/image' // ✅ next/image — otomatik optimizasyon + CLS önleme ;<Image src='/images/cv-ornek.webp' alt='ATS uyumlu CV örneği — bölüm başlıkları ve anahtar kelimeler vurgulanmış' width={800} height={600} priority // Above-fold görseller için />
Alt text: bilgi içeren görseller için açıklayıcı, dekoratif görseller için alt="".
typescript// app/blog/[slug]/page.tsx export default function BlogPage({ post }: { post: BlogPost }) { const schema = { '@context': 'https://schema.org ', '@type': 'Article', headline: post.title, datePublished: post.publishedAt, dateModified: post.updatedAt, author: { '@type': 'Person', name: post.author.name, }, publisher: { '@type': 'Organization', name: 'Talent Architect', logo: { '@type': 'ImageObject', url: 'https://example.com/logo.png ' }, }, } return ( <> <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }} /> {/* sayfa içeriği */} </> ) }
Article — blog yazıları, Product — araçlar ve özellikler, FAQ — soru-cevap bölümleri, HowTo — adım adım rehberler, BreadcrumbList — navigasyon yolu, Organization — şirket bilgisi.
typescriptexport const metadata: Metadata = { alternates: { canonical: 'https://example.com/orijinal-sayfa ', }, }
URL parametreleri olan sayfalar (filtreleme, sıralama) için özellikle önemli.
typescript// app/robots.ts import type { MetadataRoute } from 'next' export default function robots(): MetadataRoute.Robots { return { rules: [ { userAgent: '*', allow: '/' }, { userAgent: '*', disallow: ['/admin/', '/api/', '/private/'] }, ], sitemap: 'https://example.com/sitemap.xml ', } } // app/sitemap.ts export default async function sitemap(): Promise<MetadataRoute.Sitemap> { const posts = await fetchAllPosts() return [ { url: 'https://example.com ', lastModified: new Date(), priority: 1.0 }, ...posts.map((post) => ({ url: `https://example.com/blog/ ${post.slug}`, lastModified: new Date(post.updatedAt), changeFrequency: 'monthly' as const, priority: 0.8, })), ] }
| Metrik | Hedef | Ölçüm | | ------------------------------- | ------- | ----------------------- | | LCP (Largest Contentful Paint) | < 2.5s | En büyük içerik yükleme | | INP (Interaction to Next Paint) | < 200ms | Etkileşim yanıt süresi | | CLS (Cumulative Layout Shift) | < 0.1 | Layout kayması |
tsx// Hero görsel için priority ekle — preload tetikler ;<Image src='/hero.webp' alt='...' width={1200} height={600} priority /> // Kritik kaynakları preload et // app/layout.tsx export default function RootLayout() { return ( <html> <head> <link rel='preload' href='/fonts/main.woff2' as='font' crossOrigin='' /> </head> </html> ) }
tsx// ✅ Her zaman width/height belirt — alan rezerve edilir ;<Image width={800} height={600} src='...' alt='...' /> // ✅ Skeleton ile layout rezervasyonu { isLoading ? <Skeleton className='h-48 w-full' /> : <Content /> } // ❌ Dinamik içerik mevcut içeriğin üstüne ekleme // (banner, cookie notice, reklam — sayfa yüklendikten sonra ekleme)
typescript// Ağır hesaplamayı defer et const [isPending, startTransition] = useTransition() startTransition(() => { setFilteredResults(heavyFilter(data)) }) // Büyük modülleri lazy load et const HeavyChart = dynamic(() => import('./HeavyChart'), { ssr: false })
| Sayfa Tipi | Minimum | Optimum | | -------------------- | ------------ | ----------- | | Blog yazısı | 1.000 kelime | 1.500-2.500 | | Ürün/özellik sayfası | 300 kelime | 500-800 | | Kategori sayfası | 500 kelime | 800-1.200 | | Ana sayfa | 400 kelime | 600+ |
markdown## ATS Nedir? ATS (Applicant Tracking System), işverenler tarafından iş başvurularını otomatik olarak taramak ve filtrelemek için kullanılan yazılımdır. Başvurular anahtar kelimeler, deneyim ve nitelikler bazında puanlanır. ## ATS Uyumlu CV Nasıl Hazırlanır? 1. İş ilanındaki anahtar kelimeleri CV'ye ekleyin 2. Standart bölüm başlıkları kullanın (Deneyim, Eğitim, Beceriler) 3. Sade format tercih edin — tablo ve grafik kullanmayın 4. PDF yerine DOCX formatında gönderin (belirtilmemişse)
Her 1.000 kelime için 3-5 dahili link hedefle. Açıklayıcı anchor text kullan. "Buraya tıklayın" yerine "ATS analiz rehberi" gibi bağlamsal ifadeler seç. Eski içeriklere yeni içeriklerden link ver.
Yayın öncesi kontrol:
Temel araçlar: Google Search Console (performans, indeksleme sorunları), Google Analytics 4 (trafik, dönüşüm), PageSpeed Insights (Core Web Vitals), Screaming Frog (teknik denetim).
İzlenecek temel metrikler: organik trafik trendi, keyword sıralamaları, tıklama oranı (CTR), hemen çıkma oranı, organik trafikten dönüşüm, Core Web Vitals puanları.
Other measured skills in the registry, with their headline benchmark lift.