| 开发者 | seonix |
|---|---|
| 更新时间 | 2026年6月25日 23:30 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
llms.txt support.Seonix → Settings and paste it into your Seonix project's WordPress channel. No WordPress passwords either way.
seonix folder to /wp-content/plugins/ (or install the .zip through Plugins > Add New > Upload Plugin)Seonix > Settings, copy the API key and paste it into the Seonix dashboard (Channels > WordPress)The easiest way is the Seonix menu in your WordPress admin: click "Connect to Seonix", choose your project in the Seonix app, and the connection completes automatically — no key to copy. You can also connect manually by pasting the API key (see below) into the Seonix dashboard.
On activation, the plugin generates a unique API key (sx_ followed by 64 hex characters). This key authenticates every request between Seonix and your site. No WordPress passwords or application passwords are involved. The same key authenticates outbound calls from the plugin back to the Seonix backend. One-click connect exchanges this key for you behind the scenes; with manual connect you paste it once into the Seonix dashboard.
The plugin writes the standard SEO meta keys that every major WordPress SEO plugin reads (meta title, meta description, focus keyword). Whichever SEO plugin you have active will pick up the values without extra setup.
Yes. Go to Seonix > Settings and click "Regenerate Key". You will need to update the key in your Seonix project afterward (or simply use "Connect to Seonix" again).
See the "External Service" section above. Briefly: only basic metadata (title, URL, slug, status, modification time) about your pages, posts, and WooCommerce products. Post content body is never sent. No data is sent until you connect the plugin to a Seonix project.
Currently, each WordPress site connects to one Seonix project at a time.
The API key and settings are preserved. Reactivate the plugin to resume publishing.
Go to Seonix > Settings and click "Regenerate Key". The previous key becomes invalid, so the Seonix backend can no longer call your site or receive sync data. To remove all stored options and the local task data entirely, delete the plugin from the Plugins screen.
POST /connect/exchange and POST /tasks under both the seonix/v1 and legacy content-engine/v1 namespaces. All output is escaped, all input is sanitized, and every state-changing admin action stays capability- and nonce-checked.Seonix_Fix_Term_Meta_Description::engine_read) and the Yoast title-template helper (Seonix_REST_API::get_yoast_title_template) now go strictly through Yoast's public class APIs (WPSEO_Taxonomy_Meta::get_term_meta, WPSEO_Options::get). If those classes are unreachable, we fail cleanly (empty string / null / 412 Precondition Failed) instead of falling back to get_option('wpseo_*') against the underlying option array.libxml_disable_entity_loader() calls from the HTML-to-blocks helper. The remaining LIBXML_NONET flag plus libxml2 2.9+ defaults provide the same XXE protection on the WP-supported PHP range (7.4+).llms.txt and llms-full.txt are now served entirely from PHP via rewrite rules — the plugin no longer writes any static files to the WordPress root. ETag/Last-Modified/304 caching keeps the responses cheap, and the dynamic body is always in sync with current published content. Output is escaped on emit.wp-content/uploads/seonix/{key}.txt and is written via the WordPress Filesystem API (WP_Filesystem). The file_url returned by the setup endpoint points at the new location and is accepted by IndexNow's keyLocation parameter.WPSEO_Options::get / WPSEO_Options::set for the pagination noindex-subpages-wpseo flag, and WPSEO_Taxonomy_Meta::set_value for taxonomy term descriptions. No direct update_option( 'wpseo_*', ... ) calls remain anywhere in the plugin; both fix methods refuse to run unless Yoast SEO is active.assets/icon-256x256.png → assets/seonix-logo.png and assets/icon-64x64.png → assets/seonix-logo-small.png so they don't clash with WordPress.org plugin-directory catalog asset names. The directory banners/icons live in SVN /assets/, not in the plugin zip.https://seonix.ai/terms-of-use and https://seonix.ai/privacy-policy). The previous /terms and /privacy paths returned 404.GET /wp-json/seonix/v1/verify, the plugin now persists engine_url, project_id, and project_name from the request's query string. Outbound sync (/api/plugin/sync, /api/plugin/content-event) and the Settings → Seonix UI always reflect the backend that completed the last successful verify — operators no longer need to edit options by hand when a site is moved between Seonix projects or between dev/prod backends. Older backends that don't pass the new params are still accepted (empty values are skipped).Seonix_Sync::is_safe_url is now public static so the REST controller reuses the same SSRF guard that protects outbound sync.DROP TABLE now passes the table name through $wpdb->prepare( '...%i', $table ) so PluginCheck's UnescapedDBParameter sniff is satisfied. Tested up to WordPress 7.0; minimum bumped to WordPress 6.2 (required for the %i SQL identifier placeholder)./languages/seonix.pot scaffold shipped for translators; translations for WordPress.org-hosted plugins are auto-loaded by core since WP 4.6, so no explicit load_plugin_textdomain() call is needed.@unlink() replaced with WordPress's wp_delete_file(); seonix_migrated_from_ce option and {$wpdb->prefix}seonix_seo_fix_history table are now dropped on uninstall.ce-admin to seonix-admin for consistency. No behaviour change.featured_image_alt from Seonix now persists as the WordPress alt-text attribute on the imported featured-image attachment (_wp_attachment_image_alt post meta). Previously the field was silently dropped.GET /posts list no longer does per-row get_the_terms() lookups or a global wp_count_posts(); /llms-status no longer walks wp_count_posts() x 2; /cache/purge returns 204 No Content; /seo-fix/dry-run skips sprintf of the now-unused diff string per fix method.pagination_noindex fix method. Flips the SEO plugin's site-wide noindex-subpages-wpseo option to true (so paginated archive subpages render <meta name="robots" content="noindex, follow">) and force-rebuilds term indexables by nulling is_robots_noindex on term rows in the indexables table. Without this, the live /category/foo/page/2/ HTML keeps rendering index, follow until the SEO plugin's cron rebuild catches up. All other wpseo_titles keys are preserved unchanged.term_meta_description now syncs to the indexables table so the live archive page actually renders the new description on installs that use indexables (v14+).term_meta_description for taxonomy archive pages (category / tag / custom taxonomies). The plugin resolves the archive URL to a term and writes the description through the active SEO plugin's term-meta layer. Fixes the gap where meta_description_missing issues on /category/... and /tag/... URLs survived auto-fix runs because the legacy meta_description method only handled posts.mode parameter. Default mode=rewrite is unchanged. New mode=remove_link strips every <a href="$old_url">TEXT</a> (absolute and matching relative href) down to its inner TEXT — used as the fallback when the AI matcher can't find a confident redirect target. Deep-mode rewrites apply to the new mode too.GET /seonix/v1/posts and /seonix/v1/posts/{id}) now includes the active SEO plugin's per-post-type title template (e.g. %%title%% %%sep%% %%sitename%%) and the site blogname. The Seonix backend uses these to size the AI title-suggester's character budget so a meta title plus the appended sitename suffix stays under the rendered <title> length limit. Returns null when no compatible SEO plugin is installed.key_takeaways[] and key_takeaways_title in the publish payload and renders them as a styled <aside class="seonix-key-takeaways"> block above the article body. Bundled stylesheet (assets/seonix-content.css) is enqueued on singular post pages so the block looks consistent across themes.accent_color (canonical 7-character hex). Set as --seonix-accent on the <aside> so the callout matches the project palette out of the box. Themes can override --seonix-accent globally at :root if they prefer their own colour._seonix_key_takeaways / _seonix_key_takeaways_title / _seonix_brand_accent post meta for downstream consumers (themes, AMP, llms.txt)./seonix/v1/seo-fix/* (capabilities, dry-run, apply, rollback, history) backed by per-method classes (SSL mixed content, redirect, broken link, meta title, meta description, image alt).llms.txt full-content variant alongside the index, with ETag and Last-Modified for efficient AI-crawler revalidation.X-Seonix-Key preferred, X-CE-Key kept as legacy alias, Authorization: Bearer continues to work.sx_<64 hex>; legacy ce_<64 hex> keys remain accepted.meta_input during wp_insert_post so the active SEO plugin picks up the values immediately without an extra save.