Title: garasaya AIO Dashboard
Author: garasaya
Published: <strong>September 17, 2026</strong>
Last modified: September 17, 2026

---

Search plugins

![](https://ps.w.org/garasaya-aio-dash/assets/banner-772x250.png?rev=3700663)

![](https://ps.w.org/garasaya-aio-dash/assets/icon-256x256.png?rev=3700663)

# garasaya AIO Dashboard

 By [garasaya](https://profiles.wordpress.org/garasaya/)

[Download](https://downloads.wordpress.org/plugin/garasaya-aio-dash.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/garasaya-aio-dash/#description)
 * [Reviews](https://wordpress.org/plugins/garasaya-aio-dash/#reviews)
 *  [Installation](https://wordpress.org/plugins/garasaya-aio-dash/#installation)
 * [Development](https://wordpress.org/plugins/garasaya-aio-dash/#developers)

 [Support](https://wordpress.org/support/plugin/garasaya-aio-dash/)

## Description

**AIO Dashboard** helps your WordPress site get cited by AI search engines such 
as Google AI Overviews, ChatGPT, and Perplexity by providing:

**No license key? No content ever leaves your server.** The free structural analysis
mode runs entirely on your own WordPress install — no external API calls, no tracking.
AI-powered features are opt-in and only activate once you add a license key (see“
External Services” below for exactly what is sent and when).

**Built to complement your existing SEO plugin, not replace it.** AIO Dashboard 
only manages AI-crawler-facing files (robots.txt entries, llms.txt) and AI-search
structured data — it never touches the meta titles, descriptions, or redirects managed
by Yoast SEO, Rank Math, or similar plugins. It automatically detects other SEO 
plugins and warns you before touching any file they may already control.

 * **Automatic Schema.org JSON-LD output** — Article, Organization, WebSite, FAQPage,
   BreadcrumbList structured data
 * **AI-enhanced schema properties** (ai_enhanced mode) — AI-generated `description`,`
   abstract`, and `keywords` for each post and page, automatically updated on publish
 * **robots.txt management** — Allow or block AI crawlers (GPTBot, ClaudeBot, PerplexityBot,
   Google-Extended, etc.)
 * **sitemap.xml generation** — Automatic sitemap with duplicate detection for existing
   SEO plugins
 * **llms.txt generation** — Site summary file for AI crawlers, using AI-generated
   descriptions when available
 * **FAQ page generation** — Create FAQ content from your posts using structural
   analysis (free) or AI-assisted generation (requires license)
 * **BreadcrumbList shortcode** — Output visual breadcrumbs and BreadcrumbList schema
   on selected pages via `[aio_dash_breadcrumb]`

#### Free features (no license required)

Structural analysis mode is fully free and operates without any external API calls:

 * Automatic Schema.org output (Article, Organization, WebSite)
 * FAQPage schema on pages with `[aio_dash_faq]` shortcode
 * BreadcrumbList via shortcode
 * robots.txt / sitemap.xml / llms.txt management
 * FAQ generation using heading structure analysis (Level 1)

#### License-required features (ai_enhanced mode)

The following features require a valid license key and communicate with the AIO 
Dashboard backend service:

 * AI-generated `description`, `abstract`, and `keywords` in Article schema
 * Auto-generation of schema properties on post publish/update
 * AI-assisted FAQ generation (sends post title and content to our backend)
 * AI-enhanced descriptions in llms.txt

#### External Services

**This plugin connects to the following external services.** Services 1, 2, and 
3 below are used only when a license key is activated and ai_enhanced mode is enabled(
service 3 additionally requires that an address was actually extracted). Service
4 (AI crawler activity sync) applies whenever a license key is active, regardless
of ai_enhanced/structural mode. Services 5 and 6 (Google Analytics and Google Search
Console) are entirely opt-in — nothing is sent to Google unless you explicitly connect
them from the Settings screen, independent of license status.

#### 1. AIO Dashboard Backend (app.aio-dash.com)

The plugin communicates with the AIO Dashboard backend service for:

 * **License verification** — Your license key and site domain are sent with every
   API request to verify your subscription.
 * **AI-assisted FAQ generation** (`POST /api/v1/ai/faq`) — When FAQ generation 
   is triggered in ai_enhanced mode, the title and content of the post being processed
   are sent to our backend, which passes them to the Anthropic API to generate question-
   and-answer pairs.
 * **AI-enhanced schema generation** (`POST /api/v1/ai/schema-enhance`) — When a
   post or page is published/updated in ai_enhanced mode, or when bulk generation
   is triggered, the title and content of the post are sent to our backend, which
   uses an AI model to determine the page’s structured-data type (e.g. AboutPage,
   Service, JobPosting) and generate `description`, `abstract`, and `keywords` properties.
 * **GEO page quality analysis** (`POST /api/v1/ai/page-quality/runs`) — When you
   manually trigger “Analyze site” (Dashboard screen), the title and content of 
   up to 60 pages (full text for up to 40, excerpts for the remainder) are sent 
   to our backend, which uses an AI model to score each page’s citability to AI 
   search engines (E-E-A-T, PREP structure, topical coverage, citability) and suggest
   improvements.
 * **Business entity extraction** (`POST /api/v1/ai/business-entity/refresh`) — 
   When a fixed page (`page` post type) is published/updated in ai_enhanced mode,
   or when “Analyze site” is run manually, the title and full text content of **
   all of your site’s published fixed pages** (not just the changed one, up to 40
   pages) are sent to our backend, which uses an AI model to extract site-wide business
   facts — business type, address, phone number, service area, external profile 
   links (sameAs), founding date, founder name(s), and license/registration numbers—
   for use in the Organization/LocalBusiness schema and llms.txt.
 * **License status check** (`GET /api/v1/license/status`) — Periodically checks
   whether your license is active and which mode (`structural` or `ai_enhanced`)
   is enabled.

**Data sent to app.aio-dash.com:**

 Request
 Data sent

 License status check
 License key, site domain

 FAQ generation
 License key, site domain, post title, post content (plain text,
HTML tags stripped)

 Schema enhancement
 License key, site domain, post title, post content (plain text,
HTML tags stripped)

 GEO page quality analysis
 License key, site domain, title and content (full text
or excerpt) of up to 60 pages

 Business entity extraction
 License key, site domain, title and full-text content(
plain text) of all published fixed pages

 AI crawler activity sync
 License key, site domain, daily counts per AI crawler
service name (no user-agent strings, request paths, or IP addresses)

No personally identifiable information about your site visitors is ever sent. Only
the post/page title and content you have authored are transmitted.

Service privacy policy: https://aio-dash.com/privacy/
 Service terms of use: https://
aio-dash.com/terms/

#### 2. Anthropic (claude.anthropic.com)

When AI features are used, the AIO Dashboard backend sends post/page content to 
Anthropic’s API to generate FAQ pairs, schema properties, and business entity facts.
This processing occurs server-side on our backend — the plugin itself does not communicate
directly with Anthropic.

 * Anthropic Privacy Policy: https://www.anthropic.com/privacy
 * Anthropic Terms of Service: https://www.anthropic.com/legal/consumer-terms

#### 3. Geocoding of Space Information Authority of Japan / GSI (msearch.gsi.go.jp)

When business entity extraction (see Service 1 above) successfully extracts a postal
address from your fixed pages, the AIO Dashboard backend sends that address text
to the Geospatial Information Authority of Japan’s public geocoding API to obtain
latitude/longitude coordinates, which are added to the Organization/LocalBusiness
schema as a `geo` (GeoCoordinates) property. This is a plain address lookup, not
an AI service, and does not process any content beyond the extracted address string.
It is operated by a Japanese government agency and requires no account or API key.
If the lookup fails or returns no result, the `geo` property is simply omitted —
no error is shown.

 * Geospatial Information Authority of Japan (国土地理院): https://www.gsi.go.jp/

#### 4. AI Crawler Activity Sync (app.aio-dash.com)

The plugin always detects AI crawler visits (GPTBot, ClaudeBot, PerplexityBot, and
others) from your server’s own request log and displays them locally on the **AIO
Dashboard > Access Analysis** screen, regardless of license status. **When a license
key is active**, an aggregated daily summary of this local data — the count of detections
per AI service per day — is additionally synced to our backend so it can also inform
other features (such as content generation suggestions).

 * **Only aggregated counts are sent**: service name, date, and hit count. The underlying
   raw data — user-agent strings, request paths, and IP addresses (which this plugin
   never records to begin with) — never leaves your server.
 * Without a license key, no sync occurs and AI crawler detection remains entirely
   local.
 * Sync runs once daily via WP-Cron. On the first sync after activation, up to 90
   days of existing local history is sent as a one-time backfill; afterwards only
   new days are sent.

#### 5. Google Analytics 4 (optional, opt-in)

If you click “Connect” for Google Analytics on the **AIO Dashboard > Settings** 
screen, your browser is redirected to Google’s OAuth consent screen to authorize
read-only access to one of your GA4 properties (`analytics.readonly` scope). Google
then redirects back to the AIO Dashboard backend (app.aio-dash.com), which stores
the authorization and — not the plugin itself — periodically queries the Google 
Analytics Data API on your behalf. Retrieved data (session counts, traffic channels,
referrer sources, top pages) is cached on our backend for up to 1 hour and displayed
on the **AIO Dashboard > Access Analysis** screen.

 * This connection is entirely opt-in and independent of your license status — nothing
   is sent to Google unless you explicitly connect it.
 * Only aggregate, read-only reporting data is retrieved. The plugin and backend
   never write to or modify your Google Analytics account.
 * You can disconnect at any time from the Settings screen, which deletes the stored
   authorization on our backend.
 * Google Privacy Policy: https://policies.google.com/privacy
 * Google API Services User Data Policy (including the Limited Use requirements 
   we comply with): https://developers.google.com/terms/api-services-user-data-policy

#### 6. Google Search Console (optional, opt-in)

If you click “Connect” for Google Search Console on the **AIO Dashboard > Settings**
screen, your browser is redirected to Google’s OAuth consent screen to authorize
read-only access to one of your verified Search Console properties (`webmasters.
readonly` scope). Google then redirects back to the AIO Dashboard backend, which
stores the authorization and periodically queries the Search Console API on your
behalf. Retrieved data (search queries, clicks, impressions, average position, top
pages, sitemap submission status) is cached on our backend for up to 1 hour and 
displayed on the **AIO Dashboard > Access Analysis** screen. If you also subscribe
to Sampling Investigation, this data may additionally be used to cross-reference
search rankings with AI citation results, and aggregated signals from it may be 
included as context when generating content suggestions for your own site.

 * This connection is entirely opt-in and independent of your license status — nothing
   is sent to Google unless you explicitly connect it.
 * Only aggregate, read-only reporting data is retrieved. The plugin and backend
   never write to or modify your Search Console account.
 * You can disconnect at any time from the Settings screen, which deletes the stored
   authorization on our backend.
 * Google Privacy Policy: https://policies.google.com/privacy
 * Google API Services User Data Policy (including the Limited Use requirements 
   we comply with): https://developers.google.com/terms/api-services-user-data-policy

#### No content data is sent in structural mode

If you are using the plugin **without a license key**, or your license is in `structural`
mode, **no post/page content is ever sent to any external service.** All schema 
generation and FAQ structural analysis run entirely on your WordPress server.

#### Privacy Policy

For information on what data this plugin collects and transmits, please see our 
full privacy policy: https://aio-dash.com/privacy/

**For site owners:** If your site uses the AI-enhanced license, you should disclose
in your own privacy policy that post content may be transmitted to a third-party
AI processing service for the purpose of generating structured data and FAQ content.

## Installation

 1. Upload the `aio-dash` folder to the `/wp-content/plugins/` directory, or install
    via the WordPress Plugins screen.
 2. Activate the plugin through the **Plugins** screen in WordPress.
 3. Go to **AIO Dashboard > Settings** to configure robots.txt, sitemap.xml, and llms.
    txt options.
 4. If you have a license key, enter it in **AIO Dashboard > Settings > License** to
    enable AI-enhanced features.

#### Shortcodes

 * `[aio_dash_faq]` — Display all published FAQ posts (the `aio_dash_faq` post type)
 * `[aio_dash_content id="123"]` — Display one published, AI-generated content article
   by post ID
 * `[aio_dash_breadcrumb]` — Display a visual breadcrumb navigation with BreadcrumbList
   schema

## FAQ

### Does this plugin work without a license key?

Yes. All structural features (Schema.org output, robots.txt, sitemap.xml, llms.txt,
FAQ generation via heading analysis) work without a license key and without any 
external API calls.

### What data is sent externally?

Only when a license key is active and the mode is `ai_enhanced`: the title and plain-
text content of the post/page being processed are sent to our backend (app.aio-dash.
com), which passes it to an AI provider (Anthropic). For fixed pages specifically,
all of your site’s published fixed pages are additionally sent together so that 
site-wide business facts (address, phone number, etc.) can be extracted; if an address
is found, it is separately sent (address text only) to the Geospatial Information
Authority of Japan’s public geocoding API to obtain coordinates. No visitor data,
passwords, or personally identifiable information are ever transmitted. Separately,
if you choose to connect Google Analytics 4 and/or Google Search Console from the
Settings screen (entirely optional, independent of license status), read-only reporting
data is retrieved from Google and displayed on the Access Analysis screen — see “
External Services” above for details.

### Is this plugin compatible with Yoast SEO or Rank Math?

The plugin detects active SEO plugins and displays a warning in the admin screen
if a conflict is found for robots.txt or sitemap.xml. It will not automatically 
overwrite settings managed by other plugins.

### Which PHP versions are supported?

PHP 5.6.4 through PHP 8.2 and later. The plugin is tested on both ends of this range.

### Which WordPress versions are supported?

WordPress 4.9.8 and later. WordPress 3.6.1 and below are not supported.

### How does the FAQ shortcode work?

Generate FAQ posts from the **AIO Dashboard > FAQ** screen (the `aio_dash_faq` custom
post type). Generated posts are saved as drafts. After reviewing and publishing 
them, insert `[aio_dash_faq]` into any page — it automatically displays all currently
published FAQ posts.

### How is the AI-enhanced schema generated?

When a post or page is published or updated (and ai_enhanced mode is active), the
plugin automatically sends the title and content to the backend API. The generated`
description`, `abstract`, and `keywords` are cached in post meta. If the content
has not changed since the last generation, the API is not called again.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“garasaya AIO Dashboard” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ garasaya ](https://profiles.wordpress.org/garasaya/)

[Translate “garasaya AIO Dashboard” into your language.](https://translate.wordpress.org/projects/wp-plugins/garasaya-aio-dash)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/garasaya-aio-dash/),
check out the [SVN repository](https://plugins.svn.wordpress.org/garasaya-aio-dash/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/garasaya-aio-dash/)
by [RSS](https://plugins.trac.wordpress.org/log/garasaya-aio-dash/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * Changed: WordPress.orgプラグインディレクトリでの初回公開にあわせて、バージョン
   番号を1.0.0とした（自前配布版としては継続して安定運用してきた実績を踏まえ、初めて
   の安定版公開という区切りに合わせたもの。機能面の破壊的変更は無い）。
 * Added: アクセス解析画面のGA4セクションに、オーガニック検索流入数・ダイレクト流入
   数・エンゲージメント率（いずれも直近28日間）を追加した。既に取得済みのGA4データ
   を表示するのみで、新規の外部通信は発生しない。
 * Added: アクセス解析画面のKPIカードに「コンテンツカバレッジ率」を追加した（サンプリング
   調査で追跡中のキーワード数÷（追跡中キーワード数＋AIが提案した未追跡のキーワード
   候補数）。ライセンス未設定時・AI引用サンプリング調査未契約時は他のKPIカードと
   同様アップセル表示になる。
 * Changed: パーセンテージ系KPI（サンプリング調査の引用率・コンテンツカバレッジ率・
   エンゲージメント率）の表示を、プレーンな数字から半円型ゲージ（スピードメーター
   風）に変更した。色は赤黄緑の信号色ではなく、WordPress管理画面の配色スキーム（
   プロフィール画面で選択する「Fresh」「Ectoplasm」等）に自動追従させ、管理画面全体
   になじむようにしている。立ち上げたばかりで数値が低いサイトを警告のように見せる
   こともない。

#### 0.8.52

 * Fixed: 「サイトを分析する」等の重い分析処理がWP-Cronのバックグラウンド継続を経由
   して完了した場合、開始した管理者ではなく別のユーザーID（0）の下に結果が保存さ
   れ、開始した本人には結果が永遠に表示されない不具合を修正した。
 * Changed: 表示名を「AIO Dash」から「AIO Dashboard」に統一した（管理画面サイドバー
   メニュー・プライバシーポリシーガイドの見出し等）。
 * Changed: 管理画面で直接echoしていた一部のインラインCSS/JavaScriptを、WordPress
   コア標準の`wp_add_inline_style()`/`wp_add_inline_script()`経由の出力に変更した。
   表示・動作に変更はない。
 * Changed: AIクローラー検知ログに保存するUser-Agent・リクエストURIについて、保存
   前のサニタイズ処理を追加した（入力値の取り扱いをより厳格化するための対応で、既存
   の検知ロジックへの影響はない）。
 * Changed: `readme.txt`の「Requires at least」表記を「4.9.8」から「4.9」に修正した（
   表記のみの変更、動作要件に変更はない）。
 * Changed: WordPress公式のPlugin Checkツールの指摘を受け、sitemap.xml関連の3つの
   拡張用フィルター（`llmo_sitemap_exclude_post_types`・`llmo_sitemap_is_easys_internal_post_type`・`
   llmo_sitemap_exclude_slugs`）のフック名を、プラグイン名のプレフィックス規約に
   合わせて`aio_dash_`始まりの名称（`aio_dash_sitemap_exclude_post_types`等）に変更
   した。旧名称は0.8.45のプラグイン名リネーム（GEO PluginAIO Dash）以前の名残で、
   ショートコードとは異なり互換エイリアスは設けていない。これらのフィルターをご自身
   のテーマ・カスタムコードで利用している場合は、フック名の書き換えが必要。

#### 0.8.51

 * Fixed: テーマのヘッダー/フッターにのみ設置されたSNSアイコンリンクが、事業者情報
   のsameAsとして拾えない不具合を修正した。サイトトップページのヘッダー/フッター
   HTMLを取得してAI抽出に渡すようにした（固定ページ本文からの抽出ロジックとは独立、
   コードのみの変更）。

#### 0.8.50

 * Changed: 「外部対策について」ボックスの説明文を、内部対策との違い・掲載保証が
   無い旨がより伝わるよう3行構成に書き直した。

#### 0.8.49

 * Fixed: WordPressの言語を英語に設定していても、設定完了通知等の一部メッセージが
   日本語のまま表示されていた問題に対応した。プラグイン側の未翻訳文字列（22件）を
   英訳し、バックエンドAPIが返すメッセージも新設の`X-Locale`ヘッダーに応じて日本語/
   英語を切り替えるようにした（バックエンド側の対応、コードのみの変更）。

#### 0.8.48

 * Fixed: FAQ一括生成（AI解析モード）で、生成フェーズ完了後にレビュー（精査）フェーズ
   へ移るとプログレスバーが0%へ戻り、リセットされたように見えていた不具合を修正した。
   生成の完了率とレビューの完了率をそれぞれ50%ずつに按分し、1本のバーで単調に進む
   ようにした。

#### 0.8.47

 * Added: 「おすすめの対応」にもプログレスバーを追加した（対象ページ収集フェーズ
   を持たない単発生成のため、割合表示ではなく縞模様の不定形表示）。
 * Fixed: バックエンドが生成する「おすすめの対応」の固定文言・AIプロンプトに残って
   いた「GEOスコア」表記を「AIOスコア」に統一した。

#### 0.8.46

 * Added: AIOスコア解析・FAQ一括生成・コンテンツ生成・AIスキーマ最適化の「処理中」
   表示に、視覚的なプログレスバーを追加した。処理件数/合計件数が判明している場合
   は実際の割合を表示し、不明な場合（開始直後・通信エラー再試行中等）は縞模様アニメーション
   で「動いている」ことを示す。
 * Changed: プラグイン全体で用語を「GEOスコア」から「AIOスコア」へ統一した（表示
   用語のみ。バックエンドAPIとの内部識別子`geo_score`は変更していない）。

#### 0.8.45

 * Changed: 製品名を「GEO Plugin」から「AIO Dash」へ全面リネームした（WordPress.
   orgディレクトリの命名規約で「plugin」という語がプラグイン名・スラッグに使用禁止
   と判明したため）。namespace（GeoPluginAioDash）・関数/フックprefix（geo_plugin_aio_dash_）・
   スラッグ（geo-pluginaio-dash）・テキストドメイン・メインファイル名・バックエンド
   ドメイン（geo-plugin.comaio-dash.com）を一括変更した。ショートコード（`[aio_dash_faq]`・`[
   aio_dash_content]`・`[aio_dash_breadcrumb]`）・カスタム投稿タイプは新しい識別子
   に変わったが、既存サイトに埋め込み済みの旧ショートコード（`[geo_plugin_faq]`等）
   は互換エイリアスとして引き続き動作する。
 * このリネームに伴い、旧「GEO Plugin」の自動更新配信（app.geo-plugin.com）は本バージョン
   をもって終了する。既存にインストール済みの「GEO Plugin」をお使いの場合は、プラグ
   イン一覧から一度削除のうえ、本プラグイン「AIO Dash」を新規にインストールしてくだ
   さい（設定・ライセンスキーは新規インストール後に再設定が必要です）。

#### 0.8.44

 * Fixed: readme.txtの「External Services」開示一覧に、GEOスコア解析（`POST /api/
   v1/ai/page-quality/runs`）の項目が抜けていた不具合を修正した。事業者情報抽出と
   は「サイトを分析する」ボタンを共有するだけの別のAPIエンドポイントであり、独立
   した開示項目として追加した。

#### 0.8.43

 * Changed: 海外競合サービスの調査を踏まえ、UI・訴求文言を改善した。GEOスコアの評価
   観点（4つ）を説明文・完了メッセージに明記、ライセンスキー未設定時は外部通信が
   一切無い旨を設定画面・readme.txtの両方で明示、他のSEOプラグインとの競合が検出
   されなかった場合に「併用いただけます」という安心材料を新たに表示するようにした。
   あわせて`Plugin.php`のプライバシーポリシー欄の古い記述（ページ数上限・ボタンの
   設置場所）を実装に合わせて修正し、事業者情報抽出の開示項目も追加した。

#### 0.8.42

 * Changed: WordPress公式のPlugin Checkツールによる指摘のうち、コードで安全に対応
   できるものを修正した（nonce検証済み箇所への注釈漏れ、出力エスケープの明示化、
   翻訳コメント漏れ）。readme.txtのタグ数・概要文の長さ・「Tested up to」も整備した。

#### 0.8.41

 * Fixed: パンくずリスト（`[geo_breadcrumb]`ショートコード・BreadcrumbListスキーマ）
   の先頭項目「ホーム」のラベルが、ソースコード側で誤って英語表記のままになっており、
   日本語サイトで表示すると先頭だけ英語になってしまう不具合を修正した。

#### 0.8.40

 * Fixed: サンプリング調査「調査頻度」欄で、契約チャネル（channel）が取得できない
   場合に、代理店経由の契約であってもStripeチェックアウトの申込みリンクが表示され
   うる不具合を修正した。「セルフサーブの場合のみ表示する」という明示的な許可リスト
   の判定に変更した。

#### 0.8.39

 * Changed: プラグイン更新通知の表示位置を「おすすめの対応を確認する」ボタンの直後（
   AI生成カードより前）に移動し、「おすすめの対応」のひとつとして読めるようにした。

#### 0.8.38

 * Changed: 「外部対策について」の表示から推薦理由（「（詳細な推薦理由は生成され
   ませんでした）」を含む）を削除した。掲載先候補のリスト全体を囲む白背景のボックス
   を追加した（1件ずつのボックスではなく、リスト全体で1つ）。

#### 0.8.37

 * Added: サンプリング調査の実行頻度（隔週／週次／日次）を、有料アップグレードとして
   選択できるようにした。セルフサーブ契約は「調査頻度」欄の申込みリンクからStripe
   Checkoutへ、代理店経由の契約はパートナーポータルから切り替えられる。代理店経由
   のライセンスにはStripeチェックアウトUIを表示せず、頻度の変更はパートナーへの相談
   を案内する。

#### 0.8.36

 * Changed: プラグイン更新通知を、ページ上部の独立した通知バナーから「おすすめの
   対応」欄の先頭へ移動し、AIが生成する他の対応カードと同じ見た目（枠線ボックス）
   に変更した。
 * Changed: 「更新」ボタンで更新を実行した際、処理完了メッセージを2秒間表示してから
   ページを再読み込みするようにした（従来はメッセージが表示される間もなく即座に再
   読み込みされ、更新が完了した実感が持てなかったため）。

#### 0.8.35

 * Changed: 「外部対策について」欄の表示を、より控えめな見た目に変更した（外部対策
   はGEO Pluginとしては副次的な要素のため）。「掲載を依頼する」ボタンを削除し、代わり
   にサイト名・URLそれぞれをオンマウス時のみ下線が付くテキストリンクにした。白背景
   のボックス表示も削除した。あわせて説明文の改行位置を調整した。

#### 0.8.34

 * Added: ダッシュボードの「おすすめの対応」欄の下に「外部対策について」欄を追加
   した。サイトの業種に応じて、掲載を依頼できる外部のディレクトリサイト・業界メディア
   の候補上位5件を、AIが実際にWeb検索を行った上で選定・表示する。表示するURLは必ず
   実際の検索結果に含まれるものだけを採用し、検索結果に基づかないURLは機械的に除外
   する（AIの記憶による捏造防止）。事業者情報（業種）が未抽出のサイトでは、AIスキーマ
   最適化での抽出を案内する。リンクは新しいタブで開く。

#### 0.8.33

 * Fixed: 「おすすめの対応」の実行が実際には失敗している（アクセス拒否・AI利用金額
   上限到達等）場合に、「現時点で特にご案内できる対応はありませんでした。」という、
   正常に0件と判定された場合と同じ表示になってしまっていた不具合を修正した。失敗
   時は明確なエラーメッセージを表示するようにした。あわせて、バックエンド側でAIの
   応答がJSON形式として解釈できなかった場合も、実行失敗ではなくルールベース救済（
   前バージョンで追加）に合流させ、AIの応答形式の揺れによって同じ「0件」表示が誤
   って出る経路を塞いだ。

#### 0.8.32

 * Fixed: v0.8.31での「更新後にプラグインが無効化されたまま放置される」不具合の修正
   が、実運用では効いていなかった問題を修正した。原因は、修正に使った`activate_plugin()`
   がプラグイン本体ファイルを`include_once`で改めて読み込み有効化フックまで実行する
   仕様のため、更新処理と同一リクエスト内で（既に読み込まれ動作中の）自分自身を再度
   読み込むことになり、期待通りに機能していなかったため。ファイルの再読み込みを伴
   わない、`active_plugins`オプションへの直接書き戻しに変更した。実際に自己更新処理
   を最初から最後まで動かして有効化状態が正しく維持されることを確認済み。

#### 0.8.31

 * Fixed: 「おすすめの対応」欄の「更新」ボタンでプラグインを更新すると、ファイル
   の更新自体は成功するもののプラグインが無効化されたまま放置され、GEO Pluginのメニュー
   が消えてしまう重大な不具合を修正した。原因は、WordPressコアが更新処理中にプラグ
   インを一時的に無効化する際、単発の更新APIではその再有効化までは自動で行われない
   ためだった（コア標準の「今すぐ更新」機能が使う一括更新APIには再有効化処理が含
   まれるが、本機能はそれを踏襲していなかった）。更新完了後に明示的に再有効化する
   よう修正した。既にこの不具合の影響を受けたサイトは、プラグイン一覧から手動で有効
   化すれば復旧する（ファイル自体は破損していない）。

#### 0.8.30

 * Changed: 「おすすめの対応」欄の各カードのリンクを、汎用的な「対応する」ボタン
   から、対応するGEO Plugin機能名（AIスキーマ最適化・GEOスコア・FAQ生成・コンテンツ
   生成・サンプリング調査）を表示するボタンに変更した。AIスキーマ最適化・GEOスコア
   はダッシュボード内の該当セクションへ直接スクロールするアンカーリンクにした。GEO
   Pluginの機能に紐付かない一般的な助言にはリンクボタン自体を表示しない。
 * Removed: 「おすすめの対応」欄の下にあった各機能ページへの一覧クイックリンク（
   FAQ生成・コンテンツ生成・サンプリング調査・アクセス解析・設定）は、各カードの
   リンクと役割が重複していたため削除した。

#### 0.8.29

 * Added: プラグイン本体の更新が利用可能な場合、「おすすめの対応」欄の最上部に通知
   を表示し、「更新」ボタンからその場で更新できるようにした。ログインユーザーの権限（`
   edit_posts`）に依らず実行できる（管理者限定のWordPress標準の`update_plugins`権限
   チェックを、この機能に限り意図的にバイパスしている）。

#### 0.8.28

 * Added: 「おすすめの対応」欄を追加した。アクセス解析（GA4・Google Search Console・
   サンプリング調査）・GEOスコア・各機能（AIスキーマ最適化・FAQ生成・コンテンツ生成）
   の実施状況をルールベースで収集し、AIが横断的に優先順位付けした対応をダッシュボード
   ページ最上部に提示する。ボタン押下で都度確認する方式（自動通知は行わない）で、
   前回確認時からの変化が一定以上ある場合のみ管理画面に控えめなリマインド通知を表示
   する（この通知自体はAI・バックエンド通信を伴わない）。
 * Added: 「おすすめの対応」欄の下に、FAQ生成・コンテンツ生成（契約時のみ）・サンプリング
   調査（契約時のみ）・アクセス解析・設定への横並びクイックリンクを追加した。
 * Changed: 「最適化」ページの名称を「ダッシュボード」に変更した（URL・内部識別子
   は変更していない）。

#### 0.8.27

 * Changed: 「AIスキーマ最適化」欄の「自己接続テスト（本文取得の疎通確認）」を、
   通常は使わないトラブルシューティング用機能であることを踏まえ、既定ではチェック
   ボックスとラベルのみを表示する形に変更した。チェックを入れると、これまで通りの
   ボタン・説明文が表示される。

#### 0.8.26

 * Changed: サンプリング調査の実行頻度を週次から隔週（2週間に1回）に変更した。AI
   APIコストに占める比重が大きいため頻度を下げたもので、トレンド観測・コンテンツ
   生成へのフィードバックへの影響は限定的と判断した。
 * Added: サンプリング調査ページの「調査結果」欄の上に「調査頻度」欄を追加し、現在
   の頻度（隔週）を表示するようにした。「週次」「日次」は将来のプラン別頻度差別化
   に備えた表示のみの選択肢で、現時点では切り替え機能を持たない。

#### 0.8.25

 * Changed: FAQ生成一覧画面の解析ボックス（説明文・「サイトを解析する」ボタン）・
   表示形式/ショートコード案内ボックスから、白い背景・影のあるボックス見た目を削除
   した（前バージョンで表示位置を修正した際の副作用として白背景が付いていたのを、
   位置はそのままに見た目のみ元に戻した）。

#### 0.8.24

 * Fixed: FAQ生成一覧画面で、「FAQ生成」の見出しと「新規追加」ボタンの表示位置が、
   解析ボックス・ショートコード案内の下（生成済み一覧の上）に後退してしまう不具合
   を修正した。原因は、これらのボックスをアラート風の見た目から通常表示に変更した
   際（2026-08-21）に、WordPressコアが見出し直下への表示位置調整に使う`notice`クラス
   まで一緒に外してしまっていたため。

#### 0.8.23

 * Changed: 「AIスキーマ強化」の表示名を「AIスキーマ最適化」に統一した。あわせて
   説明文を簡潔にし、未生成件数の表示・強制再生成に関する説明文を削除した。
 * Changed: コンテンツ生成ページの説明文を整理した（重複する見出しの削除、仕様変更
   前の注記の削除、AI処理がバックグラウンドで継続する旨の文言修正）。
 * Changed: 左メニューの「コンテンツ生成」「サンプリング調査」の表示順を入れ替え
   た。

#### 0.8.22

 * Changed: 「スキーマ再構築」「GEOスコア分析」「コンテンツ生成」の3画面で、処理
   中の表現（ボタンの非活性化・進捗メッセージの表示位置）を統一した。処理完了時には、
   閉じられる通知ボックスで結果（完了・エラー・中断など）を表示するようにした。

#### 0.8.21

 * Fixed: GEOスコア等の解析結果で、タイトルに絵文字が含まれる投稿が「🎍新年のご挨拶」
   のように文字化けして表示される不具合を修正した。原因は、絵文字を含むタイトルが
   データベースに実体参照の生テキストのまま保存されており、それをデコードせず表示
   していたため。本文と同じデコード処理をタイトルにも適用し、正しい絵文字で表示さ
   れるようにした。

#### 0.8.20

 * Changed: GEOスコア（ページ品質評価）・サイトプロファイリングの対象ページ選定を「
   固定ページ全件＋直近1年の投稿全件」に変更した。従来は固定ページを優先し、残り
   枠のみ投稿で埋める上限方式だったため、固定ページ数が多いサイトでは投稿（ブログ
   記事）が評価対象からほぼ漏れていた。
 * Fixed: 上記の対象件数拡大に伴い、収集フェーズ（GEOスコアの「サイトを分析する」）
   で本文に絵文字が含まれる投稿があると、進捗の保存が理由なく失われ、対象の大半が
   評価されないまま完了してしまう不具合を修正した。原因は保存先データベースの文字
   コード設定（絵文字を含む4バイトUTF-8文字に対応していない`utf8`）で、保存前にエン
   コードを変更することで解決した。

#### 0.8.19

 * Fixed: 事業者情報のsameAs（GoogleビジネスプロフィールやSNS等の外部リンク）が、
   実在するリンクを正しく検出できず常に空になる不具合を修正した。原因は、AIへ送って
   いた本文がリンクの表示テキストは運ぶがリンク先URL（href属性値）を一切運ばない
   プレーンテキストだったため。リンク構造を保持したHTMLへ送信方式を切り替えて解決
   した（管理画面への手動入力欄追加は行わず、AI抽出のみに依存する既存方針は維持）。
 * Added: ロゴ（logo）が未設定のサイト向けに、トップページの`<head>`から`apple-touch-
   icon`等の慣習的なアイコンタグを検出するフォールバックを追加した。WordPress標準
   のカスタムロゴ・サイトアイコン機能を使わず、テーマが独自にfaviconファイルを出力
   しているだけのサイト（EASYS CMS採用サイト等）でもロゴが出力されるようになる。

#### 0.8.18

 * Added: JobPosting（求人）スキーマが、Google しごと検索のリッチリザルトバリデーション
   要件を満たすよう、専用の正規化処理を追加した。employmentType（雇用形態）を「正社員」
   等の自由記述からSchema.org列挙値（FULL_TIME等）へ、baseSalary（給与）を自由文字
   列からMonetaryAmount型へ（本文に月給/日給/時給等の単位が明記されている場合のみ）、
   jobLocation（勤務地）を自由文字列からPostalAddress型（複数エリアの場合はapplicantLocationRequirements
   も追加）へ変換する。datePosted（掲載日、Google必須プロパティ）は本文に明記が無い
   場合、投稿の更新日・公開日から自動的に補完する。必須プロパティが揃わない求人は
   出力を見送り、「スキーマ再構築」の完了通知に件数を表示する。

#### 0.8.17

 * Fixed: 「スキーマ再構築」の実行中、まれにAjax応答がJSONの代わりにサーバーのエラー
   ページ（HTML）を返し、「Unexpected token ‘<‘…」というエラーで処理が止まって見え
   てしまう不具合に対応した。原因は複合的だったため3点対応した：(1) AI送信用HTML
   の属性除去処理が再帰呼び出しだったため、EASYSページビルダー等が出力する非常に
   深い入れ子構造のページでPHPのコールスタックを消費しすぎる可能性があった処理を、
   深さに依存しない反復処理に書き換えた。(2) Ajaxハンドラに例外処理を追加し、捕捉
   可能なエラーでは必ず正常なJSON形式で応答するようにした。(3) 1回のAjaxリクエスト
   で処理する件数の上限を2件から1件にさらに縮小し、タイムアウトへの安全マージンを
   増やした。あわせて、JS側もポーリングが1回失敗しただけでは諦めず、サーバー側の
   処理継続を信じて数回まで再試行してから表示を切り替えるよう変更した。

#### 0.8.16

 * Fixed: 「スキーマ再構築」ボタンを押した後、別の管理画面へ移動すると処理そのもの
   が中断されてしまう不具合を修正した。従来はブラウザのJSが再帰的にAjaxを呼び続ける
   実装のみで、ページを離れるとJSの実行が止まるため処理も本当に中断されていた。「
   サイトを分析する」機能と同じ、WP-Cron・管理画面アクセス時（admin_init）・画面
   を開いている間のポーリングの3経路のいずれか早いものが処理を進める仕組み（`AiSchemaEnhanceBackgroundRunner`）
   に作り直し、タブを閉じても別の画面へ移動しても本当に処理が継続するようにした。
   完了時はどの画面を開いても完了通知が表示される。

#### 0.8.15

 * Fixed: 「スキーマ再構築」が、投稿・固定ページ数が多いサイト（特にEASYS CMS採用
   サイト等、本文がpost_content外にあり自己フェッチが必要なページが多いサイト）で、
   通常のホスティング環境のPHP実行時間制限・リバースプロキシのタイムアウトに抵触
   し、description/abstract/keywords/JobPostingが空のまま完了してしまう不具合を修正
   した。木下設備様サイトの実データで、実際に「スキーマ再構築」後もスキーマに変化
   が見られないという報告を受けて調査し発見。3点の改善を行った：(1) Ajax分割実行
   のチャンクを跨いで、同一バッチ内で既に処理済みの投稿に対して不要な自己フェッチ（
   本文再取得）を繰り返していた無駄を解消、(2) AI送信用HTMLからページビルダー由来
   の`id`/`class`属性・インデント空白を除去しトークン数を大幅削減（実測で1ページ
   あたり3倍程度）、(3) 1回のAjaxリクエストで処理する件数の上限を5件から2件に縮小（
   AI応答時間は出力トークン数に律速されるため、本文サイズの削減だけでは1リクエスト
   あたりの所要時間が改善しないことが判明したため）。

#### 0.8.14

 * Fixed: 0.8.13で追加したAI強化スキーマ生成用のHTML正規化処理（ContentNormalizer::
   to_structured_html()）が、一部のPHP環境（PHP 5.6等）でDOMテキストノードのchildNodes
   がnullを返すケースを想定しておらず、PHP警告を発生させていた不具合を修正した。
   木下設備様サイトの実データ（採用ページ）での検証時に発見。

#### 0.8.13

 * Added: 1ページに複数の求人（職種）が掲載されている採用ページで、JobPostingを職種
   ごとに正しく分離して出力できるようにした。従来は1ページにつき1件のJobPostingしか
   出力できなかった。求人の詳細説明（description）・応募資格（qualifications）・
   手当等（incentiveCompensation/jobBenefits）プロパティも新たに出力対象に追加した。
 * Improved: AI強化スキーマ生成（description/abstract/keywords/schema_type/job_posting）
   に渡す本文を、改行・テーブル列構造を完全に失うプレーンテキストから、構造を保持
   した軽量HTMLに変更した。これにより、テーブル形式で複数の求人条件（給与・雇用形態
   等）が列ごとに並ぶページでも、AIがどの値がどの求人に属するか正しく判別できるよう
   になった。

#### 0.8.12

 * Fixed: EASYS CMS等、本文がpost_content以外の場所（テーマ独自のテンプレート機構）
   で組み立てられているサイトで、投稿・固定ページの公開・更新時の自動トリガーが常に「
   本文が空」と誤判定し、ページ単位のAI強化スキーマ（description/abstract/keywords/
   ページ種別/求人情報）が一度も自動生成されない不具合を修正した。木下設備様サイト
   の実データ検証で発見。手動の「スキーマ再構築」ボタン側は自己フェッチによるフォールバック
   が既に実装済みだったため影響を受けていなかったが、自動トリガー側には同じフォールバック
   が欠けていた。

#### 0.8.11

 * Added: 事業者情報の抽出に、正式社名とは別に本文中で使われる屋号・拠点の呼称（
   alternateName）を追加した。木下設備様サイトの実データ検証（「本社所在地：西部
   水道工事センター」という表記）で、事実情報がページ単位のabstractに文章として埋
   め込まれるだけで構造化されていない例が見つかったため、founding_date等と同じ方針
   で分離した。
 * Improved: 対応エリア（areaServed）の抽出精度を改善した。「北九州市内」のような
   行政区画名+助詞の表記を正式名称に正規化し、「水巻町・芦屋町」のような複数地名
   の並記を個別の配列要素に分割するようプロンプトを調整した。

#### 0.8.10

 * Added: 事業者情報（Organization/LocalBusinessスキーマ）に、住所を国土地理院の
   ジオコーディングAPIで変換した緯度経度（geo/GeoCoordinates）を追加した。住所が
   抽出できている場合のみ自動的に付与される。ジオコーディングに失敗した場合もエラー
   にはならず、geoプロパティを省略するのみで他の事業者情報の更新は継続する。
 * Fixed: readme.txtの外部送信開示に、事業者情報抽出（サイト単位の固定ページ全文
   をバックエンド経由でAnthropic/OpenAIへ送信する機能、0.8.7で追加）が漏れていた
   不具合を修正した。あわせて、AI強化スキーマ生成の説明をdescription/abstract/keywords
   のみから、ページ種別判定・JobPosting・事業者情報抽出を含む現行の内容に更新した。

#### 0.8.9

 * Added: 事業者情報の抽出に、創立日（foundingDate）・代表者名（founder）・建設業
   許可番号等（identifier）を追加した。従来はこれらの事実情報がページ単位のabstract
   に文章として埋め込まれるだけで構造化されていなかったが、Organization/LocalBusiness
   スキーマの構造化プロパティとして分離されるようになった。あわせて、ページ単位の
   AI強化スキーマ生成が、これらの事実をabstractへ重複記載しないよう指示を追加した。

#### 0.8.8

 * Fixed: 「スキーマ再構築」ボタンが、ページ単位のAI強化スキーマ（description/abstract/
   keywords/ページ種別/求人情報）のみを再生成し、サイト単位の事業者情報（住所・電話
   番号・対応エリア・LocalBusinessサブタイプ）を更新していなかった不具合を修正した。
   木下設備様サイトの実データで検証し発見。「スキーマ再構築」を押すと、ページ単位
   のキャッシュクリアに加えて事業者情報の再抽出もあわせて実行されるようになった。

#### 0.8.7

 * Changed: AI強化スキーマ生成（ai_enhanced mode）の対象を大幅に拡張した。従来の
   description/abstract/keywordsに加え、ページ種別（AboutPage・ContactPage・Service
   等）の自動判定、求人コンテンツのJobPosting化、事業者情報（住所・電話番号・対応
   エリア・sameAs、業種に応じたLocalBusinessサブタイプ）の自動抽出に対応した。事業
   者情報は固定ページ（会社概要・アクセス等）の本文から抽出し、Organization/WebSite
   スキーマとllms.txtのサイト概要に反映される。固定ページの更新時に自動的に再抽出
   されるほか、「サイトを分析する」の実行時にも更新される。
 * Changed: 投稿・固定ページ一覧の「AI強化スキーマの更新」ボタンを「スキーマ再構築」
   に改名し、動作を変更した。従来は未生成分のみを対象にしていたが、今後は生成済み・
   未生成を問わず全件を強制的に再生成する（プラグイン更新でAI強化スキーマの生成内容
   が改善された際に、既存のキャッシュを一括で最新化できるようにするため）。投稿・
   固定ページの公開・更新時の自動生成は引き続き変更分のみを対象にする。

#### 0.8.6

 * Changed: 「設定」を除くGEO Plugin管理画面（最適化・アクセス解析・サンプリング
   調査・コンテンツ生成、およびFAQ生成の一括操作）を、管理者権限（manage_options）
   限定から投稿編集権限（edit_posts）があれば利用できるよう変更した。EASYS CMS等、
   投稿編集は許可するが管理者権限は与えないカスタムロールの利用者でも、ライセンス
   キー等サイト全体の設定に触れることなくこれらの機能を利用できるようになる。「設定」
   画面は引き続き管理者権限が必要。

#### 0.8.5

 * Fixed: readme.txtの「External Services」に、実装済みだったGoogle Analytics 4・
   Google Search Console連携（いずれもOAuth・オプトイン）の開示が漏れていた不具合
   を修正した。両サービスとも読み取り専用のデータ取得のみで、接続はユーザーの明示
   操作によってのみ発生する。

#### 0.8.4

 * Changed: Google Search Console（GSC）連携のアクセス解析画面をGA4連携と同じSite
   Kit風の構成に刷新した。検索クリック数の推移グラフとサンプリング調査キーワード
   との相関（GEO特化データ）を主要表示にまとめ、検索クエリ・人気ページ・サイトマップ
   送信状況（Site Kit等の汎用アクセス解析でも確認できる指標）は折りたたみ表示にした。

#### 0.8.3

 * Added: ライセンス有効化済みのサイトについて、AIクローラーのアクセスログ（日別・
   サービス別の検知件数の集計のみ、User-Agent・リクエストパス・IPアドレスは送信しない）
   をバックエンドへ日次同期するようになった。同期されたデータはコンテンツ生成のアイデア
   提案等、他機能でも活用される。ライセンス未設定のサイトは従来通りローカル表示のみ
   で完結する。

#### 0.8.2

 * Added: FAQ一括生成のAI解析モードで、Google Analytics（GA4）連携済みのサイトは
   アクセス実績（セッション数）が採点AIへのヒントとして渡るようになり、アクセス実績
   の高いページのFAQ化優先度が上がりやすくなった。

#### 0.8.1

 * Fixed: Google Search Console連携まわりの表示文言が、管理画面の表示言語を英語に
   切り替えても翻訳されない不具合を修正した（v0.8.0で追加した文言の翻訳データ登録
   漏れ）。

#### 0.8.0

 * Added: Google Search Console（GSC）との連携を追加した。設定画面から連携し、アクセス
   解析画面で検索クエリ分析（クリック数・表示回数・CTR・平均掲載順位）・サイトマップ
   の送信状況・サンプリング調査キーワードとの相関（自然検索での掲載順位×AI引用の
   有無）を確認できる。表示は今回プレーンな一覧表のみで、GA4のようなグラフィカル
   な見た目への作り込みは別途対応予定。インデックス状況の可視化はGSCの公開APIに対応
   する集計エンドポイントが無いため今回は見送った。

#### 0.7.33

 * Fixed: FAQ一括生成の構造解析モードで、採点時にEASYS CMS等（本文が実質空のページ）
   を正しく候補判定できるようになった一方、実際の生成処理にはフォールバックが無く「
   ページが構造化されていないのでFAQが生成できません」と失敗していた不具合を修正
   した。
 * Fixed: パンくずリスト（BreadcrumbList）スキーマの出力判定が、本文が実質空のページ（
   EASYS CMS等）でショートコードの設置を検知できず、常にスキーマが付与されない不具合
   を修正した。
 * Fixed: AI解析モードのFAQ生成（`AiFaqGenerator`）にも、本文が実質空のページ向け
   の自己フェッチフォールバックを追加した（一貫性のための対応）。

#### 0.7.32

 * Fixed: FAQ一括生成の構造解析モード（ライセンス未登録時）で、本文が実質空のページ（
   EASYS CMS等）の見出し抽出が常に「変換可能な見出しがありません」判定になってい
   た不具合を修正した。自サイトへの自己フェッチで、見出し構造を保持した本文を補う
   ようにした。AI解析モードの抜粋抽出にも同じフォールバックを追加した。
 * Fixed: コンテンツ生成のサイト全体アイデーションで、本文が実質空のページ（EASYS
   CMS等）がタイトル・冒頭抜粋の候補から漏れていた不具合を修正した。自サイトへの
   自己フェッチで本文を補うようにし、対象件数が多いサイトでもタイムアウトしないよう
   自己フェッチを分割実行するようにした。

#### 0.7.31

 * Changed: llms.txtの動的出力が、本文が実質空のページ（EASYS CMS等）に対して自サイト
   への自己フェッチで本文を補うようにした。フェッチ結果は1時間キャッシュし、AIボット・
   訪問者からの毎リクエストで自己フェッチが走らないようにした。
 * Fixed: FAQ一括生成の対象候補の絞り込みが、本文が実質空のページ（EASYS CMS等）
   を常に候補から除外していた不具合を修正した。自サイトへの自己フェッチで本文を補う
   ようにし、対象件数が多いサイトでもタイムアウトしないよう自己フェッチを分割実行
   するようにした。

#### 0.7.30

 * Fixed: コンテンツ生成のショートコード出力で、AIが生成した本文の段落が<p>タグで
   囲まれず、カスタムCSSが効かないことがある不具合を修正した。AI生成プロンプト側
   でも<p>の使用を指示しているが、生成結果が指示に完全に従うとは限らないため、出力
   直前にwpautop()（FAQ生成でも使用している既存パターン）で補完するようにした。

#### 0.7.29

 * Changed: サンプリング調査の「引用の推移」ドット表示が、実行回数の増加とともに
   際限なく増え続けていたため、直近12件（≒直近1四半期分、週次実行想定）に表示件数
   の上限を設けた。アクセス解析画面のサンプリング調査結果サマリー・引用率KPIも同じ
   件数に統一した。

#### 0.7.28

 * Fixed: アクセス解析・サンプリング調査画面の日時表示が、管理画面の表示言語を英語
   に切り替えても日本語書式（例：2026年8月23日）のまま変わらない不具合を修正した。
   サイトの「一般設定」の日付・時刻書式オプションに依存せず、プラグイン自身の翻訳
   文字列で書式を管理するようにし、表示言語の切り替えに追従するようにした。

#### 0.7.27

 * Changed: アクセス解析画面の「直近のアクセス」一覧が件数の増加とともに際限なく
   縦に伸びてしまう不具合を改善した。約10件ぶんの高さでスクロール表示するようにし、
   枠の下端をドラッグして表示領域の高さを変更できるようにした。

#### 0.7.26

 * Added: アクセス解析画面をSite Kit風のグラフィカルなダッシュボードに刷新した（
   Google Auth Platform審査通過対応）。AIボットのアクセス数・AI経由セッション数・
   サンプリング調査の引用率をKPIカードで表示し、AIクローラーの日別検知件数を棒グラフ
   で、サンプリング調査の引用推移をドット表示で可視化する（いずれもJS不要のサーバー
   サイド生成SVG）。
 * Changed: Google Analytics（GA4）の汎用指標（日別セッション数・流入チャネル・上位
   ページ）はSite Kit等と内容が重複するため折りたたみ表示に簡略化し、AI検索サービス
   経由のアクセスを主要データとして残した。
 * Changed: サンプリング調査結果の「引用の推移」表示を、テキスト記号（●/－）から
   SVGのドット表示に統一した（アクセス解析画面・サンプリング調査画面の両方）。

#### 0.7.25

 * Fixed: FAQ生成・コンテンツ生成画面下部の「CSSカスタマイズ」欄が、`admin_footer`
   フックで管理画面の本来のコンテンツ領域（#wpcontent）の外側に出力されていたため
   サイドバーの下に隠れてレイアウトが崩れる不具合を修正した。正しいコンテンツ領域（#
   wpbody-content）へ移動させてから表示するように変更した。

#### 0.7.24

 * Changed: メッセージボックス（notice）の用途をエラー・警告のみに限定し、FAQ一括
   生成・ショートコード案内・ライセンス発行/有料プラン申込みの操作UIを通常表示へ
   変更した。ライセンス発行・有料プラン申込みのリンクはテキストリンク調のボタンに
   変更し、「ライセンスキーだけ無料で発行する」の文言を「ライセンスキーを発行する」
   に変更した。
 * Changed: 有料プラン（サンプリング調査・コンテンツ生成）の申込みリンクはライセンス
   登録後にのみ表示し、対応するメニュー項目は実際にプランが有効な場合のみ表示する
   ように変更した。
 * Added: 「最適化」ページを新設し、「AIスキーマ強化」「GEOスコア解析」をここへ統合
   した（従来の設置場所には残さない）。メニューは「GEO Plugin」と「FAQ生成」の間
   に配置し、トップレベル「GEO Plugin」クリック時も本ページを表示する。
 * Added: FAQ設置ショートコードに表示形式（デフォルト／アコーディオン／アンカーリンク）
   の選択機能を追加した。FAQ一覧画面のラジオボタンから切り替えられる。
 * Added: FAQ生成・コンテンツ生成の出力にテーマに馴染む既定CSSを適用し、管理画面
   下部の「CSSカスタマイズ」欄（クラス名ガイド＋カスタムCSS入力）でサイト単位に上書き
   できるようにした。
 * Added: コンテンツ生成をショートコード化した。生成された記事は下書き投稿（非公開
   の専用投稿タイプ）として保存され、管理者が内容を確認のうえ公開操作を行うと `[
   geo_plugin_content id="N"]` ショートコードで設置できるようになる（下書きのまま
   では出力されない）。

#### 0.7.23

 * Fixed: llms.txtの動的出力（物理ファイル未使用時）が、ホスティング側の静的キャッシュ
   機構によって本文のみ複製・以後直接配信されるとcharset情報を失い文字化けする不具合
   を修正した。動的出力にもUTF-8のBOMを付与し、charsetヘッダーが失われても本文だけ
   で文字コードを判定できるようにした（物理ファイル乗っ取り時と同じ対策を動的出力
   にも適用）。

#### 0.7.22

 * Fixed: EASYS CMS等、投稿本文が空でサーバー自己フェッチ（`RenderedContentFetcher`）
   に依存するサイトで、AI強化スキーマの生成が「cURL error 60: unable to get local
   issuer certificate」により全件スキップになる不具合を修正した。バックエンドAPI
   通信・自前更新チェックと同様、プラグイン同梱のCA証明書ファイルを明示指定するよう
   にした。

#### 0.7.21

 * Added: AI強化スキーマ（「AI強化スキーマの更新」）に「自己接続テスト」ボタンを
   追加した。EASYS CMS等、投稿本文が空でサーバーの自己フェッチに依存するサイトで
   生成が全件「スキップ」になる場合の原因切り分け用に、サーバーが自分自身のページ
   へアクセスできているかをその場で確認できる（HTTPステータス・取得バイト数・本文
   として抽出できた文字数、または通信エラーの内容を画面に表示する）。WP標準の「サイト
   ヘルス」のループバックリクエスト診断が無い・表示されない環境（古いWordPressコア
   等）向けの代替。

#### 0.7.20

 * Fixed: robots.txtの既存物理ファイルを乗っ取る際、既存内容にadmin-ajax.php経由
   のフロント表示を妨げないための`Disallow: /wp-admin/`・`Allow: /wp-admin/admin-
   ajax.php`（WordPressコアが動的出力時に常に付与している既定ルール）が含まれない
   場合、そのまま欠落してしまう不具合を修正した。既存内容に`/wp-admin/`への言及が
   一切無い場合のみ、WordPressコアと同じ内容を補うようにした。

#### 0.7.19

 * Added: アクセス解析画面にGoogle Analytics（GA4）の実データ表示を追加した（直近
   7日間の日別セッション数、直近28日間の流入チャネル・上位ページ、AI検索サービス（
   ChatGPT・Perplexity・Gemini等）経由のアクセス）。Google Analyticsとの連携・プロパティ
   IDの設定は引き続き設定画面から行う。

#### 0.7.18

 * Fixed: GEOスコア対象ページ収集で、特定のページの処理中に致命的エラーが発生すると、
   そのページを無限に再試行し続けて進捗が完全に止まってしまう不具合を修正した。共有
   ホスティング環境でのPHP致命的エラーはtry/catchで捕捉できないため、対象ページを
   キューから取り除いた記録を処理前に保存する方式に変更し、該当ページの評価はスキップ
   されるが収集全体は必ず先へ進むようにした。

#### 0.7.17

 * Changed: FAQ一括生成（AI解析モード）の件数指定を、ページ数単位からQ&A件数単位（
   少なめ/おすすめ/多め、目安10/20/30件）に変更した。目標件数の2倍程度を目安に多め
   にページを生成対象へ含め、AIによる生成後レビューで内容が薄い・重複するQ&Aを除外
   したうえで、優先度の高いものから目標件数だけを採用するようにした。
 * Changed: FAQ一括生成の解析（採点）ステップを、ページ単位のAI呼び出しから最大15
   ページ/回のバッチ呼び出しに変更し、対象ページが多いサイトでの解析速度を改善した。

#### 0.7.16

 * Fixed: EASYS CMS等、post_content以外の場所から本文を組み立てて表示するテーマで、
   FAQショートコードを設置したページにFAQPageスキーマ（構造化データ）が付与されない
   不具合を修正した。AI強化スキーマの一括生成処理が既に行っている自己フェッチ結果
   を再利用してショートコードの出力有無を判定するため、追加の通信は発生しない。

#### 0.7.15

 * Fixed: robots.txt・sitemap.xmlで「強制的に有効化する」を実行しても、検出された
   競合プラグイン（Yoast SEO、Google XML Sitemaps等）が動き続けている限り実際には
   制御を奪えなかった不具合を修正した。強制有効化時に該当プラグインを自動的に無効
   化するようにした。
 * Changed: robots.txtも、書き込み権限が無い既存ファイルに対して退避（リネーム）
   新規作成の方式に対応し、sitemap.xmlと同じ挙動に統一した。無効化すると退避した
   ファイルは自動的に復元される。
 * Changed: 既存のrobots.txtを直接読み込めない場合でも、自サイトへのHTTPリクエスト
   で内容を取得し、独自のルール（Disallow等）を維持したままAIクローラー向けのルール
   を追記できるようにした。
 * Fixed: 設定の保存に失敗した場合でも「設定を保存しました。」の成功表示が出てしま
   い、失敗が分かりにくかった不具合を修正した。

#### 0.7.14

 * Changed: FAQ一括生成の下書き反映処理を分割処理化し、「下書きを作成しています…（
   N件完了）」の進捗表示を追加した。体感速度の改善に加え、下記の1記事1問1答化による
   反映件数増加時のタイムアウトを予防する。
 * Changed: FAQ一括生成のバックエンドqueueワーカー並列数を増強し、生成速度を改善
   した。
 * Changed: FAQ一括生成を1記事1問1答形式に変更した。1つの投稿・固定ページから複数
   のFAQが生成される場合、それぞれ個別の下書き投稿（タイトル＝質問文）として作成
   されるようになり、一覧での確認・編集がしやすくなった。複数ページのFAQを1投稿に
   まとめていた「カテゴリーモード」は廃止した。

#### 0.7.13

 * Changed: AI引用サンプリング調査（調査結果・調査項目の追加・AIによるキーワード
   候補）を独立した管理画面ページに分離し、メニューを「FAQ生成」の直下に配置した。
   設定画面・アクセス解析画面からは削除。
 * Changed: GEOスコア（ページ品質評価）を、アクセス解析画面からコンテンツ生成画面
   のトップへ移動した。
 * Changed: AI強化スキーマの一括生成を、投稿・固定ページ一覧画面から設定画面（llms.
   txt自動生成の保存ボタンの下）へ移動した。
 * Changed: 設定画面の各セクション間の余白を統一し、見分けやすくした。
 * Removed: GA4連携の「直近7日間のセッション数」表示を一旦削除した（この表示だけ
   ではGoogle Auth Platformの審査要件を満たせないため。エラーメッセージの表示は維持）。
 * Added: セルフサーブ契約で、プランA/Bを選ばずにライセンスキーだけを無料で発行できる
   ようになった（基本機能のAIモードはプランと無関係に利用できるため）。プランは後
   から追加申込みできる。

#### 0.7.12

 * Changed: GEOスコアの対象ページ収集を完全にバックグラウンド処理化した（WP-Cron・
   管理画面の他ページ閲覧時・GEOスコア画面を開いている間のポーリングのいずれか早い
   もので進む）。GEOスコア画面のタブを閉じても収集が継続する。
 * Fixed: 収集処理が「進捗X/Yのまま止まる」ことがあった不具合を修正。1バッチあたり
   の自己フェッチ件数・タイムアウトを短縮し、処理の実行前に必ず次回分のリトライを
   予約するようにした。

#### 0.7.11

 * Fixed: GEOスコア（ページ品質評価・サイトプロファイリング）の対象ページ収集が、
   本文実質空のページ（page builder等でpost_content以外に本文があるテーマ）をただ
   除外するだけで、結果が少数のブログ記事に偏ってしまうことがあった。AI強化スキーマ
   と同じレンダリング済みHTML取得フォールバックを追加し、これらのページも正しく評価
   対象に含められるようにした。
 * Changed: 上記フォールバックによる自己フェッチが1回のリクエストに集中してタイム
   アウトしないよう、対象ページ収集を数件ずつの分割Ajax処理に変更した。

#### 0.7.10

 * Fixed: “GEOスコア” (page quality evaluation / site profiling) could fail its 
   entire batch submission with a validation error when candidate pages included
   one whose body was effectively empty (shortcode-only, or only `&nbsp;` placeholder
   paragraphs) — the same class of bug previously fixed for FAQ bulk-generate and
   AI-enhanced schema. This content-emptiness detection is now consolidated into
   a single shared helper (`GeoPlugin\Support\ContentNormalizer`) used consistently
   everywhere, to prevent this recurring across other features.

#### 0.7.9

 * Added: a `llmo_sitemap_is_easys_internal_post_type` filter to override the automatic
   EASYS-internal-post-type detection (added in 0.7.8) for the rare case another
   site’s post type happens to match its label/slug pattern.

#### 0.7.8

 * Added: sitemap.xml now excludes EASYS CMS’s per-content-block post types by default(
   detected by their “コンテンツ一覧［…］” label pattern, plus a handful of known
   internal slugs like `header_info`). No site-side configuration needed anymore—
   the `llmo_sitemap_exclude_post_types` filter remains available for other cases.

#### 0.7.7

 * Fixed: sitemap.xml’s `lastmod` for the “Posts page” (Settings > Reading > “Posts
   page”, when a static front page is used) reflected only that page’s own last-
   edited date, which can be stale for years even while the actual post listing 
   shown there updates constantly. It now uses the more recent of the page’s own
   modified date and its latest listed post’s modified date. This is a general WordPress
   behavior, not specific to any theme or page builder.

#### 0.7.6

 * Added: for pages/posts whose `post_content` is effectively empty (e.g. content
   assembled by a theme’s own page template outside the standard content field, 
   as some page-builder CMSs do), the “AI強化スキーマの更新” bulk update button 
   now falls back to fetching the page’s own rendered HTML and extracting the main
   content area (`role="main"`, `<main>`, `#content`, or `<article>`) instead of
   giving up. Sites where `post_content` already holds real text are unaffected —
   this fallback path never runs for them.

#### 0.7.5

 * Fixed: llms.txt’s plain-text excerpt fallback (used when no AI-enhanced description
   is cached) could reduce a body of many empty paragraphs (`&nbsp;` entities) into
   a lone ellipsis (“…”) instead of no description at all — `wp_trim_words()` was
   counting each undecoded `&nbsp;` as a separate word and appending its truncation
   marker. Entities are now decoded before word-counting.

#### 0.7.4

 * Fixed: AI-enhanced schema generation still treated a post/page body consisting
   only of empty paragraphs (`&nbsp;` HTML entities, as some page builders insert)
   as non-empty content, since `wp_strip_all_tags()` only strips HTML tags, not 
   entities. It’s now decoded and normalized before the empty check, matching llms.
   txt’s existing behavior.

#### 0.7.3

 * Fixed: stale AI-enhanced schema descriptions generated by the 0.7.2-and-earlier
   shortcode-only-content bug are now cleared automatically once the content is 
   correctly recognized as empty, instead of lingering forever.
 * Fixed: the “AI強化スキーマの更新” (bulk AI schema update) button on the post/
   page list screen could hit a 504 Gateway Time-out on sites with many posts, since
   it processed everything in one synchronous request. It now runs in small AJAX-
   driven steps until done, matching the FAQ bulk-generate flow.
 * Added: a new `llmo_sitemap_exclude_post_types` filter for sitemap.xml, for excluding
   theme/page-builder-registered post types by name when they’re registered as publicly
   viewable (so `is_post_type_viewable()` alone can’t detect them as non-content).

#### 0.7.2

 * Fixed: sitemap.xml could include theme/page-builder internal post types (e.g.
   header/footer/slider parts) that aren’t actually viewable single pages. Now filtered
   with the same `is_post_type_viewable()` check WordPress core sitemaps use.
 * Fixed: AI-enhanced schema generation (and llms.txt indirectly, via the cached
   description) treated a post/page whose body was only a shortcode (e.g. `[geo_plugin_faq]`)
   as non-empty, sending the raw shortcode text to the AI instead of skipping it.
   Now shortcodes are stripped before the empty-content check, matching llms.txt’s
   existing behavior.
 * Added: llms.txt now falls back to the front page’s AI-enhanced description for
   its summary line when the site tagline (Settings > General) is empty.

#### 0.7.1

 * Fixed: FAQ bulk-generate (AI analysis mode) could fail entirely with a validation
   error when the candidate posts/pages included one with no extractable excerpt
   text (e.g. image- or embed-only content). Such posts are now excluded from the
   batch, matching the existing empty-title exclusion.

#### 0.7.0

 * Added: English (en_US) translation. The plugin’s admin UI now automatically switches
   to English when the WordPress site language is set to English (Settings > General
   > Site Language), following WordPress’s standard translation mechanism. No settings
   UI change — this follows the site-wide language, matching WordPress’s normal 
   behavior for all admin screens.

#### 0.6.26

 * Changed: shortened the FAQ bulk-generate description text on the FAQ list screen(
   removed the sentence about specifying a count, kept the rest).

#### 0.6.25

 * Changed: shortened the sampling investigation description added in 0.6.24 — removed
   the sentence about execution frequency being fixed by plan (kept only the settings-
   screen pointer).

#### 0.6.24

 * Added: a brief explanation under “AI引用サンプリング調査” on the access analysis
   page, clarifying that execution timing/frequency is fixed by plan (no manual 
   trigger) and that investigation keywords are added/edited from the Settings screen.

#### 0.6.23

 * Changed: the description text for “AIによるキーワード候補” now stays visible 
   outside the collapsible accordion (previously it collapsed along with the suggestion
   list). Moved the “追加” (add) button beside the keyword input in “調査項目を追加”.
   Added bottom margin to the “AI引用サンプリング調査” block to visually separate
   it from “Google Analyticsとの連携”.

#### 0.6.22

 * Changed: the “AIによるキーワード候補” (AI keyword suggestions) list in the sampling
   investigation settings is now a collapsible accordion, expanded the first time
   you view a given analysis result and collapsed on subsequent visits. Moved “調査
   項目を追加” (add investigation item) above the suggestions list.

#### 0.6.21

 * Improved: GEO score’s “サイトを分析する” (analyze site) now sends a wider, excerpt-
   only page set (up to 40 pages, matching FAQ bulk generation’s site-profiling 
   breadth) for the shared business-understanding step, separate from the 10-page
   full-content set used for actual page-quality scoring. Previously the business/
   category/content-gap analysis was limited to the same 10 pages used for quality
   scoring, giving it a shallower view of the site than FAQ generation’s equivalent
   step.

#### 0.6.20

 * Removed: a dead code path for FAQ site profiling (`profile_site()`‘s call into
   the `Faq\FaqSiteProfiler` class) that had become unreachable in either generation
   mode since a 2026-08-13 refactor inverted its calling condition. No user-facing
   behavior changes — the active site-profiling path (used by both generation modes)
   is unaffected.

#### 0.6.19

 * Fixed: AI-suggested keyword candidates (sampling investigation section) were 
   pre-filled with a page-title-like phrase (e.g. “運営者情報（会社概要）”), which
   reads unnaturally as a search query. The backend now generates a separate `keyword`
   field per suggestion — phrased as a natural search query/question a real user
   would type into an AI search engine — distinct from the `topic` field still used
   for content generation. Falls back to `topic` if the AI omits it.

#### 0.6.18

 * Fixed: the GEO score “サイトを分析する” (analyze site) action now sends the site’s
   title and tagline (`get_bloginfo('name')`/`get_bloginfo('description')`) to the
   backend, matching what FAQ bulk generation’s profiling step already sends. Previously
   this signal was missing, so on sites with little real content the AI had almost
   no business context to reason from and tended to fall back on generic suggestions.

#### 0.6.17

 * Added: AI-suggested keyword candidates in the sampling investigation settings
   section. When GEOスコア「サイトを分析する」or FAQ bulk generation has already
   produced a business/content analysis, the AI’s inferred “not yet covered” topic
   candidates are shown as one-click add-to-investigation suggestions (pre-filled
   keyword field, both AI services checked by default). Suggestions already present
   as an investigation keyword are hidden, and the block is hidden entirely once
   the item limit is reached.

#### 0.6.16

 * Added: a “GEOスコア（ページ品質評価）” (GEO score / page quality evaluation) 
   section on the access analysis page. Click “サイトを分析する” to have AI evaluate
   up to 10 of your pages against E-E-A-T and PREP-structure criteria (a proxy for
   how citable they are to AI search engines). Results are shown as a ranked list;
   click a row to see strengths, weaknesses, and concrete improvement suggestions
   for that page.

#### 0.6.15

 * Added: an “AIクローラーのアクセスログ” (AI crawler access log) section on the
   access analysis page. Detects and lists real visits from known AI crawlers (GPTBot,
   ClaudeBot, PerplexityBot, Bytespider, CCBot, Amazonbot) based on their User-Agent,
   showing hit counts and recent activity per bot. Works regardless of license status—
   no backend communication or AI API calls are involved. Logs older than 90 days
   are pruned automatically.

#### 0.6.14

 * Added: a self-serve sign-up flow (standard plan) on the settings page. If you
   don’t have a license key yet, you can now sign up directly via Stripe Checkout
   for “AI引用サンプリング調査” (AI citation sampling) and/or “コンテンツ生成” (
   content generation) without going through a reseller. Once subscribed, you can
   add the other plan or manage/cancel your subscription via a Stripe Customer Portal
   link, right from the settings page.

#### 0.6.13

 * Fixed: after approving the Google Analytics consent screen, the browser could
   fail to reconnect to the site’s own admin page (particularly on local environments
   using a non-standard port) instead of returning to the settings page with a success
   notice.

#### 0.6.12

 * Added: a “Google Analyticsとの連携” (Connect Google Analytics) section on the
   settings page. Connect your Google Analytics (GA4) account, enter your GA4 property
   ID, and see your site’s session count for the last 7 days. Read-only access only—
   this plugin never modifies your Google Analytics settings or data.

#### 0.6.11

 * Fixed: on the post/page list screen, the “AI強化スキーマの更新” button disappeared
   entirely whenever every post already had AI-enhanced schema generated (the common
   case now that generation happens automatically on publish). The button and its
   description are now always shown, matching the intent of keeping it visible for
   its promotional value.

#### 0.6.10

 * Changed: the “AI強化スキーマを一括生成” button on the post/page list screen is
   now labeled “AI強化スキーマの更新”, reflecting that AI-enhanced schema is already
   generated automatically whenever a post or page is published or updated — this
   button is for catching up any remaining ones (e.g. content published before AI
   mode was enabled).
 * Changed: the update button is now disabled (and shows “更新中…”) immediately 
   after being clicked, so it is clear that generation is in progress instead of
   appearing unresponsive.

#### 0.6.9

 * Changed: on the FAQ bulk generation screen, the “FAQ化に有用な候補が見つかりま
   せんでした。” status message and its “この結果について” explanation now appear
   directly below the analyze/cancel buttons, instead of after the (often more prominent)
   site summary accordion.
 * Fixed (backend): under the newly-parallelized queue workers, a FAQ analysis or
   generation batch could finish processing every item yet never flip to “completed”,
   leaving the screen stuck showing “解析中: ○/○” with only “中断” (cancel) able
   to unblock it. Progress tracking is now race-free.
 * Fixed (backend): if a previously-generated FAQ draft had been deleted in WordPress
   and the same post became a candidate again, generating from it could silently
   finish with “取り込み: 0件のページ（スキップ: 0件）  0件のFAQ投稿” instead of
   actually creating a new draft. It now regenerates properly.

#### 0.6.8

 * Changed: on the FAQ bulk generation screen, the site summary and expected FAQ
   categories are now shown collapsed by default inside an accordion, instead of
   always visible.
 * Removed: the raw “解析結果の一覧を表示” candidate list accordion. Its place is
   now taken by a short status message (e.g. “FAQ化に有用な候補が見つかりませんで
   した。”) plus a collapsed accordion explaining why, when there is nothing usable
   to generate from.
 * Changed: after FAQ generation completes, the screen returns to the pre-analysis
   state so a fresh analysis can be started again right away.
 * Changed: when an analysis finds no usable candidates, the “サイトを解析する” 
   button is disabled until you leave and revisit the page (or new content is added
   and the page is reloaded), instead of staying clickable with nothing useful to
   do. Revisiting the page always re-enables it.

#### 0.6.7

 * Fixed: re-running FAQ site analysis after a previous analysis had already completed
   could keep showing the same stale (and possibly exhausted) candidate list forever,
   making it look like re-analysis and re-generation were broken. Starting a new
   analysis now always clears the locally cached candidate list and site-summary
   cache first.
 * Fixed: a single post or page with an empty title among the FAQ analysis candidates
   caused the entire analysis request to fail validation, blocking FAQ analysis 
   for the whole site. Untitled posts/pages are now excluded from analysis instead.

#### 0.6.6

 * Fixed: the top-right “コピー” copy button next to the open/close toggle now sits
   flush against the right edge of the button row (previously it sat immediately
   after the toggle button instead).

#### 0.6.5

 * Changed: the “生成結果を開く” (open result) button on an already-generated content
   idea now switches to “生成結果を閉じる” (close result) while the result is shown.
 * Changed: the top-right “コピー” button now sits at the same height as the open/
   close toggle button, and is only visible while the result is open.

#### 0.6.4

 * Changed: clicking “生成結果を表示” (view result) on an already-generated content
   idea now toggles the result open/closed instead of always re-fetching and showing
   it.
 * Changed: renamed the “今回は不要” idea-card button to “破棄” (discard).
 * Changed: the “コピー” button on a generated article now appears in both the top-
   right and bottom-right of the result box (previously only below the content).

#### 0.6.3

 * Changed: content generation now writes articles as valid HTML (real headings,
   bold text, tables, lists) instead of Markdown syntax, so pasting the result directly
   into the WordPress Visual editor reproduces the formatting correctly instead 
   of showing literal `##`/`**`/`|` characters.
 * Changed: the “コピー” button on a generated article now copies the rendered formatting(
   rich text), not plain text, so pasted content keeps its heading/bold/table structure
   in the Visual editor.
 * Changed: simplified several in-plugin explanation texts (content generation, 
   FAQ generation) to focus on what each feature does for you, removing internal
   implementation details that aren’t useful for deciding how to use the feature.

#### 0.6.2

 * Changed: content generation idea cards now span the full width of the admin content
   area (previously constrained by WordPress admin’s default `.card` max-width).
   Generated content is now displayed directly beneath the specific card whose “
   生成結果を表示”/”下書きを生成する” button was clicked, instead of in one shared
   area at the bottom of the page.

#### 0.6.1

 * Fixed: previously generated content-generation drafts couldn’t be viewed again
   after reloading the page or navigating away — only ideas whose generation was
   actively being watched in the same browser tab showed a result. Idea cards for
   already-generated ideas now show a “生成結果を表示” (view result) button that
   re-fetches the stored draft.

#### 0.6.0

 * Changed: the content generation screen has been completely redesigned. Instead
   of evaluating and rewriting your existing pages, it now analyzes your whole site
   from a GEO (Generative Engine Optimization) perspective and proposes brand-new
   content topics the site is missing — informed by your existing content, sampling-
   investigation citation gaps (Plan A), and your FAQ categories. Pick a proposed
   idea to generate a full new draft article; the monthly generation-count limit
   is only consumed when you actually generate an article, not when analyzing the
   site.
 * Added: five distinct content angles (direct answer to an uncited search query,
   comparison/decision-support articles, glossary/definition articles, FAQ-category
   deep dives, and roundup/hub articles linking related existing posts) that the
   AI selects automatically based on what your site actually needs.
 * Removed: the previous “evaluate existing pages  generate rewrite” flow. A lighter-
   weight, generation-free “improve this existing page” feature is being considered
   separately for a future release.

#### 0.5.0

 * Changed: the FAQ bulk-generation screen’s AI-assisted mode now runs the “選択
   した候補を生成する” (generate) step as a background job as well, completing the
   full site-profiling  analysis  generation pipeline’s move to the server. You 
   can close the browser tab immediately after starting generation; drafts are created
   automatically once AI generation finishes.
 * Added: WordPress draft creation for AI-generated FAQ content is now handled by
   a background process — triggered when you return to wp-admin, and additionally
   via a new WP-Cron schedule (every 10 minutes) so drafts are created even if you
   don’t reopen the admin screen. Duplicate draft creation is prevented even if 
   multiple of these triggers fire around the same time.

#### 0.4.1

 * Changed: in the FAQ bulk-generation screen’s AI-assisted mode, “サイトを解析する”(
   site profiling + scoring) now runs as a background job on the server, same as
   content generation’s evaluate/generate steps. You can close the browser tab immediately
   after starting, and the ranked candidate list will be waiting when you return.
   The structural (heading-based, no AI) mode is unaffected and works exactly as
   before.

#### 0.4.0

 * Changed: content generation’s “選択した候補を生成する” (generate) step now runs
   as a background job on the server, same as the evaluate step already did. Previously,
   generating multiple selected candidates required keeping the browser tab open
   and active for the entire duration; now you can close the tab immediately after
   starting and the generated articles will be waiting when you return.
 * Added: generated content is now cached per page (skipped automatically on re-
   generation if the source content hasn’t changed since the last successful generation),
   so re-running generation on unchanged content no longer re-incurs AI cost.

#### 0.3.3

 * Fixed: reopening the content generation page after evaluation completed with 
   zero candidates (e.g. every item failed due to a temporary AI provider error)
   showed a blank screen with no way to retry, instead of the “no candidates found”
   message. This only affected the page-reload state-restore path; the same case
   was already handled correctly while the evaluation was actively in progress.

#### 0.3.2

 * Changed: content generation’s “候補を評価する” (evaluate candidates) step now
   runs as a background job on the server instead of requiring the browser tab to
   stay open. Uploading the target pages still happens immediately, but the AI evaluation
   itself continues even after closing the admin screen, and progress/results are
   restored automatically when you come back.
 * Added: evaluated results are now cached per page (skipped automatically on re-
   run if the content hasn’t changed since the last evaluation), so re-running evaluation
   on an unchanged site no longer re-incurs AI cost.
 * Added: an internal daily/monthly AI cost limit (admin-configurable, unlimited
   by default) that stops new AI calls and notifies the administrator once the threshold
   is reached, resolving automatically once usage drops back under the limit.

#### 0.3.1

 * Added: a “中断” (Stop) button on both the FAQ bulk-generation box and the content
   generation page, letting you interrupt the per-page evaluate/analyze or generate
   loop partway through on large sites. Progress made so far is preserved, and clicking
   the original button again resumes from where it left off.

#### 0.3.0

 * Added: content generation support (“コンテンツ生成”). Evaluates existing posts/
   pages for GEO improvement opportunities, ranks candidates by priority, and generates
   a full-length replacement article (with E-E-A-T and PREP structure) for the ones
   you choose to act on. Results are shown on-screen with a copy button rather than
   being saved as a draft post.
 * Changed: renamed “FAQ” menu/list-screen title to “FAQ生成” and the access-analysis
   page title to drop the redundant “GEO Plugin” / “（プランA）” prefixes, for consistency
   across the admin menu.
 * Changed: reordered the admin submenu (FAQ生成  コンテンツ生成  アクセス解析  
   設定, moving 設定 to the bottom).
 * Fixed: the top-level menu icon looked dimmer than other menu items when off-hover
   on newer WordPress versions, and didn’t match the hover text color on older WordPress
   versions. It’s now tinted to match surrounding menu items on both.

#### 0.2.6

 * Changed: updated the default backend/update-check URLs to the new platform domain(
   app.geo-plugin.com), migrated from the previous api.geo.garasaya.com.

#### 0.2.5

 * Added: an expandable (collapsed by default) explanation of how candidate pages
   are selected and how the “fewer / balanced / more” count suggestions are derived,
   shown under “Generation mode: AI analysis” in the FAQ bulk generation box.

#### 0.2.4

 * Fixed: FAQ content generation used the same 15-second timeout as lightweight 
   requests, causing “cURL error 28: Operation timed out” skips on real sites since
   it’s the heaviest AI call. Extended to 45 seconds.
 * Changed: the bulk generation completion message now reads “incorporated: N pages(
   skipped: M)  P FAQ posts” for clarity, and the skipped-item details are now collapsed
   into an expandable section.
 * Changed: the “fewer / recommended / more” count buttons no longer show the actual
   number (to avoid implying it’s user-editable), and “recommended” has been renamed
   to “balanced”.

#### 0.2.3

 * Fixed: clicking “Generate FAQs” after reviewing the suggested count for a while
   could silently do nothing and get stuck showing “Generating: 0 / 0 (0 skipped)”,
   because the analysis results expire after a period of inactivity. The expiry 
   window has been extended (15 to 60 minutes) and the plugin now shows a clear 
   message asking to re-analyze the site instead of silently freezing.

#### 0.2.2

 * Fixed: the “recommended” and “more” FAQ generation count suggestions could collapse
   to the same number when the AI’s suggested baseline was close to or above the
   number of usable candidates, defeating the purpose of offering distinct choices.“
   Recommended” now reserves headroom so “more” stays meaningfully higher whenever
   there are enough candidates to support it.

#### 0.2.1

 * Fixed: the actual update ZIP download (as opposed to the update-check request
   already fixed in 0.1.2) could still fail with “cURL error 60” on outdated-hosting
   environments, because WordPress core downloads the package itself via a separate
   HTTP request that bypassed the plugin’s bundled CA certificate. It now applies
   to this request too, scoped to this plugin’s own distribution URL only.
 * Fixed: the dynamic FAQ generation count labels (“fewer/recommended/more”) showed
   the literal placeholder text instead of the actual numbers.
 * Added: the FAQ candidate analysis list is now collapsed into an expandable section
   by default.

#### 0.2.0

 * Added: FAQ bulk generation (AI-enhanced mode) now analyzes the whole site once
   per run to understand the business and propose site-specific FAQ categories, 
   and consolidates each category’s Q&A into a single draft post instead of one 
   post per source page.
 * Added: generation count is now suggested dynamically (“fewer” / “recommended”/“
   more”) based on the site analysis, instead of a fixed list. The unbounded “all”
   option has been removed.
 * Changed: per-page relevance scoring now uses a longer excerpt and site-wide context
   for better judgment on less-structured sites.

#### 0.1.2

 * Fixed: the update checker itself (used to detect new plugin versions) could still
   fail with “cURL error 60: unable to get local issuer certificate” on the same
   outdated-hosting environments addressed in 0.1.1, because it communicates independently
   of the backend API client. It now uses the same bundled CA certificate file.

#### 0.1.1

 * Fixed: backend communication could fail with “cURL error 60: unable to get local
   issuer certificate” on hosting environments where the WordPress-bundled CA certificate
   file is outdated. The plugin now bundles and uses its own current CA certificate
   file for backend requests.

#### 0.1.0

 * Initial release
 * Automatic Schema.org JSON-LD output (Article, Organization, WebSite, FAQPage,
   BreadcrumbList)
 * robots.txt / sitemap.xml / llms.txt management
 * FAQ generation (structural analysis and AI-assisted)
 * AI-enhanced schema properties (description, abstract, keywords) with auto-trigger
   on publish
 * BreadcrumbList shortcode

## Meta

 *  Version **1.0.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 4.9 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 7.0 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[faq](https://wordpress.org/plugins/tags/faq/)
   [geo](https://wordpress.org/plugins/tags/geo/)[schema](https://wordpress.org/plugins/tags/schema/)
   [seo](https://wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://wordpress.org/plugins/garasaya-aio-dash/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/garasaya-aio-dash/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/garasaya-aio-dash/reviews/)

## Contributors

 *   [ garasaya ](https://profiles.wordpress.org/garasaya/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/garasaya-aio-dash/)