開発者向けドキュメント

LARU SEO Content API

LARU SEOで生成された記事を、自社サイト(Next.js / Astro / Nuxt / WordPress以外の自作サイト等)にJSONで取得して表示するためのAPIです。記事は自社ドメインのページとして公開されるため、SEOの評価(ドメインパワー)がすべて自社サイトに蓄積されます

APIキー不要(公開IDのみ) CORS許可済み 公開済み記事のみ配信

コーディング不要で自社ドメインに公開したい場合は WordPress連携 をご利用ください(接続情報を入れるだけ)。

STEP 1公開ID(public_id)を確認する

LARU SEOダッシュボード内の「埋め込みコード」にある data-id="〜" の値が、あなたの公開IDです。ログインして確認する →

公開IDは「公開済み記事の読み取り」しかできない安全なIDです。秘密のパスワード等は含まれません。

STEP 2APIエンドポイント(2つだけ)

① 記事一覧(一覧ページ・サイトマップ構築用)

GET https://larubot.tokyo/api/seo/content/<public_id>?limit=20&page=1
{
  "total": 42, "page": 1, "limit": 20,
  "items": [
    {
      "id": 12,
      "title": "AIチャットボット導入完全ガイド",
      "slug": "ai-chatbot-guide-2026",
      "thumbnail_url": "https://…",
      "target_keyword": "AIチャットボット 導入",
      "meta_description": "…",
      "published_at": "2026-07-07T…",
      "updated_at": "2026-07-07T…"
    }
  ]
}

② 記事本文(記事ページ描画用・本文フルHTML入り)

GET https://larubot.tokyo/api/seo/content/<public_id>/<slug>
{
  "id": 12,
  "slug": "ai-chatbot-guide-2026",
  "title": "AIチャットボット導入完全ガイド",
  "meta_description": "…",
  "target_keyword": "…",
  "content_html": "<h2>…</h2><p>…</p>",  // 本文HTML(style/script除去済・そのまま描画可)
  "thumbnail_url": "https://…",
  "published_at": "…",
  "updated_at": "…"
}

公開済み記事のみ返します(下書きは404)。まずはブラウザやcurlでURLを開いて、JSONが返ることを確認してください。

STEP 3実装例:Next.js(App Router)

コピペで動く記事ページの実装例です。app/blog/[slug]/page.tsx に配置してください。

// app/blog/[slug]/page.tsx
const PUBLIC_ID = process.env.LARU_PUBLIC_ID!;  // ← STEP1の公開ID
const BASE = "https://larubot.tokyo/api/seo/content";
const SITE = "https://your-company.com";       // ← 自社ドメイン

async function getArticle(slug: string) {
  const res = await fetch(`${BASE}/${PUBLIC_ID}/${slug}`, { next: { revalidate: 3600 } });
  if (!res.ok) return null;
  return res.json();
}

// メタデータ(canonical は必ず自ドメイン!ここが最重要)
export async function generateMetadata({ params }: { params: { slug: string } }) {
  const a = await getArticle(params.slug);
  if (!a) return {};
  const url = `${SITE}/blog/${a.slug}`;
  return {
    title: a.title,
    description: a.meta_description,
    alternates: { canonical: url },
    openGraph: { title: a.title, description: a.meta_description, url, type: "article",
                 images: a.thumbnail_url ? [a.thumbnail_url] : [] },
  };
}

export default async function Page({ params }: { params: { slug: string } }) {
  const a = await getArticle(params.slug);
  if (!a) return <div>Not found</div>;
  const jsonLd = {
    "@context": "https://schema.org", "@type": "Article",
    headline: a.title,
    image: a.thumbnail_url ? [a.thumbnail_url] : [],
    datePublished: a.published_at, dateModified: a.updated_at,
    mainEntityOfPage: `${SITE}/blog/${a.slug}`,
    author: { "@type": "Organization", name: "自社名" },   // ← E-E-A-T=自社
    publisher: { "@type": "Organization", name: "自社名" },
  };
  return (
    <article className="prose mx-auto">
      <script type="application/ld+json"
              dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
      <h1>{a.title}</h1>
      <div dangerouslySetInnerHTML={{ __html: a.content_html }} />
      {/* 自社の料金・問い合わせページへのリンクをここに */}
    </article>
  );
}

静的生成(SSG)にする場合は generateStaticParams で一覧API(①)からslug一覧を取得してビルド時に生成してください。Astro / Nuxt / SvelteKit でも「fetch → 自社テンプレートで描画 → canonical/meta/JSON-LDを付与」という同じ流れで、フレームワークを問わず実装できます。

SEO効果を最大化する5つの必須ルール

  1. 1

    canonical は必ず自ドメインにする

    https://自社.com/blog/<slug> を指定。larubot.tokyo側を指すと評価が自社に入りません。

  2. 2

    SSR / SSG で描画する

    クライアントJSだけで描画するとGoogleの評価が不安定になります。サーバー側でHTMLを組み立ててください。

  3. 3

    著者・発行者は「自社名」でJSON-LDを付ける

    E-E-A-T(専門性・信頼性)のシグナルを自社に帰属させます。

  4. 4

    内部リンクを足す

    記事下や本文に、自社の他記事・料金ページ・問い合わせページへのリンクを設置(回遊とCV導線)。

  5. 5

    公開ペースは適正に(1〜2本/日まで)

    大量一括公開はGoogleの「大量生成コンテンツ」ポリシーに触れるリスクがあります。

実装のご相談・お困りごと

Content APIの実装でご不明な点があれば、お気軽にお問い合わせください。コーディング不要の WordPress連携 への切り替えもいつでも可能です。

© LARUbot / 株式会社LaruVisona