{"id":342957,"date":"2026-08-06T08:17:18","date_gmt":"2026-08-06T08:17:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/index-harmony\/"},"modified":"2026-08-06T08:16:49","modified_gmt":"2026-08-06T08:16:49","slug":"index-harmony","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/index-harmony\/","author":23531916,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.9.38","stable_tag":"0.9.38","tested":"7.0.3","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"Index Harmony","header_author":"Renkmobil Bili\u015fim A.\u015e.","header_description":"Prepares your site for AI assistants and answer engines in one click: llms.txt, AI bot rules, JSON-LD schema, meta tags, security headers and AI-crawler analytics.","assets_banners_color":"223a2b","last_updated":"2026-08-06 08:16:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.indexharmony.com\/agentready\/wordpress\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"0.9.38":{"tag":"0.9.38","author":"indexharmony","date":"2026-08-06 08:16:49"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3636304,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3636304,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3636374,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3636304,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3636304,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.9.38"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3636304,"resolution":"1","location":"assets","locale":"","width":2148,"height":1702},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3636304,"resolution":"2","location":"assets","locale":"","width":2161,"height":1465},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3636304,"resolution":"3","location":"assets","locale":"","width":2278,"height":5245},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3636304,"resolution":"4","location":"assets","locale":"","width":1402,"height":746},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3636304,"resolution":"5","location":"assets","locale":"","width":1365,"height":772}},"screenshots":{"1":"Dashboard with module status and self-check badges","2":"Setup wizard (17 languages)","3":"Fix modules overview","4":"Tabbed settings page","5":"Measurement screen \u2014 bot traffic and page analysis"}},"plugin_section":[],"plugin_tags":[246305,244604,12753,1117,1121],"plugin_category":[55],"plugin_contributors":[274608],"plugin_business_model":[],"class_list":["post-342957","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-agents","plugin_tags-llms-txt","plugin_tags-robots-txt","plugin_tags-schema","plugin_tags-structured-data","plugin_category-seo-and-marketing","plugin_contributors-indexharmony","plugin_committers-indexharmony"],"banners":{"banner":"https:\/\/ps.w.org\/index-harmony\/assets\/banner-772x250.png?rev=3636304","banner_2x":"https:\/\/ps.w.org\/index-harmony\/assets\/banner-1544x500.png?rev=3636304","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/index-harmony\/assets\/icon.svg?rev=3636374","icon":"https:\/\/ps.w.org\/index-harmony\/assets\/icon.svg?rev=3636374","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/index-harmony\/assets\/screenshot-1.png?rev=3636304","caption":"Dashboard with module status and self-check badges"},{"src":"https:\/\/ps.w.org\/index-harmony\/assets\/screenshot-2.png?rev=3636304","caption":"Setup wizard (17 languages)"},{"src":"https:\/\/ps.w.org\/index-harmony\/assets\/screenshot-3.png?rev=3636304","caption":"Fix modules overview"},{"src":"https:\/\/ps.w.org\/index-harmony\/assets\/screenshot-4.png?rev=3636304","caption":"Tabbed settings page"},{"src":"https:\/\/ps.w.org\/index-harmony\/assets\/screenshot-5.png?rev=3636304","caption":"Measurement screen \u2014 bot traffic and page analysis"}],"raw_content":"<!--section=description-->\n<p>Install \u2192 run the setup wizard \u2192 done. <strong>No key, no account, no paid tier<\/strong>: every module and every measurement screen in this plugin is free and fully usable.<\/p>\n\n<p>Index Harmony prepares your WordPress site for AI assistants, answer engines and their crawlers (ChatGPT, Claude, Perplexity, Gemini and others) without touching your files or content \u2014 and then shows you what actually happened. Every fix is virtual and reversible: turn a module off and it disappears without a trace.<\/p>\n\n<p><strong>What makes it different:<\/strong> most plugins in this space stop at generating llms.txt. Index Harmony pairs the output side with a first-party measurement side that no search-console integration can see: its own AI-bot traffic log with cryptographic-grade bot verification (official vendor IP lists), daily per-page counters, a per-page evidence panel showing which engine fetched which page on demand, a crawl-freshness funnel, an attention-decay radar, recovery for 404 URLs that assistants invent, a change log that marks every GEO-affecting setting change on your traffic chart, plus an agent-facing Site MCP endpoint and WordPress Abilities\/WebMCP surfaces. llms.txt is one of its 18 modules, not the product.<\/p>\n\n<p><strong>All 18 fix modules (free, no key needed):<\/strong><\/p>\n\n<ul>\n<li>llms.txt + llms-full.txt (virtual endpoints, refreshed daily; hand-pick the highlighted pages or edit the file body yourself)<\/li>\n<li>AI bot manager for robots.txt (explicit allow rules for 24 AI bots; your existing rules are kept intact)<\/li>\n<li>JSON-LD schema injector (Organization \/ WebSite \/ Article \/ FAQ \/ Breadcrumb \/ Product) \u2014 defers to Yoast, Rank Math, AIOSEO and SEOPress to avoid duplicates<\/li>\n<li>Meta completer (description \/ Open Graph \/ Twitter \u2014 only when no SEO plugin handles it)<\/li>\n<li>WordPress core sitemap enablement + robots.txt declaration<\/li>\n<li>\/.well-known\/security.txt<\/li>\n<li>WooCommerce product feed + Product schema completeness<\/li>\n<li>hreflang auditor (reports only \u2014 it never writes a file and never emits an hreflang tag)<\/li>\n<li>\/AGENTS.md \u2014 a site usage guide for agents (virtual)<\/li>\n<li>Markdown negotiation (Accept: text\/markdown or ?format=md)<\/li>\n<li>.well-known discovery endpoints (api-catalog RFC 9727; mcp.json and agent-skills only when configured \u2014 no fake manifests)<\/li>\n<li>Agent-discovery Link headers + robots.txt Content-Signal declaration<\/li>\n<li>AI bot traffic log (which bot visited when)<\/li>\n<li>AI policy publishing (ai.txt + TDMRep + Content-Signal header)<\/li>\n<li>Security headers \u2014 six optional response headers (X-Content-Type-Options, Referrer-Policy, Permissions-Policy, HSTS, CSP-Report-Only, X-Frame-Options); all off by default and picked one by one under Settings \u2192 Advanced<\/li>\n<li>IndexNow instant indexing (Bing\/Yandex\/Seznam\/Naver \u2014 opt-in)<\/li>\n<li>WebMCP (in-browser agent surface for your site's public information)<\/li>\n<li>AI traffic share (opt-in daily channel counters)<\/li>\n<\/ul>\n\n<p><strong>Measurement &amp; insights:<\/strong><\/p>\n\n<ul>\n<li>Bot traffic dashboard \u2014 a 30-day chart and per-bot breakdown of AI crawler visits<\/li>\n<li>Bot verification (opt-in) \u2014 once enabled, downloads public bot IP lists once a day to flag spoofed bots; no visitor data leaves your site<\/li>\n<li>Bot blocking &amp; spike alerts (opt-in) \u2014 pick the bots to watch, then turn blocking on whenever you decide to, behind an explicit confirmation; the panel recommends a 7-day monitoring window first and warns you if you enable it earlier, but nothing is time-locked and you can stop blocking with one click; optional email when traffic spikes<\/li>\n<li>Page analysis \u2014 daily per-page counters (GDPR-neutral: no IPs, no user agents) feed a per-page evidence panel showing which engine fetched which page on demand, a crawl-freshness funnel (which pages changed after the last crawl), and a 28-day attention-decay radar for pages AI is losing interest in<\/li>\n<li>AI-404 phantom URL recovery \u2014 a report of URLs assistants think exist (404 hits with an AI user-agent or AI-platform referrer), the closest real page suggested by edit distance, and an optional per-row 301 applied ONLY to AI-originated requests<\/li>\n<li>GEO change log \u2014 every visibility-affecting setting change is marked on the traffic chart with an honest before\/after delta (correlation, not causation)<\/li>\n<li>Bot health alarms \u2014 a silence sentinel for regular crawlers that go quiet and a spoof-surge guard with an explicitly confirmed, one-click \"403 spoofed-only\" switch<\/li>\n<li>Page readiness score + Triage \u2014 a per-page content-readiness sub-score with an in-editor meta box and a site-wide triage view<\/li>\n<li>Weekly (or daily) digest email (opt-in) \u2014 a summary of bot traffic, fading pages and your weakest pages<\/li>\n<\/ul>\n\n<p><strong>Honesty principles<\/strong><\/p>\n\n<ul>\n<li>No files are written \u2014 everything is served virtually and switches off without a trace.<\/li>\n<li>No cloaking \u2014 humans and bots see the same content; only the <em>format<\/em> may differ when a client asks for it.<\/li>\n<li>No fake manifests \u2014 discovery files are published only when they describe something real.<\/li>\n<li>No upsell surfaces \u2014 this plugin never asks you for a key and never stores one.<\/li>\n<\/ul>\n\n<p><strong>Languages<\/strong><\/p>\n\n<p>The admin panel ships fully translated in 17 languages: English, T\u00fcrk\u00e7e, Deutsch, Espa\u00f1ol, Fran\u00e7ais, Italiano, Nederlands, Polski, Portugu\u00eas, \u0420\u0443\u0441\u0441\u043a\u0438\u0439, \u65e5\u672c\u8a9e, \ud55c\uad6d\uc5b4, \u0627\u0644\u0639\u0631\u0628\u064a\u0629, \u0641\u0627\u0631\u0633\u06cc, \u0939\u093f\u0928\u094d\u0926\u0940, Bahasa Indonesia, Ti\u1ebfng Vi\u1ec7t. RTL layouts are supported for Arabic and Persian. Translations are bundled with the plugin itself (not delivered as WordPress.org language packs).<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can connect to the third-party\/external services listed below. Nothing is contacted on install or silently: every connection either requires an explicit opt-in toggle (off by default) or happens only when you press a button. With all defaults untouched, the plugin makes no outbound calls and collects no telemetry.<\/p>\n\n<p><strong>1. Index Harmony scan service<\/strong> (operated by us at indexharmony.com)<\/p>\n\n<ul>\n<li>What it is \/ why: the optional site-readiness scan \u2014 a 133-check audit of how your site looks to AI crawlers. Scoring that requires fetching your pages from the outside, which cannot be done from inside your own WordPress, so the scan runs on the service\u2019s servers.<\/li>\n<li>What is sent and when: when you press \"Scan\" in the dashboard, your browser opens the service's scan page in a new tab with your site's public address in the URL, and the scan runs there. <strong>The report is shown on the service's own page \u2014 it is not returned to your dashboard, and this plugin performs no follow-up requests, keeps no job id and stores no scan result.<\/strong> Nothing is sent on install, on a schedule or in the background.<\/li>\n<li>This plugin contains no key entry field, no unlock step, no licence status check and no support call, and it stores no key or token for this service.<\/li>\n<li><a href=\"https:\/\/www.indexharmony.com\/agentready\/terms\">Terms of Service<\/a> \u00b7 <a href=\"https:\/\/www.indexharmony.com\/agentready\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<p><strong>2. AI-crawler IP lists for bot verification<\/strong> (opt-in, off by default)<\/p>\n\n<p>When you enable \"bot verification\", about once a day the plugin downloads the public, read-only crawler IP-range lists each vendor publishes, so genuine AI crawlers can be told apart from spoofed user-agents. Only a plain HTTP GET is made to the fixed URLs below \u2014 none of your site content, settings or visitor data is sent to these vendors.<\/p>\n\n<ul>\n<li>OpenAI \u2014 openai.com\/gptbot.json, \/searchbot.json, \/chatgpt-user.json \u00b7 <a href=\"https:\/\/openai.com\/policies\/terms-of-use\">Terms<\/a> \u00b7 <a href=\"https:\/\/openai.com\/policies\/privacy-policy\">Privacy<\/a><\/li>\n<li>Anthropic \u2014 claude.com\/crawling\/bots.json \u00b7 <a href=\"https:\/\/www.anthropic.com\/legal\/consumer-terms\">Terms<\/a> \u00b7 <a href=\"https:\/\/www.anthropic.com\/legal\/privacy\">Privacy<\/a><\/li>\n<li>Perplexity \u2014 perplexity.com\/perplexitybot.json, \/perplexity-user.json \u00b7 <a href=\"https:\/\/www.perplexity.ai\/hub\/legal\/terms-of-service\">Terms<\/a> \u00b7 <a href=\"https:\/\/www.perplexity.ai\/hub\/legal\/privacy-policy\">Privacy<\/a><\/li>\n<li>Amazon \u2014 developer.amazon.com\/amazonbot\/ip-addresses\/ \u00b7 <a href=\"https:\/\/www.amazon.com\/conditionsofuse\">Conditions of Use<\/a> \u00b7 <a href=\"https:\/\/www.amazon.com\/privacy\">Privacy Notice<\/a><\/li>\n<li>Mistral \u2014 mistral.ai\/mistralai-user-ips.json \u00b7 <a href=\"https:\/\/legal.mistral.ai\/terms\">Terms<\/a> \u00b7 <a href=\"https:\/\/legal.mistral.ai\/terms\/privacy-policy\">Privacy<\/a><\/li>\n<li>Microsoft Bing \u2014 no HTTP request; bingbot is verified with a standard reverse-DNS lookup (PTR must end in search.msn.com) through your server's resolver \u00b7 <a href=\"https:\/\/www.microsoft.com\/servicesagreement\">Microsoft Services Agreement<\/a> \u00b7 <a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Privacy Statement<\/a><\/li>\n<\/ul>\n\n<p><strong>3. IndexNow<\/strong> (opt-in module, off by default)<\/p>\n\n<ul>\n<li>What it is \/ why: instant-indexing protocol operated by Microsoft Bing and used by participating engines (Bing, Yandex, Seznam, Naver) to hear about new\/updated content immediately.<\/li>\n<li>What is sent and when: when you publish or update a public post, its URL, your site host and your site's IndexNow key are POSTed to api.indexnow.org. Nothing else is transmitted.<\/li>\n<li><a href=\"https:\/\/www.indexnow.org\/terms\">IndexNow Terms of Use<\/a> \u00b7 <a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Microsoft Privacy Statement<\/a><\/li>\n<\/ul>\n\n<h3>Developer<\/h3>\n\n<h4>agrc_bot_visit_post_id<\/h4>\n\n<p>Maps a logged bot visit to the WordPress entry that the requested path represents.<\/p>\n\n<p>Sites that serve pages through a custom router (a rewrite or <code>template_include<\/code> handler running after <code>template_redirect<\/code> priority 0) have no queried object at the moment the visit is recorded, so the visit is stored with no entry attached. Those pages then drop out of the entry-based surfaces \u2014 readiness correlation, blind spots, content freshness and the crawl funnel \u2014 and blind spots may even report them as \"not visited by any bot yet\".<\/p>\n\n<p>The router is the only party that knows which entry a path represents, so the decision is delegated to it. The filter is opt-in: with no callback attached, behaviour is unchanged.<\/p>\n\n<pre><code>add_filter( 'agrc_bot_visit_post_id', function ( $post_id, $bot_id, $path ) {\n    if ( 0 === $post_id &amp;&amp; 0 === strpos( $path, '\/catalog\/' ) ) {\n        return my_router_resolve_post_id( $path ); \/\/ int, or 0 when unknown\n    }\n    return $post_id;\n}, 10, 3 );\n<\/code><\/pre>\n\n<p>Parameters:<\/p>\n\n<ul>\n<li><code>int $post_id<\/code> \u2014 entry ID resolved by WordPress; 0 when the request is not a singular entry (archives, the blog listing, 404s, and genuinely virtual pages).<\/li>\n<li><code>string $bot_id<\/code> \u2014 registry identifier of the matched crawler, e.g. <code>gptbot<\/code>.<\/li>\n<li><code>string $path<\/code> \u2014 request path with the query string removed and truncated to 255 characters; byte-for-byte what is stored in the visit row.<\/li>\n<\/ul>\n\n<p>Return an integer. Non-numeric returns are ignored and negative values are clamped to 0. The filter runs once per bot visit and never on human traffic.<\/p>\n\n<p>Genuinely virtual pages (those with no WordPress entry at all) cannot be scored, because readiness scores live in post meta. Such paths are listed in a separate section of the \"Bot interest x readiness\" card so the report stays honest instead of silently dropping them.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20modify%20my%20files%20or%20content%3F\"><h3>Does it modify my files or content?<\/h3><\/dt>\n<dd><p>No. Nothing is written to your files and your post content is never changed. All endpoints (llms.txt, AGENTS.md, the product feed\u2026) are served virtually. Disable a module and it is gone without a trace.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20key%20or%20an%20account%3F\"><h3>Do I need a key or an account?<\/h3><\/dt>\n<dd><p>No. There is no key field anywhere in this plugin, nothing to activate and nothing to buy. All 18 modules and every measurement screen work as soon as you switch them on.<\/p><\/dd>\n<dt id=\"where%20does%20the%20scan%20result%20appear%3F\"><h3>Where does the scan result appear?<\/h3><\/dt>\n<dd><p>On the service's own page, in the browser tab that opens when you press \"Scan\". The plugin does not fetch the report back into wp-admin and does not store it.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20anywhere%20on%20its%20own%3F\"><h3>Does the plugin send data anywhere on its own?<\/h3><\/dt>\n<dd><p>With everything at its defaults, no: there is no telemetry and no outbound call happens on its own. If you enable an opt-in module, it makes only the calls described in the \"External services\" section \u2014 IndexNow submits a URL when you publish or update a post, and bot verification downloads public crawler IP lists about once a day. The plugin never phones home.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20my%20seo%20plugin%3F\"><h3>Will it conflict with my SEO plugin?<\/h3><\/dt>\n<dd><p>No. When Yoast SEO, Rank Math, AIOSEO or SEOPress is detected, Index Harmony defers the overlapping schema\/meta output to them and tells you so in the panel.<\/p><\/dd>\n<dt id=\"is%20this%20cloaking%3F\"><h3>Is this cloaking?<\/h3><\/dt>\n<dd><p>No. Visitors and bots always receive the same content. Markdown negotiation only changes the <em>format<\/em> when a client explicitly asks for it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.9.38<\/h4>\n\n<ul>\n<li>First release on WordPress.org: 18 fix modules, setup wizard, tabbed settings, 17-language admin panel, virtual &amp; traceless fix architecture \u2014 no key, no account, no paid tier anywhere in the plugin.<\/li>\n<li>Measurement &amp; insights: bot traffic dashboard, opt-in bot verification, bot blocking &amp; spike alerts, page readiness score + Triage, and an opt-in weekly\/daily digest.<\/li>\n<li>Page-analysis suite: GDPR-neutral daily per-page counters powering a per-page AI evidence panel, a crawl-freshness funnel, a 28-day attention-decay radar, AI-404 phantom URL recovery with optional AI-only 301s, a GEO change log with before\/after impact, and bot health alarms (silence sentinel + spoof-surge guard with an explicitly confirmed spoofed-only 403).<\/li>\n<li>Content scope &amp; curation: opt other plugins' public content types into your llms.txt, AGENTS.md and page scoring, hand-pick which pages your llms.txt highlights with a live search picker, or edit the published llms.txt body directly.<\/li>\n<li>Security headers now have a selection screen (Settings \u2192 Advanced): six optional response headers, each off by default and switched on one at a time.<\/li>\n<li>Guideline &amp; hardening pass: this build contains no licensing, unlock or update-check code at all, and nothing in it is limited by time, by usage or by anything you could pay for \u2014 bot blocking in particular is never time-locked, it only recommends a monitoring window and warns you if you switch it on early. It also defers sitemaps and Product schema to your SEO plugin and WooCommerce correctly, adds cache invalidation for llms.txt and the product feed, moves audits off visitor requests, and registers a personal-data exporter\/eraser for author profile fields.<\/li>\n<li>Polish pass: working Amazonbot IP verification, panel-language number\/date formatting on measurement screens, an honest warning (plus withheld advertising) for .well-known endpoints on subdirectory installs (RFC 8615), and Index Harmony-branded public identifiers (REST index-harmony\/v1, block index-harmony\/nap, index_harmony_* shortcodes).<\/li>\n<\/ul>","raw_excerpt":"One-click AI readiness plus real AI-crawler analytics: llms.txt, bot rules, schema, and per-page AI crawl insights \u2014 free.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342957","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=342957"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/indexharmony"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342957"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342957"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342957"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342957"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342957"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}