LARU SEOで生成された記事を、自社サイト(Next.js / Astro / Nuxt / WordPress以外の自作サイト等)にJSONで取得して表示するためのAPIです。記事は自社ドメインのページとして公開されるため、SEOの評価(ドメインパワー)がすべて自社サイトに蓄積されます。
コーディング不要で自社ドメインに公開したい場合は WordPress連携 をご利用ください(接続情報を入れるだけ)。
LARU SEOダッシュボード内の「埋め込みコード」にある data-id="〜" の値が、あなたの公開IDです。ログインして確認する →
公開IDは「公開済み記事の読み取り」しかできない安全なIDです。秘密のパスワード等は含まれません。
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…"
}
]
}
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が返ることを確認してください。
コピペで動く記事ページの実装例です。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を付与」という同じ流れで、フレームワークを問わず実装できます。
canonical は必ず自ドメインにする
https://自社.com/blog/<slug> を指定。larubot.tokyo側を指すと評価が自社に入りません。
SSR / SSG で描画する
クライアントJSだけで描画するとGoogleの評価が不安定になります。サーバー側でHTMLを組み立ててください。
著者・発行者は「自社名」でJSON-LDを付ける
E-E-A-T(専門性・信頼性)のシグナルを自社に帰属させます。
内部リンクを足す
記事下や本文に、自社の他記事・料金ページ・問い合わせページへのリンクを設置(回遊とCV導線)。
公開ペースは適正に(1〜2本/日まで)
大量一括公開はGoogleの「大量生成コンテンツ」ポリシーに触れるリスクがあります。
Content APIの実装でご不明な点があれば、お気軽にお問い合わせください。
コーディング不要の WordPress連携 への切り替えもいつでも可能です。
© LARUbot / 株式会社LaruVisona