garasaya AIO Dashboard

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

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_typesllmo_sitemap_is_easys_internal_post_typellmo_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