Use Cases

Claude Code के साथ SEO

Claude Code का उपयोग करके seo सीखें। Practical tips और code examples शामिल हैं।

サイトマップ自動generateでSEO対策をefficiency improvement

サイトマップはGoogle आदिのsearchエンジンにサイト構造を伝えるimportantなfile है।pageが増えるたびに手動でupdateするのは現実的ではあり नहीं है।Claude Code का उपयोग करके、build時に自動generateされる仕組みをकम समय मेंbuild किया जा सकता है。

basic サイトマップgenerateスクリプト

> XMLサイトマップを自動generateするスクリプトをबनाओ。
> 全pageのURLを収集し、lastmod・changefreq・priorityをsettingsして。
// scripts/generate-sitemap.ts
import { globby } from 'globby';
import { writeFileSync } from 'fs';

interface SitemapEntry {
  url: string;
  lastmod: string;
  changefreq: 'daily' | 'weekly' | 'monthly';
  priority: number;
}

async function generateSitemap() {
  const baseUrl = 'https://example.com';
  
  // pagefileを収集
  const pages = await globby([
    'src/pages/**/*.astro',
    'src/content/blog/**/*.mdx',
    '!src/pages/api/**',
    '!src/pages/404.astro',
  ]);

  const entries: SitemapEntry[] = pages.map(page => {
    const path = page
      .replace('src/pages/', '')
      .replace('src/content/blog/', 'blog/')
      .replace(/\.(astro|mdx)$/, '')
      .replace(/\/index$/, '/');

    return {
      url: `${baseUrl}/${path}`,
      lastmod: new Date().toISOString().split('T')[0],
      changefreq: path.includes('blog') ? 'weekly' : 'monthly',
      priority: path === '' ? 1.0 : path.includes('blog') ? 0.7 : 0.8,
    };
  });

  const xml = buildXml(entries);
  writeFileSync('public/sitemap.xml', xml);
  console.log(`✅ サイトマップgenerate完了: ${entries.length}page`);
}

function buildXml(entries: SitemapEntry[]): string {
  return `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${entries.map(e => `  <url>
    <loc>${e.url}</loc>
    <lastmod>${e.lastmod}</lastmod>
    <changefreq>${e.changefreq}</changefreq>
    <priority>${e.priority}</priority>
  </url>`).join('\n')}
</urlset>`;
}

generateSitemap();

動的routeへのsupport

ブlog記事 की तरह動的にgenerateされるpageも、コンテンツdirectory से自動的に収集でき है।

// AstroProjectでのintegration例
import { getCollection } from 'astro:content';

export async function getStaticPaths() {
  const posts = await getCollection('blog');
  return posts.map(post => ({
    params: { slug: post.slug },
    props: { post },
  }));
}

// サイトマップ用にメタ情報を出力
async function collectBlogEntries(baseUrl: string): Promise<SitemapEntry[]> {
  const posts = await getCollection('blog');
  
  return posts
    .filter(post => !post.data.draft)
    .map(post => ({
      url: `${baseUrl}/blog/${post.slug}`,
      lastmod: post.data.pubDate.toISOString().split('T')[0],
      changefreq: 'weekly' as const,
      priority: 0.7,
    }));
}

サイトマップインデックスのimplementation

大規模サイトでは、サイトマップを分割してインデックスfileでmanagementし है।

function buildSitemapIndex(sitemaps: string[]): string {
  const baseUrl = 'https://example.com';
  return `<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${sitemaps.map(name => `  <sitemap>
    <loc>${baseUrl}/${name}</loc>
    <lastmod>${new Date().toISOString().split('T')[0]}</lastmod>
  </sitemap>`).join('\n')}
</sitemapindex>`;
}

// 用途別にサイトマップを分割
const sitemapFiles = [
  'sitemap-pages.xml',
  'sitemap-blog.xml',
  'sitemap-categories.xml',
];
writeFileSync('public/sitemap.xml', buildSitemapIndex(sitemapFiles));

buildpipelineへの組み込み

{
  "scripts": {
    "build": "astro build && tsx scripts/generate-sitemap.ts",
    "sitemap": "tsx scripts/generate-sitemap.ts",
    "postbuild": "tsx scripts/generate-sitemap.ts && tsx scripts/ping-search-engines.ts"
  }
}

robots.txtとのintegration

> robots.txtにサイトマップのURLをadd करो。
User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

Google Search Consoleへの通知

// scripts/ping-search-engines.ts
async function pingSearchEngines(sitemapUrl: string) {
  const endpoints = [
    `https://www.google.com/ping?sitemap=${encodeURIComponent(sitemapUrl)}`,
    `https://www.bing.com/ping?sitemap=${encodeURIComponent(sitemapUrl)}`,
  ];

  for (const url of endpoints) {
    try {
      const res = await fetch(url);
      console.log(`Ping ${url}: ${res.status}`);
    } catch (error) {
      console.error(`Ping失敗: ${url}`, error);
    }
  }
}

pingSearchEngines('https://example.com/sitemap.xml');

Summary

サイトマップの自動generateは、SEO対策の基本मेंの基本 है।Claude Code का उपयोग करके、動的routeの収集 सेbuildpipelineへの組み込み तक一気にimplementationでき है।CI/CDpipelineに組み込む बातで、deployのたびに最新のサイトマップが自動的にgenerateされ है।詳しい仕様はsitemaps.orgをदेखें。

#Claude Code #sitemap #SEO #XML #automation