From ec0d8b507347377c4df0984569ca63936f562dc7 Mon Sep 17 00:00:00 2001 From: Yumeno Yuuka Date: Mon, 30 Mar 2026 20:20:16 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat(seo):=20JSON-LD=20=E6=A7=8B=E9=80=A0?= =?UTF-8?q?=E5=8C=96=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=EF=BC=88#41=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - トップページに WebApplication + Organization JSON-LD を追加 - ブログ記事の Article JSON-LD を拡充(dateModified, author, reviewedBy, mainEntityOfPage) - author/publisher を「第29大阪技術局」Organization に統一 - reviewedBy に監修薬剤師の Person スキーマを追加 - page.tsx をサーバーコンポーネント化し、HomePage に 'use client' を移動 --- src/app/blog/[slug]/page.tsx | 16 +++++++++++-- src/app/page.tsx | 45 ++++++++++++++++++++++++++++++++++-- src/components/HomePage.tsx | 1 + 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/app/blog/[slug]/page.tsx b/src/app/blog/[slug]/page.tsx index e12c366..e3dfbd8 100644 --- a/src/app/blog/[slug]/page.tsx +++ b/src/app/blog/[slug]/page.tsx @@ -45,13 +45,25 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug: headline: post.title, description: post.description, datePublished: post.date, + dateModified: post.date, author: { '@type': 'Organization', - name: 'ObatLog', + name: '第29大阪技術局', + url: `${site}/`, }, publisher: { '@type': 'Organization', - name: 'ObatLog', + name: '第29大阪技術局', + url: `${site}/`, + }, + reviewedBy: { + '@type': 'Person', + name: '監修薬剤師', + jobTitle: 'Pharmacist', + }, + mainEntityOfPage: { + '@type': 'WebPage', + '@id': `${site}/blog/${slug}/`, }, url: `${site}/blog/${slug}/`, }; diff --git a/src/app/page.tsx b/src/app/page.tsx index d08ccf1..2594144 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,47 @@ -'use client'; import HomePage from '@/components/HomePage'; +import { getSiteUrl } from '@/lib/site'; + +const site = getSiteUrl(); export default function Page() { - return ; + // WebApplication + Organization JSON-LD 構造化データ + const jsonLd = { + '@context': 'https://schema.org', + '@graph': [ + { + '@type': 'WebApplication', + name: 'ObatLog', + description: + '毎日の服薬をワンタップで記録。過量服薬チェックと飲み忘れ通知で安心の服薬管理を。', + applicationCategory: 'HealthApplication', + operatingSystem: 'Web', + offers: { + '@type': 'Offer', + price: '0', + priceCurrency: 'JPY', + }, + author: { + '@type': 'Organization', + name: '第29大阪技術局', + url: `${site}/`, + }, + url: `${site}/`, + }, + { + '@type': 'Organization', + name: '第29大阪技術局', + url: `${site}/`, + }, + ], + }; + + return ( + <> +