[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fOIZRvuseF_RVc6jw9JicPISb7NRrJaTkhc7CeUX5U20":3},{"slug":4,"display_name":4,"profile_url":5,"plugin_count":6,"total_installs":7,"avg_security_score":8,"avg_patch_time_days":9,"trust_score":10,"computed_at":11,"plugins":12},"airygen","https:\u002F\u002Fprofiles.wordpress.org\u002Fairygen\u002F",1,0,100,30,94,"2026-08-29T11:21:23.499Z",[13],{"slug":14,"name":15,"version":16,"author":4,"author_profile":5,"description":17,"short_description":18,"active_installs":7,"downloaded":19,"rating":7,"num_ratings":7,"last_updated":20,"tested_up_to":21,"requires_at_least":22,"requires_php":23,"tags":24,"homepage":30,"download_link":31,"security_score":8,"vuln_count":7,"unpatched_count":7,"last_vuln_date":32,"fetched_at":33},"airygen-seo","Airygen SEO – Topic Clusters for SEO & GEO","1.0.10","\u003Cp>Airygen SEO helps WordPress publishers build stronger topic clusters, discover internal linking opportunities, and generate AI-readable site files such as \u003Ccode>llms.txt\u003C\u002Fcode> and Markdown exports.\u003C\u002Fp>\n\u003Cp>It is built for content-heavy sites that want better structure, stronger internal links, and modern AI search visibility (GEO). Designed for modern WordPress sites running PHP 8.1+.\u003C\u002Fp>\n\u003Ch4>What makes it different\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Topic Cluster mind map\u003C\u002Fstrong> — visualize pillar, cluster, and support relationships across your content, and spot posts that sit outside any cluster.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Internal link suggestions and link counting\u003C\u002Fstrong> — surface where new internal links belong and see how well each post is connected.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Sitewide SEO evaluation\u003C\u002Fstrong> — score your whole site, not just one post at a time.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>llms.txt and Markdown-for-agents\u003C\u002Fstrong> — publish AI-readable versions of your site so LLMs and agents can understand it.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Modular architecture\u003C\u002Fstrong> — turn on only the workflows you actually need.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>A complete SEO toolkit when you want it\u003C\u002Fh4>\n\u003Cp>Airygen SEO is also a full, modular SEO platform. When you choose to, it can take over on-page and technical SEO too:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>On-page SEO fields for titles, descriptions, canonical URLs, robots directives, and focus keyphrases, with a live content score and SERP snippet preview.\u003C\u002Fli>\n\u003Cli>Schema markup for article, website, organization, author, and breadcrumb contexts.\u003C\u002Fli>\n\u003Cli>XML sitemaps, robots controls, redirects, 404 logging, and broken link monitoring.\u003C\u002Fli>\n\u003Cli>Open Graph and Twitter \u002F X social cards.\u003C\u002Fli>\n\u003Cli>Image SEO, Local SEO, author SEO, taxonomy SEO, hreflang, RSS feed signature, and WooCommerce SEO.\u003C\u002Fli>\n\u003Cli>Instant indexing, site verification, and notification integrations.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Full source code is available on GitHub. Feature requests, bug reports, and contributions are welcome: https:\u002F\u002Fgithub.com\u002Fairygen\u002Fairygen-seo\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Modular SEO architecture so site owners can enable the workflows they actually need.\u003C\u002Fli>\n\u003Cli>SEO title and description management with scoring support and search-result width reminders.\u003C\u002Fli>\n\u003Cli>Canonical and robots controls for posts, terms, and broader site contexts.\u003C\u002Fli>\n\u003Cli>Open Graph and Twitter \u002F X card output for richer social sharing.\u003C\u002Fli>\n\u003Cli>Schema markup generation for important frontend contexts.\u003C\u002Fli>\n\u003Cli>XML sitemap support and related crawl controls.\u003C\u002Fli>\n\u003Cli>Breadcrumbs, table of contents, related posts, and topic cluster features to strengthen content structure.\u003C\u002Fli>\n\u003Cli>Internal link suggestions, link counting, and sitewide SEO evaluation to improve content quality over time.\u003C\u002Fli>\n\u003Cli>Redirects, 404 tools, and broken link checking for maintenance and cleanup.\u003C\u002Fli>\n\u003Cli>Runtime Image SEO to fill missing image attributes using configurable templates.\u003C\u002Fli>\n\u003Cli>Instant indexing, site verification, and notification modules for operational SEO workflows.\u003C\u002Fli>\n\u003Cli>Local SEO, author SEO, taxonomy SEO, hreflang, RSS feed signature, and WooCommerce SEO extensions.\u003C\u002Fli>\n\u003Cli>LLMs.txt and Markdown-for-agents tooling for modern publishing workflows.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Source code\u003C\u002Fh3>\n\u003Cp>The full, human-readable source code for this plugin — including the unminified JavaScript, TypeScript, JSX, and SCSS sources used to produce every file under the distributed \u003Ccode>build\u002F\u003C\u002Fcode> directory — is available on GitHub:\u003C\u002Fp>\n\u003Cp>https:\u002F\u002Fgithub.com\u002Fairygen\u002Fairygen-seo\u003C\u002Fp>\n\u003Cp>Every compiled file shipped under \u003Ccode>build\u002F\u003C\u002Fcode> carries an unminified header comment that points back to its source entry point, source directories, and the repository URL above. The mapping below documents that relationship in full so anyone can locate the human-readable source for any compiled asset.\u003C\u002Fp>\n\u003Ch4>How the build\u002F directory is produced\u003C\u002Fh4>\n\u003Cp>The \u003Ccode>build\u002F\u003C\u002Fcode> directory is generated by \u003Ccode>@wordpress\u002Fscripts\u003C\u002Fcode> (which uses webpack 5, Babel, PostCSS, and Sass under the hood). The build entry points are declared in \u003Ccode>package.json\u003C\u002Fcode> (\u003Ccode>scripts.build\u003C\u002Fcode>):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>wp-scripts build block-editor=.\u002Fpackages\u002Fblock-editor\u002Fsrc\u002Findex.tsx --output-path=build\u002Fblock-editor --output-filename=airygen-editor.js\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp-scripts build classic-editor=.\u002Fpackages\u002Fclassic-editor\u002Fsrc\u002Findex.tsx --output-path=build\u002Fclassic-editor --output-filename=airygen-editor.js\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp-scripts build .\u002Fpackages\u002Fadmin\u002Fapp.tsx --output-path=build\u002Fadmin --output-filename=airygen-app.js\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>After \u003Ccode>wp-scripts build\u003C\u002Fcode> finishes, the \u003Ccode>pnpm build\u003C\u002Fcode> script runs \u003Ccode>node scripts\u002Fbuild-banner.mjs\u003C\u002Fcode>, which prepends a \u003Ccode>\u002F*! ... *\u002F\u003C\u002Fcode> header to each emitted JS and CSS file. The header names the file’s source entry, its source directories, the repository URL, and the build command. The script is idempotent: re-running it replaces an existing Airygen SEO banner rather than stacking another one on top.\u003C\u002Fp>\n\u003Ch4>Source-to-build mapping\u003C\u002Fh4>\n\u003Cp>Bundle: build\u002Fadmin\u002F\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>build\u002Fadmin\u002Fairygen-app.js\u003C\u002Fcode> — compiled from entry \u003Ccode>packages\u002Fadmin\u002Fapp.tsx\u003C\u002Fcode>. Pulls in modules under \u003Ccode>packages\u002Fadmin\u002Fcomponents\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fadmin\u002Fpages\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fadmin\u002Futils\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fadmin\u002Ftypes\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fadmin\u002Fconstants\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fadmin\u002Fstyles\u002F\u003C\u002Fcode>, and shared modules under \u003Ccode>packages\u002Fshared\u002F\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>build\u002Fadmin\u002Fapp.tsx.css\u003C\u002Fcode> and \u003Ccode>build\u002Fadmin\u002Fapp.tsx-rtl.css\u003C\u002Fcode> — compiled from \u003Ccode>packages\u002Fadmin\u002Fstyles\u002Ftailwind.css\u003C\u002Fcode>, with Tailwind CSS scanning class names across \u003Ccode>packages\u002Fadmin\u002F**\u002F*.{tsx,ts}\u003C\u002Fcode> per \u003Ccode>tailwind.config.js\u003C\u002Fcode>, and PostCSS plugins declared in \u003Ccode>postcss.config.js\u003C\u002Fcode> (Tailwind CSS + Autoprefixer).\u003C\u002Fli>\n\u003Cli>\u003Ccode>build\u002Fadmin\u002Fairygen-app.asset.php\u003C\u002Fcode> — auto-generated dependency manifest emitted by \u003Ccode>@wordpress\u002Fdependency-extraction-webpack-plugin\u003C\u002Fcode>. Not authored by hand.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Bundle: build\u002Fblock-editor\u002F\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>build\u002Fblock-editor\u002Fairygen-editor.js\u003C\u002Fcode> — compiled from entry \u003Ccode>packages\u002Fblock-editor\u002Fsrc\u002Findex.tsx\u003C\u002Fcode>. Pulls in modules under \u003Ccode>packages\u002Fblock-editor\u002Fcomponents\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fblock-editor\u002Fhooks\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fblock-editor\u002Futils\u002F\u003C\u002Fcode>, \u003Ccode>packages\u002Fblock-editor\u002Fconfig.ts\u003C\u002Fcode>, \u003Ccode>packages\u002Fblock-editor\u002Ftypes.ts\u003C\u002Fcode>, and shared modules under \u003Ccode>packages\u002Fshared\u002F\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>build\u002Fblock-editor\u002Fstyle-block-editor.css\u003C\u002Fcode> and \u003Ccode>build\u002Fblock-editor\u002Fstyle-block-editor-rtl.css\u003C\u002Fcode> — compiled from \u003Ccode>packages\u002Fblock-editor\u002Fstyle.scss\u003C\u002Fcode> and any \u003Ccode>.scss\u003C\u002Fcode> files it imports under \u003Ccode>packages\u002Fblock-editor\u002F\u003C\u002Fcode>, processed by Sass and PostCSS.\u003C\u002Fli>\n\u003Cli>\u003Ccode>build\u002Fblock-editor\u002Fairygen-editor.asset.php\u003C\u002Fcode> — auto-generated dependency manifest.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Bundle: build\u002Fclassic-editor\u002F\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>build\u002Fclassic-editor\u002Fairygen-editor.js\u003C\u002Fcode> — compiled from entry \u003Ccode>packages\u002Fclassic-editor\u002Fsrc\u002Findex.tsx\u003C\u002Fcode>. Pulls in modules under \u003Ccode>packages\u002Fclassic-editor\u002Fcomponents\u002F\u003C\u002Fcode> and shared modules under \u003Ccode>packages\u002Fshared\u002F\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>build\u002Fclassic-editor\u002Fstyle-classic-editor.css\u003C\u002Fcode> and \u003Ccode>build\u002Fclassic-editor\u002Fstyle-classic-editor-rtl.css\u003C\u002Fcode> — compiled from \u003Ccode>packages\u002Fclassic-editor\u002Fstyle.scss\u003C\u002Fcode> and any \u003Ccode>.scss\u003C\u002Fcode> files it imports under \u003Ccode>packages\u002Fclassic-editor\u002F\u003C\u002Fcode>, processed by Sass and PostCSS.\u003C\u002Fli>\n\u003Cli>\u003Ccode>build\u002Fclassic-editor\u002Fairygen-editor.asset.php\u003C\u002Fcode> — auto-generated dependency manifest.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Assets that are not compiled\u003C\u002Fp>\n\u003Cp>The following directories contain hand-written JavaScript and CSS that are shipped as-is (no build step) and enqueued directly by PHP. They are already in their human-readable form and have no \u003Ccode>build\u002F\u003C\u002Fcode> counterpart:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>resources\u002Fassets\u002Fjs\u002F\u003C\u002Fcode> — \u003Ccode>faq-preview.js\u003C\u002Fcode>, \u003Ccode>inline-script-host.js\u003C\u002Fcode>, \u003Ccode>metabox.js\u003C\u002Fcode>, \u003Ccode>toc-preview.js\u003C\u002Fcode>, \u003Ccode>topic-expansion-preview.js\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>resources\u002Fassets\u002Fcss\u002Fstyle.css\u003C\u002Fcode> — public-facing stylesheet.\u003C\u002Fli>\n\u003Cli>\u003Ccode>resources\u002Fviews\u002F**\u003C\u002Fcode> — PHP view templates.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Reproducing the build locally\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Install Node.js 20+ and pnpm 9+, plus PHP 8.1+ and Composer 2+.\u003C\u002Fli>\n\u003Cli>Clone the repository: \u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fairygen\u002Fairygen-seo.git\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Install dependencies: \u003Ccode>pnpm install\u003C\u002Fcode> and \u003Ccode>composer install\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Build production assets: \u003Ccode>pnpm build\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>After step 4 the same files shipped under \u003Ccode>build\u002F\u003C\u002Fcode> in the distributed plugin will be regenerated locally. Each regenerated file will carry the same \u003Ccode>\u002F*! ... *\u002F\u003C\u002Fcode> header described above, making every compiled file traceable back to a public source path.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the following third-party services when the corresponding features are enabled by the site administrator. No data is sent to any external service unless the site administrator enables the feature.\u003C\u002Fp>\n\u003Ch4>Google Maps\u003C\u002Fh4>\n\u003Cp>When the Local SEO module is enabled and valid coordinates are configured, the plugin can embed a Google Maps iframe from \u003Ccode>https:\u002F\u002Fwww.google.com\u002Fmaps?...&output=embed\u003C\u002Fcode> in two places: the frontend Local SEO business card output and the Local SEO admin preview. The request includes the configured latitude\u002Flongitude in the embed URL, and Google may receive standard embed request data such as the visitor or administrator IP address and browser metadata.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcloud.google.com\u002Fmaps-platform\u002Fterms\" rel=\"nofollow ugc\">Google Maps Platform Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">Google Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>IndexNow endpoints\u003C\u002Fh4>\n\u003Cp>When the Instant Indexing module is enabled and the site administrator configures an IndexNow key, the plugin sends JSON requests to each enabled IndexNow engine endpoint. The payload contains the site host, the configured key, the submitted URL list, and the optional key file location. Requests can occur during automatic publish or delete events, manual submissions from the Instant Indexing admin screen, and backfill jobs started by the site administrator. Built-in endpoints currently include:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Microsoft Bing: \u003Ccode>https:\u002F\u002Fwww.bing.com\u002Findexnow\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen\u002Fservicesagreement\" rel=\"nofollow ugc\">Microsoft Services Agreement\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fprivacy\u002Fprivacystatement\" rel=\"nofollow ugc\">Microsoft Privacy Statement\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Yandex: \u003Ccode>https:\u002F\u002Fyandex.com\u002Findexnow\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fyandex.com\u002Flegal\u002Frules\u002F\" rel=\"nofollow ugc\">Yandex User Agreement\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fyandex.com\u002Flegal\u002Fconfidential\u002F\" rel=\"nofollow ugc\">Yandex Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Seznam.cz: \u003Ccode>https:\u002F\u002Fsearch.seznam.cz\u002Findexnow\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fo-seznam.cz\u002Fpravni-informace\u002F\" rel=\"nofollow ugc\">Seznam Legal Information\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fo-seznam.cz\u002Fpravni-informace\u002Fochrana-udaju\u002F\" rel=\"nofollow ugc\">Seznam Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Naver: \u003Ccode>https:\u002F\u002Fsearchadvisor.naver.com\u002Findexnow\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fpolicy.naver.com\u002Fpolicy\u002Fservice_en.html\" rel=\"nofollow ugc\">Naver Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpolicy.naver.com\u002Fpolicy\u002Fprivacy_en.html\" rel=\"nofollow ugc\">Naver Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Yep (Ahrefs): \u003Ccode>https:\u002F\u002Findexnow.yep.com\u002Findexnow\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fahrefs.com\u002Flegal\u002Fterms\" rel=\"nofollow ugc\">Ahrefs Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fahrefs.com\u002Flegal\u002Fprivacy-policy\" rel=\"nofollow ugc\">Ahrefs Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.indexnow.org\u002Ffaq\" rel=\"nofollow ugc\">IndexNow FAQ\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Telegram Bot API\u003C\u002Fh4>\n\u003Cp>When Telegram notifications are enabled in the Notify module, the plugin sends a \u003Ccode>sendMessage\u003C\u002Fcode> request to \u003Ccode>https:\u002F\u002Fapi.telegram.org\u003C\u002Fcode> using the bot token and chat ID configured by the site administrator. The transmitted payload contains the notification subject and message body, plus the optional Telegram topic ID when configured.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftelegram.org\u002Ftos\" rel=\"nofollow ugc\">Telegram Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftelegram.org\u002Fprivacy\" rel=\"nofollow ugc\">Telegram Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Discord Webhooks\u003C\u002Fh4>\n\u003Cp>When Discord notifications are enabled in the Notify module, the plugin sends a webhook request to the Discord webhook URL configured by the site administrator. The transmitted payload contains the notification subject as the main content field, the message body as an embed description, and optional webhook profile fields such as display name and avatar URL when configured.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Fterms\" rel=\"nofollow ugc\">Discord Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Fprivacy\" rel=\"nofollow ugc\">Discord Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Microsoft Teams Webhooks\u003C\u002Fh4>\n\u003Cp>When Microsoft Teams notifications are enabled in the Notify module, the plugin sends a webhook request to the Teams webhook URL configured by the site administrator. The transmitted payload contains the notification subject and message body.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen\u002Fservicesagreement\" rel=\"nofollow ugc\">Microsoft Services Agreement\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fprivacy\u002Fprivacystatement\" rel=\"nofollow ugc\">Microsoft Privacy Statement\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>SMTP services\u003C\u002Fh4>\n\u003Cp>When email notifications are enabled in the Notify module, the plugin connects directly to the SMTP server configured by the site administrator. The transmitted data includes the SMTP host and port, encryption\u002Fauthentication settings, sender and recipient addresses, the notification subject, the digest message body, and any SMTP credentials required by the configured provider. The admin UI includes built-in presets for Gmail, Office 365 \u002F Outlook, Mailgun, SendGrid, Amazon SES, Zoho Mail, Brevo, and Postmark, and the site administrator can also enter custom SMTP server details.\u003C\u002Fp>\n\u003Cp>Only the SMTP host actually selected (or manually entered) by the site administrator is contacted; no SMTP host is contacted by default. When a built-in preset is chosen, the plugin connects to the following hosts:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Gmail: \u003Ccode>smtp.gmail.com:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fterms\" rel=\"nofollow ugc\">Google Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">Google Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Office 365 \u002F Outlook: \u003Ccode>smtp.office365.com:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen\u002Fservicesagreement\" rel=\"nofollow ugc\">Microsoft Services Agreement\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fprivacy\u002Fprivacystatement\" rel=\"nofollow ugc\">Microsoft Privacy Statement\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Mailgun: \u003Ccode>smtp.mailgun.org:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fwww.mailgun.com\u002Flegal\u002Fterms\u002F\" rel=\"nofollow ugc\">Mailgun Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.mailgun.com\u002Flegal\u002Fprivacy-policy\u002F\" rel=\"nofollow ugc\">Mailgun Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>SendGrid: \u003Ccode>smtp.sendgrid.net:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fwww.twilio.com\u002Fen-us\u002Flegal\u002Ftos\" rel=\"nofollow ugc\">Twilio Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.twilio.com\u002Fen-us\u002Flegal\u002Fprivacy\" rel=\"nofollow ugc\">Twilio Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Amazon SES: \u003Ccode>email-smtp.us-east-1.amazonaws.com:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fservice-terms\u002F\" rel=\"nofollow ugc\">AWS Service Terms\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fprivacy\u002F\" rel=\"nofollow ugc\">AWS Privacy Notice\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Zoho Mail: \u003Ccode>smtp.zoho.com:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fwww.zoho.com\u002Fterms.html\" rel=\"nofollow ugc\">Zoho Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.zoho.com\u002Fprivacy.html\" rel=\"nofollow ugc\">Zoho Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Brevo: \u003Ccode>smtp-relay.brevo.com:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fwww.brevo.com\u002Flegal\u002Ftermsofuse\u002F\" rel=\"nofollow ugc\">Brevo Terms of Use\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.brevo.com\u002Flegal\u002Fprivacypolicy\u002F\" rel=\"nofollow ugc\">Brevo Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Postmark: \u003Ccode>smtp.postmarkapp.com:587\u003C\u002Fcode> — \u003Ca href=\"https:\u002F\u002Fpostmarkapp.com\u002Fterms-of-service\" rel=\"nofollow ugc\">Postmark Terms of Service\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpostmarkapp.com\u002Fprivacy-policy\" rel=\"nofollow ugc\">Postmark Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Copyright\u003C\u002Fh3>\n\u003Cp>Airygen SEO, Copyright 2025 Airygen.com\u003Cbr \u002F>\nAirygen SEO is distributed under the terms of the GNU General Public License.\u003C\u002Fp>\n\u003Cp>This program is free software: you can redistribute it and\u002For modify\u003Cbr \u002F>\nit under the terms of the GNU General Public License as published by\u003Cbr \u002F>\nthe Free Software Foundation, either version 3 of the License, or\u003Cbr \u002F>\n(at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful,\u003Cbr \u002F>\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\u003Cbr \u002F>\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\u003Cbr \u002F>\nGNU General Public License for more details.\u003C\u002Fp>\n","Build topic clusters, find internal linking opportunities, and generate AI-readable files (llms.txt, Markdown) for stronger SEO and GEO.",177,"2026-07-09T17:57:00.000Z","7.0.2","6.3","8.1",[25,26,27,28,29],"ai-seo","geo","llms-txt","seo","topic-cluster","https:\u002F\u002Fwww.airygen.com\u002Fen\u002Fairygen-seo\u002Fintroduction","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fairygen-seo.1.0.10.zip",null,"2026-07-22T17:31:50.256Z"]