{"id":315682,"date":"2026-06-21T11:14:56","date_gmt":"2026-06-21T11:14:56","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seoforge\/"},"modified":"2026-06-21T11:14:20","modified_gmt":"2026-06-21T11:14:20","slug":"brainwerk-seo-suite","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/brainwerk-seo-suite\/","author":23503111,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.5","stable_tag":"0.7.5","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Brainwerk SEO Suite","header_author":"Stefan Kogelgruber","header_description":"Privacy-first WordPress SEO suite with built-in visitor analytics, source tracking, on-page analyzer, sitemap, redirects, 404-logger and Schema.org. Multisite-ready and GDPR-compliant.","assets_banners_color":"192245","last_updated":"2026-06-21 11:14:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/seoforge.brainwerk.at","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":22,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.7.5":{"tag":"0.7.5","author":"brainwerk","date":"2026-06-21 11:14:20"}},"upgrade_notice":{"0.6.0":"<p>Freemius integration is live. Existing Free installs keep working unchanged; Pro features require a license.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3580576,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3580576,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3580576,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3580576,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.7.5"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Dashboard \u2014 KPIs, sparkline, top pages, top sources, devices.","2":"On-page SEO analyzer with focus-keyword scoring.","3":"Redirect manager.","4":"404 log with quick-redirect button.","5":"Privacy \/ GDPR settings."}},"plugin_section":[262246],"plugin_tags":[232,131785,727,186,1557],"plugin_category":[36,55],"plugin_contributors":[268198,78154],"plugin_business_model":[],"class_list":["post-315682","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-analytics","plugin_tags-gdpr","plugin_tags-redirect","plugin_tags-seo","plugin_tags-sitemap","plugin_category-analytics","plugin_category-seo-and-marketing","plugin_contributors-brainwerk","plugin_contributors-freemius","plugin_committers-brainwerk"],"banners":{"banner":"https:\/\/ps.w.org\/brainwerk-seo-suite\/assets\/banner-772x250.png?rev=3580576","banner_2x":"https:\/\/ps.w.org\/brainwerk-seo-suite\/assets\/banner-1544x500.png?rev=3580576","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/brainwerk-seo-suite\/assets\/icon-128x128.png?rev=3580576","icon_2x":"https:\/\/ps.w.org\/brainwerk-seo-suite\/assets\/icon-256x256.png?rev=3580576","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Brainwerk SEO Suite<\/strong> is an all-in-one, privacy-first SEO suite for WordPress. It combines server-side visitor analytics, a Schema.org\/Open-Graph meta engine, an XML sitemap, a redirect manager, a 404 log and an on-page SEO analyzer \u2014 all without sending any data to third parties, all GDPR-friendly by default.<\/p>\n\n<h4>Core features (Free)<\/h4>\n\n<ul>\n<li><strong>Local visitor analytics<\/strong> \u2014 server-side pageview tracking, no cookies, no Google Analytics, no Facebook Pixel<\/li>\n<li><strong>Source attribution<\/strong> \u2014 search engines, social, referrers, UTM parameters, direct<\/li>\n<li><strong>Top pages, entry\/exit pages, device + browser + OS breakdown<\/strong><\/li>\n<li><strong>Meta engine<\/strong> \u2014 <code>&lt;title&gt;<\/code>, meta description, Open Graph, Twitter Cards, canonical, per-post overrides<\/li>\n<li><strong>Schema.org JSON-LD<\/strong> \u2014 Article, Organization, BreadcrumbList, WebSite<\/li>\n<li><strong>XML sitemap<\/strong> \u2014 <code>\/seoforge-sitemap.xml<\/code> with chunked URL sets + custom robots.txt<\/li>\n<li><strong>Redirect manager<\/strong> \u2014 301 \/ 302 \/ 307 \/ 308 with exact and prefix matching<\/li>\n<li><strong>404 log<\/strong> with one-click \"create redirect\"<\/li>\n<li><strong>On-page SEO analyzer<\/strong> \u2014 score 0\u2013100 across 9 checks incl. focus-keyword, alt text, internal links, Flesch-DE readability<\/li>\n<li><strong>AI suggestions (bring-your-own Anthropic key)<\/strong> \u2014 titles, meta descriptions, focus keywords, internal links<\/li>\n<li><strong>Migration wizard<\/strong> \u2014 import existing metadata + redirects from Yoast SEO, RankMath, AIOSEO<\/li>\n<li><strong>Multisite-aware<\/strong> \u2014 network activation, network-wide settings, per-site overrides<\/li>\n<\/ul>\n\n<h4>Privacy &amp; GDPR<\/h4>\n\n<ul>\n<li>IP anonymization on by default (IPv4 last octet, IPv6 \/64)<\/li>\n<li>Daily-rotating SHA-1 visitor hash \u2014 no cross-day \/ cross-site identifier<\/li>\n<li>Respects <code>DNT<\/code> (Do-Not-Track) header<\/li>\n<li>No cookies, no third-party requests, no remote phone-home<\/li>\n<li>Configurable retention (visits, sessions, 404s)<\/li>\n<li>All tables can be dropped automatically on uninstall (opt-in)<\/li>\n<\/ul>\n\n<h4>Coexistence<\/h4>\n\n<p>Already using Yoast, RankMath, AIOSEO, The SEO Framework or SEOPress? Brainwerk SEO Suite auto-detects them and stands down its meta\/schema\/sitemap modules, so you get <strong>analytics + 404 log + redirects + analyzer<\/strong> as an add-on without duplicate output. One toggle to force takeover whenever you want.<\/p>\n\n<h4>Pro<\/h4>\n\n<p>The Pro tier unlocks (via Freemius license):<\/p>\n\n<ul>\n<li>Google Search Console sync (clicks, impressions, queries, position)<\/li>\n<li>Bing Webmaster sync<\/li>\n<li>Country \/ Geo-Lookup (MaxMind GeoLite2)<\/li>\n<li>Slack \/ Discord \/ MS-Teams webhook notifications<\/li>\n<li>Anomaly detection on hourly traffic (Z-score baseline, 3\u03c3 alerts)<\/li>\n<li>Multisite-aggregate dashboard<\/li>\n<li>White-label branding<\/li>\n<li>Priority support<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to one external third-party service. It is <strong>opt-in<\/strong> and only used when you explicitly configure it.<\/p>\n\n<p><strong>Anthropic (Claude) API \u2014 <code>https:\/\/api.anthropic.com<\/code><\/strong><\/p>\n\n<ul>\n<li><strong>What it is used for:<\/strong> Generating AI suggestions for SEO titles, meta descriptions, focus keywords and internal-link recommendations when you click the \"\u2728 Suggest with AI\" buttons in the on-page meta box or the AI tab.<\/li>\n<li><strong>When data is sent:<\/strong> Only when an editor clicks one of the AI-suggestion buttons in the WordPress admin. No data is sent on the front-end, during normal page views, or in cron jobs.<\/li>\n<li><strong>What data is sent:<\/strong> Your own Anthropic API key (you supply it; the plugin does not bundle one), the post title and the post body content of the post you are editing, plus a short instruction prompt. The plugin sends nothing else \u2014 no user identifiers, no site-wide content, no analytics.<\/li>\n<li><strong>How to disable:<\/strong> Leave the Anthropic API key field empty in <em>Brainwerk SEO Suite \u2192 AI<\/em> settings, or toggle the AI feature off on the same page. With no key, the plugin never contacts Anthropic.<\/li>\n<li><strong>Provider:<\/strong> Anthropic PBC \u2014 <a href=\"https:\/\/www.anthropic.com\/legal\/commercial-terms\">Terms of Service<\/a> \u2014 <a href=\"https:\/\/www.anthropic.com\/legal\/privacy\">Privacy Policy<\/a><\/li>\n<li><strong>API documentation:<\/strong> <a href=\"https:\/\/docs.anthropic.com\/\">https:\/\/docs.anthropic.com\/<\/a><\/li>\n<\/ul>\n\n<p>Licensing for the optional Pro tier is handled by Freemius (Merchant of Record). License-validation traffic \u2014 only performed when you activate a Pro license on the <em>License<\/em> tab \u2014 goes to <code>https:\/\/api.freemius.com<\/code>. See the <a href=\"https:\/\/freemius.com\/terms\/\">Freemius Terms of Service<\/a> and <a href=\"https:\/\/freemius.com\/privacy\/\">Privacy Policy<\/a>. With no Pro license entered, the plugin never contacts Freemius.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>seoforge<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install via the WordPress Plugin Directory).<\/li>\n<li><strong>Activate<\/strong> the plugin on the Plugins page, or <strong>Network Activate<\/strong> on Multisite.<\/li>\n<li>Open <em>Brainwerk SEO Suite<\/em> in the admin menu and complete the 3-step setup wizard.<\/li>\n<li>(Optional) On the <em>License<\/em> tab, activate a Pro license to unlock Pro modules.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20brainwerk%20seo%20suite%20work%20with%20yoast%20%2F%20rankmath%20%2F%20aioseo%20already%20installed%3F\"><h3>Does Brainwerk SEO Suite work with Yoast \/ RankMath \/ AIOSEO already installed?<\/h3><\/dt>\n<dd><p>Yes. Brainwerk SEO Suite auto-detects the active SEO plugin and stands down its meta, schema, sitemap and robots modules so there's no duplicate output. Analytics, the 404 log, redirects and the on-page analyzer keep working side by side. A single toggle on the <em>Privacy \/ GDPR<\/em> tab forces takeover whenever you want.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20add%20a%20cookie%20banner%3F\"><h3>Do I need to add a cookie banner?<\/h3><\/dt>\n<dd><p>Not because of Brainwerk SEO Suite. The plugin doesn't drop any cookies, doesn't use a cross-site identifier, anonymizes IPs and respects DNT by default. The bundled privacy snippet documents exactly what is stored so you can paste it into your own privacy policy.<\/p><\/dd>\n<dt id=\"is%20the%20analytics%20data%20accurate%20without%20javascript%3F\"><h3>Is the analytics data accurate without JavaScript?<\/h3><\/dt>\n<dd><p>The server-side mode catches all real requests, including users who block JavaScript or use strict tracking-protection. It does count fewer \"bot-like\" visits than JS-based analytics because we filter known crawler user agents. A JS beacon mode for time-on-page and scroll depth is included if you want the extra signal.<\/p><\/dd>\n<dt id=\"will%20brainwerk%20seo%20suite%20slow%20down%20my%20site%3F\"><h3>Will Brainwerk SEO Suite slow down my site?<\/h3><\/dt>\n<dd><p>The tracker only inserts one row per pageview (no joins, no remote calls). All dashboards read from a pre-aggregated daily table, so the admin pages are sub-millisecond even at 100k+ visits per month. The sitemap and meta output are cached.<\/p><\/dd>\n<dt id=\"is%20there%20a%20wp-cli%20command%3F\"><h3>Is there a wp-cli command?<\/h3><\/dt>\n<dd><p>Yes \u2014 <code>wp seoforge stats<\/code>, <code>wp seoforge purge<\/code>, <code>wp seoforge cleanup<\/code>, <code>wp seoforge aggregate<\/code>, <code>wp seoforge export<\/code>, <code>wp seoforge import-redirects<\/code>, <code>wp seoforge seed-demo<\/code> and <code>wp seoforge license<\/code>.<\/p><\/dd>\n<dt id=\"where%20is%20data%20stored%3F\"><h3>Where is data stored?<\/h3><\/dt>\n<dd><p>Six tables under the network prefix (<code>wp_seoforge_visits<\/code>, <code>_sessions<\/code>, <code>_redirects<\/code>, <code>_404<\/code>, <code>_meta<\/code>, <code>_daily<\/code>) and a settings option. Nothing leaves the server (Pro modules use opt-in external APIs).<\/p><\/dd>\n<dt id=\"where%20is%20the%20license%20server%3F\"><h3>Where is the license server?<\/h3><\/dt>\n<dd><p>Licensing is handled by Freemius (Merchant of Record). All license traffic goes to <code>api.freemius.com<\/code>. There is no Brainwerk SEO Suite-operated license server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.5 \u2014 2026-06-19<\/h4>\n\n<ul>\n<li><strong>Security\/SQL<\/strong>: every plugin-owned table name that was previously interpolated into a query string is now passed through the <code>$wpdb-&gt;prepare()<\/code> <code>%i<\/code> identifier placeholder (WordPress 6.2+) instead of string interpolation. Conditional <code>WHERE<\/code> builders and the breakdown\/percentile switches were restructured so each <code>$wpdb-&gt;prepare()<\/code> call receives a string literal with placeholders only \u2014 no SQL string is built in a variable. The only remaining interpolation is the dynamic <code>post_type IN (...)<\/code> list, which uses generated <code>%s<\/code> placeholders bound through <code>prepare()<\/code> (an <code>IN()<\/code> list cannot use <code>%i<\/code>). Requires at least WordPress 6.2.<\/li>\n<\/ul>\n\n<h4>0.7.4 \u2014 2026-06-14<\/h4>\n\n<ul>\n<li><strong>Security<\/strong>: removed the last two cases of a column identifier being interpolated into SQL. The breakdown query (<code>Seoforge_Stats::group_count()<\/code>) and the Core Web Vitals percentile query (<code>Seoforge_Reports::percentile()<\/code>) now select a separate, fully literal query string per allowed column \u2014 the SQL identifier is never taken from a variable. All values continue to be bound through <code>$wpdb-&gt;prepare()<\/code>.<\/li>\n<\/ul>\n\n<h4>0.7.3 \u2014 2026-06-13<\/h4>\n\n<ul>\n<li><strong>Enqueue<\/strong>: the Reports tab no longer outputs an inline <code>&lt;script&gt;<\/code>; its quick-range helper moved into the enqueued <code>assets\/js\/admin.js<\/code>.<\/li>\n<li><strong>i18n<\/strong>: the last <code>seoforge<\/code> text-domain string now uses <code>brainwerk-seo-suite<\/code>, matching the plugin slug.<\/li>\n<li><strong>Security<\/strong>: report admin-post handlers sanitize the nonce with <code>sanitize_text_field( wp_unslash() )<\/code> and unslash\/sanitize all request values; the post meta box sanitizes its submitted array at input.<\/li>\n<\/ul>\n\n<h4>0.7.2 \u2014 2026-06-10<\/h4>\n\n<ul>\n<li><strong>Security<\/strong>: table names passed to the internal table-resolver are now validated against the fixed whitelist of plugin tables before being used in SQL.<\/li>\n<li><strong>Security<\/strong>: the migration coordinator builds its post-type <code>IN (...)<\/code> list from dynamically generated <code>%s<\/code> placeholders via <code>$wpdb-&gt;prepare()<\/code> instead of escaping + interpolation.<\/li>\n<li><strong>Security<\/strong>: internal report\/stats helpers validate metric and group-by column names against fixed whitelists before using them as SQL identifiers.<\/li>\n<\/ul>\n\n<h4>0.7.1 \u2014 2026-06-03<\/h4>\n\n<ul>\n<li><strong>Security<\/strong>: Schema.org JSON-LD is now emitted with slash-escaping (no <code>JSON_UNESCAPED_SLASHES<\/code>), so a value containing <code>&lt;\/script&gt;<\/code> can no longer break out of the inline <code>application\/ld+json<\/code> block. <code>\\\/<\/code> and <code>\\uXXXX<\/code> remain valid JSON-LD.<\/li>\n<\/ul>\n\n<h4>0.7.0 \u2014 2026-05-21<\/h4>\n\n<ul>\n<li><strong>Rebranded<\/strong> to Brainwerk SEO Suite (was: SEOForge). Display name + text-domain + plugin filename updated.<\/li>\n<li><strong>Security<\/strong>: nonce verification in the post meta box now goes through <code>sanitize_text_field( wp_unslash() )<\/code> (pluggable-function hardening).<\/li>\n<li><strong>Security<\/strong>: <code>$_COOKIE<\/code> reads in the tracker now go through <code>sanitize_text_field( wp_unslash() )<\/code> in addition to the existing hex-filter.<\/li>\n<li><strong>Security<\/strong>: SVG sparkline attributes in the dashboard widget now use <code>esc_attr()<\/code> for chart coordinates.<\/li>\n<li><strong>Security<\/strong>: WP-CLI <code>export --out=&lt;path&gt;<\/code> is now restricted to a <code>wp-content\/uploads\/seoforge\/<\/code> subdirectory (and writes only the basename) so it cannot clobber arbitrary paths.<\/li>\n<li><strong>wp.org compliance<\/strong>: removed the Pro-only bearer-key path from the REST <code>permission_callback<\/code>. The Free REST API is admin-cookie\/nonce only. Pro external dashboards stay in the separate Premium build.<\/li>\n<li><strong>wp.org compliance<\/strong>: removed <code>load_plugin_textdomain()<\/code> \u2014 WordPress 4.6+ auto-loads translations for plugins hosted on wp.org by slug.<\/li>\n<li><strong>wp.org compliance<\/strong>: weekly digest now uses <code>admin_url()<\/code> instead of a hard-coded <code>\/wp-admin\/<\/code> path.<\/li>\n<li><strong>Docs<\/strong>: readme now documents the optional Anthropic (Claude) API integration as an <code>== External services ==<\/code> section, with what is sent, when, how to disable, and links to Anthropic's Terms \/ Privacy.<\/li>\n<\/ul>\n\n<h4>0.6.0 \u2014 2026-05-19<\/h4>\n\n<ul>\n<li>Freemius integration live-wired end-to-end (real product IDs, SDK in <code>freemius\/<\/code>, <code>is_live=true<\/code>).<\/li>\n<li>Paid plans Starter (\u20ac59\/yr, 1 site) and Agency (\u20ac199\/yr, 25 sites) with auto-generated pricing table.<\/li>\n<li>New sanity row in the Tools tab reports SDK \/ opt-in \/ license state.<\/li>\n<li>Premium build script (<code>bin\/build-premium.sh<\/code>) for Freemius Deploy.<\/li>\n<li>Fix: <code>Seoforge_License::is_pro()<\/code> now uses <code>is_paying()<\/code> so Pro modules load in both Free and Premium builds with a valid license.<\/li>\n<li><code>uninstall.php<\/code> logic migrated to Freemius <code>after_uninstall<\/code> hook (per Freemius Deploy guideline).<\/li>\n<\/ul>\n\n<h4>0.5.0 \u2014 2026-05-10<\/h4>\n\n<ul>\n<li>CI alignment with the ShieldForge UX (Hero banner, tab groups, action items, iOS toggles, tooltips, dark mode, mobile, sanity card).<\/li>\n<li><code>bin\/bump-version.{sh,ps1}<\/code> + <code>bin\/build-free.{sh,ps1}<\/code> + <code>.distignore<\/code>.<\/li>\n<li>Pre-launch sanity check (17 checks across versioning, cron, DB, privacy, tracking, sitemap, coexistence, file hygiene, readme, translations).<\/li>\n<li>i18n: POT + de_DE PO\/MO shipped.<\/li>\n<li>PHPUnit tests for <code>Seoforge_Crypto<\/code> + <code>Seoforge_Analyzer<\/code>.<\/li>\n<\/ul>\n\n<h4>0.4.0 \u2014 2026-05-07<\/h4>\n\n<ul>\n<li>Migration wizard for Yoast \/ RankMath \/ AIOSEO (metadata + redirects).<\/li>\n<li>JS-beacon tracking mode with scroll depth + outbound clicks.<\/li>\n<li><code>Seoforge_Health<\/code> setup-health score on the Dashboard.<\/li>\n<li>UX polish for non-technical site owners.<\/li>\n<\/ul>\n\n<h4>0.3.0 \u2014 2026-05-07<\/h4>\n\n<ul>\n<li>Pre-aggregated daily table for O(1) dashboard queries.<\/li>\n<li>Transient caches with auto-flush on mutations.<\/li>\n<li>License-key encryption at rest (AES-256-CBC).<\/li>\n<li>Streamed CSV exports (visits, sessions, 404, redirects).<\/li>\n<li>Bulk redirect import from CSV.<\/li>\n<li>WP-CLI commands (<code>wp seoforge ...<\/code>).<\/li>\n<li>Demo seeder + live-visitors widget.<\/li>\n<li>REST API (<code>\/wp-json\/seoforge\/v1\/...<\/code>).<\/li>\n<\/ul>\n\n<h4>0.2.0 \u2014 2026-05-07<\/h4>\n\n<ul>\n<li>Coexistence layer detects Yoast \/ RankMath \/ AIOSEO \/ The SEO Framework \/ SEOPress and stands down passively.<\/li>\n<li>License + Pro module foundation.<\/li>\n<li>Pro stubs: Geo-Lookup, webhooks, anomaly detection, Search Console.<\/li>\n<li>Marketing landing page (<code>landing\/index.html<\/code>).<\/li>\n<\/ul>\n\n<h4>0.1.0 \u2014 2026-05-07<\/h4>\n\n<ul>\n<li>Initial release: tracker, sessions, stats, meta, schema, sitemap, robots, redirects, 404 log, on-page analyzer, weekly digest, onboarding wizard, tools tab.<\/li>\n<\/ul>","raw_excerpt":"Privacy-first SEO + visitor analytics. Sitemap, Schema.org, redirects, 404 log, on-page analyzer. Multisite-ready, made in EU.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315682"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brainwerk"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315682"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315682"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315682"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315682"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315682"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}