{"id":338848,"date":"2026-07-20T15:10:18","date_gmt":"2026-07-20T15:10:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/askiva-ai-search\/"},"modified":"2026-07-20T15:12:59","modified_gmt":"2026-07-20T15:12:59","slug":"centous-ai-search-with-askiva","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/centous-ai-search-with-askiva\/","author":23142406,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Centous AI Search with Askiva","header_author":"Centous","header_description":"Connect WordPress to the Askiva third-party AI search API for semantic search, content sync, and streamed AI answers.","assets_banners_color":"bdecd8","last_updated":"2026-07-20 15:12:59","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/centousplugins.com\/","header_plugin_uri":"https:\/\/centousplugins.com\/","header_author_uri":"https:\/\/profiles.wordpress.org\/centous\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":49,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"centous","date":"2026-07-20 15:12:59"}},"upgrade_notice":{"1.0.0":"<p>Initial stable release of Centous AI Search with Askiva.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3615450,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3615450,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Centous AI Search with Askiva settings: connection and display options","2":"Connected site confirmation","3":"Sync dashboard with progress and logs","4":"Frontend search with streaming AI answer and results","5":"Grid layout search results"}},"plugin_section":[],"plugin_tags":[],"plugin_category":[],"plugin_contributors":[233261],"plugin_business_model":[],"class_list":["post-338848","plugin","type-plugin","status-publish","hentry","plugin_contributors-centous","plugin_committers-centous"],"banners":{"banner":"https:\/\/ps.w.org\/centous-ai-search-with-askiva\/assets\/banner-772x250.png?rev=3615450","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/centous-ai-search-with-askiva\/assets\/icon-256x256.png?rev=3615450","icon_2x":"https:\/\/ps.w.org\/centous-ai-search-with-askiva\/assets\/icon-256x256.png?rev=3615450","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Centous AI Search with Askiva is developed by <a href=\"https:\/\/centousplugins.com\/\">Centous<\/a>. It is <strong>not<\/strong> affiliated with, endorsed by, or an official product of Askiva. It connects your WordPress site to <a href=\"https:\/\/askivasearch.com\/\">Askiva<\/a>, a third-party AI search platform, for indexing, semantic search, and streamed AI answers.<\/p>\n\n<p>This plugin connects your WordPress site to the Askiva backend for:<\/p>\n\n<ul>\n<li><strong>Content indexing<\/strong>: batch sync of published posts\/pages to Askiva<\/li>\n<li><strong>AI search<\/strong>: semantic search with streamed AI answers (GFM Markdown)<\/li>\n<li><strong>Rich results<\/strong>: list or grid layout, thumbnails, pagination, \u201cRead more\u201d links<\/li>\n<li><strong>Query help<\/strong>: \u201cDid you mean\u201d suggestions when the API detects typos<\/li>\n<li><strong>Admin tools<\/strong>: connection settings, sync dashboard, statistics, logs<\/li>\n<\/ul>\n\n<p>The frontend search box uses AJAX by default: results and the AI answer load inline without a full page reload. Server-rendered results are still supported when a search URL contains a query parameter.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to third-party Askiva services. An Askiva account is required. Centous does not operate these services.<\/p>\n\n<h3>Askiva account portal<\/h3>\n\n<p>Website: <a href=\"https:\/\/askivasearch.com\/\">https:\/\/askivasearch.com\/<\/a><\/p>\n\n<p>Used to register an account, add your WordPress site, and obtain your <strong>Site Identifier<\/strong> and <strong>API Key<\/strong>.<\/p>\n\n<p>Data sent when you use the portal (in your browser, outside this plugin): account registration details and site information you enter when adding a site.<\/p>\n\n<p>Terms of use: <a href=\"https:\/\/askiva.io\/legal\/terms-of-use\">https:\/\/askiva.io\/legal\/terms-of-use<\/a>\nPrivacy policy: <a href=\"https:\/\/askiva.io\/legal\/privacy-policy\">https:\/\/askiva.io\/legal\/privacy-policy<\/a><\/p>\n\n<h3>Askiva API<\/h3>\n\n<p>API endpoint (default): <code>https:\/\/askiva-bk.postyoulike.com\/api\/v1<\/code><\/p>\n\n<p>Used to verify your connection, sync published WordPress content, run search queries, stream AI answers, and load dashboard statistics.<\/p>\n\n<p>Data sent from your WordPress site to the API:<\/p>\n\n<ul>\n<li><strong>On connect (Verify Key):<\/strong> Site Identifier and API Key<\/li>\n<li><strong>On sync:<\/strong> published post\/page title, URL, slug, excerpt, plain-text content, headings, categories, and tags<\/li>\n<li><strong>On search:<\/strong> search query, Site Identifier, API Key, pagination, and optional content type filter<\/li>\n<li><strong>On dashboard stats:<\/strong> Site Identifier and API Key<\/li>\n<\/ul>\n\n<p>Data is sent only when you or a visitor triggers these actions (connect, sync, search, or when an administrator views the dashboard).<\/p>\n\n<p>Terms of use: <a href=\"https:\/\/askiva.io\/legal\/terms-of-use\">https:\/\/askiva.io\/legal\/terms-of-use<\/a>\nPrivacy policy: <a href=\"https:\/\/askiva.io\/legal\/privacy-policy\">https:\/\/askiva.io\/legal\/privacy-policy<\/a><\/p>\n\n<h3>Configuration<\/h3>\n\n<h3>Create your Askiva account and site<\/h3>\n\n<ol>\n<li>Register and log in at <a href=\"https:\/\/askiva-ai-frontend.vercel.app\/\">Askiva<\/a><\/li>\n<li>In the dashboard sidebar, click <strong>Sites<\/strong><\/li>\n<li>On the Sites page, click <strong>Add Site<\/strong><\/li>\n<li>In the popup, enter your website details and click <strong>Add Site<\/strong><\/li>\n<li>Your site appears in the list: click it to open the site detail page<\/li>\n<li>On the detail page, copy your <strong>Site Identifier<\/strong> and <strong>API Key<\/strong> (you will enter these in the WordPress plugin)<\/li>\n<\/ol>\n\n<h3>Connect your site<\/h3>\n\n<ol>\n<li>Open <strong>Centous Search \u2192 Settings<\/strong> in WordPress admin<\/li>\n<li>Enter your <strong>Site ID<\/strong> (the <strong>Site Identifier<\/strong> from the Askiva portal, e.g. <code>my-site-aBc12XyZ<\/code>)<\/li>\n<li>Enter your <strong>Site Key<\/strong> (the <strong>API Key<\/strong> from the Askiva portal)<\/li>\n<li>Click <strong>Verify Key<\/strong>: the plugin calls <code>POST \/wp\/verify<\/code> to validate credentials<\/li>\n<li>When connected, Site ID and Site Key fields are locked until you disconnect<\/li>\n<\/ol>\n\n<p>Saved settings also include numeric <code>api_site_id<\/code> when the verify response returns one (used for search API compatibility).<\/p>\n\n<h3>Sync your content<\/h3>\n\n<p>After a successful connection:<\/p>\n\n<ol>\n<li>Go to <strong>Centous Search \u2192 Sync<\/strong><\/li>\n<li>Click <strong>Start Sync<\/strong> to index your published WordPress content to Askiva<\/li>\n<li>Wait for the sync to complete (monitor progress and logs on the Sync page)<\/li>\n<\/ol>\n\n<p>When sync finishes, your site content is available for AI search.<\/p>\n\n<h3>Enable search on your site<\/h3>\n\n<p>Add the search shortcode to any page or post:\n[askiva_search]<\/p>\n\n<p>Visitors can search your site and see streamed AI answers with semantic results. See <strong>Usage<\/strong> below for shortcode options and layout settings.<\/p>\n\n<h3>Search &amp; display settings<\/h3>\n\n<p>Under <strong>Centous Search \u2192 Settings<\/strong>:<\/p>\n\n\n\n\n  Setting\n  Description\n  Default\n\n\n\n\n  Content Items per Index Cycle\n  Posts\/pages sent per sync batch\n  10\n\n\n  Results Display Mode\n  <code>list<\/code> or <code>grid<\/code> for search results\n  list\n\n\n  Results per Page\n  Results shown per page (1\u2013100)\n  10\n\n\n  Thumbnail Size\n  Result thumbnail size in px (48\u2013400)\n  96\n\n\n\n\n<h3>Advanced: API base URL (optional)<\/h3>\n\n<p>Note: Most users do not need this step. If you registered at <a href=\"https:\/\/askiva-ai-frontend.vercel.app\/\">Askiva<\/a> and connect with your Site Identifier and API Key, the plugin uses its built-in API endpoint automatically.<\/p>\n\n<p>Override the API base URL only when Askiva support directs you to a different host (for example a staging environment or a custom API deployment). The URL must include the <code>\/api\/v1<\/code> path.<\/p>\n\n<p>Option 1: <code>wp-config.php<\/code> (recommended)<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>define( 'ASKIVA_API_BASE', 'https:\/\/your-askiva-api.example.com\/api\/v1' );\n    `<\/p>\n\n<p>Option 2: filter hook<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>add_filter( 'askiva_api_base', function () {\n    return 'https:\/\/your-askiva-api.example.com\/api\/v1';\n} );\n    `<\/p>\n\n<p>If neither is set, the plugin uses <code>https:\/\/askiva-bk.postyoulike.com\/api\/v1<\/code> by default.<\/p>\n\n<h3>Usage<\/h3>\n\n<h3>Search shortcode<\/h3>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>[askiva_search]\n    `<\/p>\n\n<p>Place on any page, post, or widget area. Visitors search inline; the AI answer streams in and results appear below the form.<\/p>\n\n<p>Common setup:<\/p>\n\n<ol>\n<li>Create a page (e.g. <code>\/search\/<\/code>) with <code>[askiva_search show_results=\"1\"]<\/code><\/li>\n<li><p>For a header or sidebar button that redirects to your search page, use the popup shortcode:<\/p>\n\n<p><code>[askiva_search_popup results_url=\"\/search\/\" trigger_text=\"Search\"]<\/code><\/p><\/li>\n<li><p>Optionally set a global results URL for the popup shortcode:<\/p>\n\n<p><code>php\nadd_filter( 'askiva_search_results_url', function () {\nreturn site_url( '\/search\/' );\n} );<\/code><\/p><\/li>\n<\/ol>\n\n<p>Note: <code>[askiva_search show_results=\"0\"]<\/code> hides pre-loaded results on page load, but search still runs inline on that page via JavaScript. Use the popup shortcode to redirect visitors to a separate search page.<\/p>\n\n<p>Shortcode attributes:<\/p>\n\n\n\n\n  Attribute\n  Type\n  Default\n  Description\n\n\n\n\n  <code>placeholder<\/code>\n  string\n  Search\u2026\n  Input placeholder\n\n\n  <code>button_text<\/code>\n  string\n  Search\n  Button label (legacy)\n\n\n  <code>site_id<\/code>\n  string\n  <em>(from settings)<\/em>\n  Override site ID; saved settings always win when set\n\n\n  <code>type<\/code>\n  string\n  <em>(empty)<\/em>\n  Optional content type filter sent to API\n\n\n  <code>results_url<\/code>\n  string\n  <em>(auto)<\/em>\n  Full URL or path for search results page\n\n\n  <code>results_page_id<\/code>\n  int\n  -\n  WordPress page ID for results (alternative to <code>results_url<\/code>)\n\n\n  <code>show_results<\/code>\n  <code>auto<\/code> &#124; <code>0<\/code> &#124; <code>1<\/code>\n  auto\n  When to show results block (<code>auto<\/code> = when <code>?q=<\/code> is present)\n\n\n  <code>results_limit<\/code>\n  int\n  <em>(from settings)<\/em>\n  Results per page (1\u2013100)\n\n\n  <code>view_all_limit<\/code>\n  int\n  50\n  Max results when \u201cview all\u201d is used\n\n\n  <code>ajax<\/code>\n  <code>0<\/code> &#124; <code>1<\/code>\n  0\n  Legacy flag; JS still handles live search. Affects pagination scroll behavior\n\n\n  <code>live<\/code>\n  bool\n  false\n  Search while typing (debounced)\n\n\n  <code>min_chars<\/code>\n  int\n  2\n  Minimum characters before search runs\n\n\n  <code>debug<\/code>\n  <code>0<\/code> &#124; <code>1<\/code>\n  0\n  Pass debug flag to search API (admin troubleshooting)\n\n\n  <code>limit<\/code>\n  int\n  10\n  Legacy AJAX limit\n\n\n\n\n<p>URL query parameters:<\/p>\n\n\n\n\n  Parameter\n  Default name\n  Purpose\n\n\n\n\n  Search query\n  <code>q<\/code>\n  Search term (<code>askiva_q<\/code> legacy alias still supported)\n\n\n  Page\n  <code>askiva_page<\/code>\n  Pagination\n\n\n  View all\n  <code>view<\/code>\n  Use <code>view=all<\/code> for expanded result limit\n\n\n\n\n<p>Change the query parameter name:<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>add_filter( 'askiva_search_query_param', function () {\n    return 'q';\n} );\n    `<\/p>\n\n<h3>Popup search shortcode<\/h3>\n\n<p>Opens a modal search box and redirects to your results page on submit:<\/p>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>[askiva_search_popup results_url=\"\/search\/\" trigger_text=\"Search\"]\n    `<\/p>\n\n\n\n\n  Attribute\n  Default\n  Description\n\n\n\n\n  <code>trigger_text<\/code>\n  Search\n  Button that opens the popup\n\n\n  <code>placeholder<\/code>\n  Search\u2026\n  Input placeholder\n\n\n  <code>close_text<\/code>\n  Close\n  Close button label\n\n\n  <code>results_url<\/code>\n  <em>(auto)<\/em>\n  Where to send the user after search\n\n\n  <code>results_page_id<\/code>\n  -\n  Page ID alternative to <code>results_url<\/code>\n\n\n  <code>min_chars<\/code>\n  2\n  Minimum query length\n\n\n\n\n<h3>Frontend search behavior<\/h3>\n\n<p>When a visitor searches:<\/p>\n\n<ol>\n<li><strong>AI answer<\/strong>: streamed via Server-Sent Events (<code>\/search\/stream<\/code>), rendered as GFM Markdown (bold, italics, bullet\/numbered lists) with DOMPurify sanitization<\/li>\n<li><strong>Search results<\/strong>: fetched via AJAX proxy (<code>\/search\/<\/code>), with thumbnails and excerpts<\/li>\n<li><strong>Did you mean<\/strong>: shown when the API returns a <code>did_you_mean<\/code> suggestion<\/li>\n<li><strong>Source links<\/strong>: <code>[Source N]<\/code> markers in the AI answer link to matching result URLs<\/li>\n<\/ol>\n\n<p>Bundled assets (no external CDN): <code>marked.min.js<\/code> (v15.0.12), <code>purify.min.js<\/code>, <code>search.js<\/code>, <code>search.css<\/code>.<\/p>\n\n<h3>Theme template overrides<\/h3>\n\n<p>Copy templates into your theme to customize markup:<\/p>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>wp-content\/themes\/your-theme\/centous-ai-search-with-askiva\/\n  search.php\n  search-results.php\n  search-result-item.php\n  search-popup.php\n    `<\/p>\n\n<h3>Dashboard<\/h3>\n\n<p>Centous Search \u2192 Dashboard shows (when connected):<\/p>\n\n<ul>\n<li>Connected site \/ domain<\/li>\n<li>Indexed pages<\/li>\n<li>Searches this month<\/li>\n<li>AI answers generated<\/li>\n<\/ul>\n\n<p>Statistics are fetched from <code>GET \/wp\/stats<\/code> and cached for performance.<\/p>\n\n<h3>Sync<\/h3>\n\n<p>Centous Search \u2192 Sync:<\/p>\n\n<ol>\n<li>Optionally enable <strong>Delete all data and start fresh sync<\/strong> for a full re-index<\/li>\n<li>Click <strong>Start Sync<\/strong> to index published content in batches<\/li>\n<li>Monitor progress and logs in the sync panel<\/li>\n<\/ol>\n\n<p>Sync uses <code>POST \/wp\/documents\/<\/code> in batches sized by <strong>Content Items per Index Cycle<\/strong>. Long-running sync requests extend PHP time limits automatically.<\/p>\n\n<p>Note: Closing the browser may pause progress; resume from the Sync page.<\/p>\n\n<h3>WordPress REST API (plugin)<\/h3>\n\n<p>Registered under <code>askiva\/v1<\/code> for remote\/automated sync control:<\/p>\n\n\n\n\n  Route\n  Method\n  Description\n\n\n\n\n  <code>\/wp-json\/askiva\/v1\/remote-sync<\/code>\n  POST\n  Start or resume sync (returns immediately; use <code>\/sync\/tick<\/code> to advance)\n\n\n  <code>\/wp-json\/askiva\/v1\/sync\/status<\/code>\n  GET\n  Current sync status\n\n\n  <code>\/wp-json\/askiva\/v1\/sync\/start<\/code>\n  POST\n  Start sync (<code>fresh_start<\/code> optional)\n\n\n  <code>\/wp-json\/askiva\/v1\/sync\/pause<\/code>\n  POST\n  Pause sync\n\n\n  <code>\/wp-json\/askiva\/v1\/sync\/resume<\/code>\n  POST\n  Resume sync\n\n\n  <code>\/wp-json\/askiva\/v1\/sync\/restart<\/code>\n  POST\n  Restart sync\n\n\n  <code>\/wp-json\/askiva\/v1\/sync\/tick<\/code>\n  POST\n  Process one sync tick\n\n\n\n\n<p>Authenticate with the same credentials saved in <strong>Centous Search \u2192 Settings<\/strong>:<\/p>\n\n<ul>\n<li><strong>Site identifier<\/strong>: send as <code>site_id<\/code>, <code>site_identifier<\/code>, or <code>api_site_id<\/code> (JSON body or query), or header <code>X-Askiva-Site-Id<\/code> \/ <code>X-Askiva-Site-Identifier<\/code><\/li>\n<li><strong>Site key<\/strong>: send as <code>site_key<\/code> or <code>api_key<\/code> (JSON body or query), or header <code>X-Askiva-Key<\/code><\/li>\n<\/ul>\n\n<p>Both the string site identifier (e.g. <code>sdgicity-kH33Isf1<\/code>) and numeric <code>api_site_id<\/code> from verify are accepted when they match saved settings.<\/p>\n\n<h3>Askiva backend API<\/h3>\n\n<p>All paths are relative to your configured API base (e.g. <code>https:\/\/api.example.com\/api\/v1<\/code>).<\/p>\n\n<p>Connection and status<\/p>\n\n\n\n\n  Method\n  Endpoint\n  Description\n\n\n\n\n  POST\n  <code>\/wp\/verify<\/code>\n  Validate Site ID + Site Key\n\n\n  POST\n  <code>\/wp\/connect<\/code>\n  Legacy connect\n\n\n  GET\n  <code>\/wp\/status<\/code>\n  Connection test (<code>X-Askiva-Key<\/code> header)\n\n\n  GET\n  <code>\/wp\/stats<\/code>\n  Site statistics\n\n\n\n\n<p>Documents and indexing<\/p>\n\n\n\n\n  Method\n  Endpoint\n  Description\n\n\n\n\n  POST\n  <code>\/wp\/documents\/<\/code>\n  Index a batch of documents\n\n\n  GET\n  <code>\/wp\/documents\/batch\/{id}<\/code>\n  Batch status\n\n\n  DELETE\n  <code>\/wp\/documents\/all<\/code>\n  Delete all indexed documents (<code>site_id<\/code> + <code>api_key<\/code> in JSON body, <code>X-Askiva-Key<\/code> header)\n\n\n\n\n<p>Search (frontend)<\/p>\n\n\n\n\n  Method\n  Endpoint\n  Description\n\n\n\n\n  POST\n  <code>\/search\/<\/code>\n  Search results + AI answer metadata\n\n\n  POST\n  <code>\/search\/stream<\/code>\n  Streamed AI answer (SSE)\n\n\n\n\n<p>Search requests send <code>site_id<\/code>, <code>api_key<\/code>, <code>query<\/code>, <code>limit<\/code>, and <code>page<\/code> in the JSON body, plus <code>X-Askiva-Key<\/code> header.<\/p>\n\n<h3>Developer filters<\/h3>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>\/\/ API base URL\nadd_filter( 'askiva_api_base', $callback );<\/p>\n\n<p>\/\/ Default search results page URL\nadd_filter( 'askiva_search_results_url', $callback );<\/p>\n\n<p>\/\/ URL query parameter name (default: q)\nadd_filter( 'askiva_search_query_param', $callback );<\/p>\n\n<p>\/\/ Include API trace\/debug in search payload (default: true)\nadd_filter( 'askiva_search_include_trace', $callback );<\/p>\n\n<p>\/\/ Template variables passed to PHP templates\nadd_filter( 'askiva_template_vars', $callback, 10, 2 );\n    <code>&lt;h3&gt;Requirements&lt;\/h3&gt;\n* WordPress 5.8+\n* PHP 7.4+\n* Valid Askiva account (Site Identifier and API Key from the [Askiva dashboard](https:\/\/askiva-ai-frontend.vercel.app\/))\n* Outbound HTTPS to the Askiva API host\n* Published content to index (drafts are skipped)&lt;h3&gt;Features&lt;\/h3&gt;\n* Secure admin AJAX with nonces and<\/code>manage_options<code>checks\n* Site ID + Site Key connection with verify endpoint\n* Batch content sync with pause\/resume\/restart\n* Real-time sync status and error logging\n* Streaming AI answers with GFM Markdown rendering\n* \u201cDid you mean\u201d typo suggestions from API\n* List and grid result layouts with configurable thumbnails\n* Search popup shortcode for header\/navigation use\n* Server-rendered and AJAX search modes\n* Theme template overrides\n* WordPress REST sync endpoints for automation\n* Cached dashboard statistics\n* First-run redirect to settings\n* Clean uninstall support&lt;h3&gt;Troubleshooting&lt;\/h3&gt;&lt;h3&gt;Connection issues&lt;\/h3&gt;\n1. Confirm **Site ID** and **Site Key** match the **Site Identifier** and **API Key** on your Askiva site detail page\n2. If you use a custom API host, verify<\/code>ASKIVA_API_BASE<code>(or the<\/code>askiva_api_base<code>filter) includes<\/code>\/api\/v1<code>and points to the correct server\n3. Use **Test Connection** on the Settings page\n4. Check **Centous Search \u2192 Logs** for API error details&lt;h3&gt;Search issues&lt;\/h3&gt;\n1. Ensure the site is connected and content has been synced\n2. Confirm the shortcode page loads<\/code>search.js<code>(no JavaScript console errors)\n3. In browser DevTools \u2192 Network, inspect<\/code>askiva_public_search<code>and<\/code>askiva_public_search_stream<code>AJAX calls\n4. Enable shortcode<\/code>debug=\"1\"` for API trace data when diagnosing \u201cDid you mean\u201d<\/p>\n\n<h3>Sync issues<\/h3>\n\n<ol>\n<li>Review sync logs and error tab on <strong>Centous Search \u2192 Sync<\/strong><\/li>\n<li>Only <strong>published<\/strong> content is indexed<\/li>\n<li>Try a fresh sync if indexed data looks stale or corrupted<\/li>\n<li>Increase <strong>Content Items per Index Cycle<\/strong> cautiously on slow hosts<\/li>\n<\/ol>\n\n<h3>Support<\/h3>\n\n<p>Plugin support: <a href=\"https:\/\/centousplugins.com\/\">Centous<\/a>, developer of this plugin.<\/p>\n\n<p>Askiva (third-party service): account setup at <a href=\"https:\/\/askivasearch.com\/\">Askiva<\/a> and <a href=\"https:\/\/askiva-ai-frontend.vercel.app\/\">Askiva dashboard<\/a>. Not affiliated with Centous.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>centous-ai-search-with-askiva<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through <strong>Plugins<\/strong> in WordPress admin<\/li>\n<li>Register on Askiva, add your site, and copy your credentials (see Configuration below)<\/li>\n<li>Go to <strong>Centous Search \u2192 Settings<\/strong> in WordPress and connect your site<\/li>\n<li>Run an initial sync from <strong>Centous Search \u2192 Sync<\/strong><\/li>\n<li>Add <code>[askiva_search]<\/code> to a page or post<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20all%20themes%3F\"><h3>Does this work with all themes?<\/h3><\/dt>\n<dd><p>Yes. The plugin ships self-contained CSS. Themes with aggressive list resets are handled via scoped styles for AI answer lists.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20askiva%20account%3F\"><h3>Do I need an Askiva account?<\/h3><\/dt>\n<dd><p>Yes. This plugin uses <a href=\"https:\/\/askivasearch.com\/\">Askiva<\/a> as a third-party API service. Register at the <a href=\"https:\/\/askiva-ai-frontend.vercel.app\/\">Askiva dashboard<\/a>, add your site, and copy the <strong>Site Identifier<\/strong> and <strong>API Key<\/strong> into the plugin settings.<\/p><\/dd>\n<dt id=\"can%20i%20re-sync%20all%20content%3F\"><h3>Can I re-sync all content?<\/h3><\/dt>\n<dd><p>Yes. Use <strong>Start Sync<\/strong> with \u201cDelete all data and start fresh sync\u201d on the Sync page, or the restart REST endpoint.<\/p><\/dd>\n<dt id=\"does%20search%20work%20without%20javascript%3F\"><h3>Does search work without JavaScript?<\/h3><\/dt>\n<dd><p>Partially. With <code>show_results=\"1\"<\/code> and a query in the URL, PHP can render results server-side. The streaming AI answer requires JavaScript.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20search%20url%20parameter%3F\"><h3>Can I change the search URL parameter?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>askiva_search_query_param<\/code> filter (default: <code>q<\/code>).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release as Centous AI Search with Askiva<\/li>\n<li>Site ID + Site Key connection via <code>\/wp\/verify<\/code><\/li>\n<li>Content batch sync to Askiva (<code>\/wp\/documents\/<\/code>)<\/li>\n<li>Search shortcode with inline AJAX results and streamed AI answers<\/li>\n<li>GFM Markdown AI answer rendering (marked v15.0.12 + DOMPurify, bundled locally)<\/li>\n<li>\u201cDid you mean\u201d suggestions from API <code>did_you_mean<\/code><\/li>\n<li><code>[Source N]<\/code> citation linkification in AI answers<\/li>\n<li>List\/grid display modes and configurable thumbnails<\/li>\n<li>Search popup shortcode<\/li>\n<li>Dashboard statistics from <code>\/wp\/stats<\/code><\/li>\n<li>WordPress REST sync control routes (<code>askiva\/v1<\/code>)<\/li>\n<li>Admin sync logs, pause\/resume\/restart<\/li>\n<li>Theme template override support<\/li>\n<li>External services documentation for Askiva portal and API<\/li>\n<li>Plugin Check \/ WordPress coding standards compliance<\/li>\n<\/ul>","raw_excerpt":"Centous AI Search with Askiva connects WordPress to Askiva for semantic search, content sync, and streamed AI answers.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338848"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/centous"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338848"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338848"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338848"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338848"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338848"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}