The SEO Framework – Fast, Automated, Effortless.
The fastest and only feature-complete SEO plugin that follows the guidelines and rules imposed by WordPress and search engines. Preview The SEO Framework in WordPress Playground. Start using proven SEO tactics to improve your website’s ranking. Clean, dedicated, extensible, unrestricted, ad-free, and no strings attached. To top it off, this is the fastest full-featured SEO plugin, and it blends right into your WordPress website, without leaving you in the dark. It’s easy to get started. Activate this plugin, and your site’s instantly protected against prominent SEO attacks. The SEO Framework will also prefill all critical meta tags for you. A real time-saver. Ingenious. Migrate | Setup | Improve | Extensions | API | Support | Privacy We poured over 27 000 hours of love into this plugin. Here are the results: It is brilliant. The SEO Framework is an expert system for SEO. It is the only solution that can intelligently generate critical SEO meta tags in any language by reading your WordPress environment. This automation saves you a considerable amount of time that could be used to write more content or focus on other tasks. It also removes the need for advanced SEO knowledge. It comes preconfigured. With The SEO Framework, we provide an excellent starting point for your website by rationally optimizing all your pages. Naturally, you can also tweak it however you like. If you’re not an SEO expert, learn what you may wish to optimize in our Setup guide. It helps you optimize your metadata. We made the only SEO plugin that follows Google’s webmaster guidelines to the letter. It took years of research and tweaking to translate this well inside your WordPress interface. Finally, you can freely optimize your pages without having to worry about making critical mistakes. It creates a beautiful overview. On your post overview pages, you’ll find color-coded guidelines. They suggest how to improve your pages as you hover over them with your mouse cursor. For example, when your titles are unbranded or when WordPress blocks indexing. Instinctively, touch-and keyboard navigation is also supported. It includes exceptional support. We don’t outsource our support. We’re here for you. Feel free to drop by our support channels at any time to ask a question. More than 5000 inquiries have been answered personally in the past nine years, typically within 72 hours. It leaves no room for errors. We focus on the quality of features you need over the quantity on features you don’t. This trait makes this plugin unique, faster, more accurate, nearly bug-free, and more sustainable. The added benefit is that your site is unlikely to get penalized by search engines. We won’t steer you into writing unnatural content or allow you to trick search engines. It remains genuine and pure. We built The SEO Framework for small to large corporations and enterprises. The interface is entirely accessible and seamlessly integrates within your dashboard. Therefore, interacting with this plugin feels natural. It might feel dull, but your WordPress dashboard shouldn’t be a billboard for our branding. We won’t ever change this. It improves search presence. The SEO Framework ranks your website distinctively by enabling breadcrumbs for Google Search via structured data. It also automatically generates titles and descriptions according to Google’s guidelines and quickly helps search engines find the website’s latest changes via the built-in optimized sitemap. It makes social sharing easy. The SEO Framework automatically supports and allows you to further tailor the Open Graph, Facebook, and Twitter Cards protocols. It helps your posts stand out when they’re shared on various social networks, including Pinterest, Discord, and WhatsApp. It feels more than accessible. We handpicked our color scheme so that people with any medically recognized color-vision deficiency can distinguish the guidelines set by search engines. We also implemented full keyboard-navigation and screen-reader support. It protects you from mistakes. The SEO Framework steers you from making significant and common SEO mistakes. It leaves little room for you to mess up because the plugin already does everything SEO for you. For example, it automatically prevents duplicated content mistakes by enforcing strict canonical rules. It follows best-practices and beyond. The biggest problems with WordPress plugins are security and compatibility. As part-time security researchers, we focus on making this plugin impenetrable. The SEO Framework also uses WordPress’s API whenever possible, making this plugin integrate neatly with every other plugin written with that in mind. It has developers at heart. We encourage other developers to enhance and add functionality to this plugin. We’ve done so ourselves, already, with our extensions. Check out our API, and feel free to contribute! It respects your privacy. The SEO Framework sends us no information and does not create cookies. Learn more from our strictly adhered-to privacy policy. Getting started Used another SEO plugin? Easily migrate your metadata. Need a helping hand getting started? Read our quick setup guide. Want to improve your pages? Learn how to optimize your metadata. Do more with extensions For additional functionality, check out our free companion plugin Extension Manager. It provides numerous free and paid extensions, such as: Focus guides you through the process of writing targeted content that ranks with focus keywords and synonyms. Articles enhances your published posts by automatically adding important Structured Data. Transport migrates and transforms metadata from Rank Math, Yoast SEO, and SEOPress to this plugin. Honeypot catches comment spammers through five lightweight yet powerful ways. Cord helps you connect your website to Google Analytics and Meta Pixel. Local lets you set up important local business information for search engines to consume. AMP binds The SEO Framework to the AMP plugin for AMP supported articles and pages. Monitor keeps track of your website’s SEO optimizations and statistics. Incognito hides all development-comments from The SEO Framework. Origin redirects attachment-page visitors back to the parent post. Title Fix makes sure your title output is as configured. Even if your theme is doing it wrong. Visit our extensions overview page for more information. Unbranded, free and for the professionals The SEO Framework is a uniquely white label plugin that blends seamlessly into your WordPress dashboard. This means that we don’t even put the name “The SEO Framework” anywhere within your WordPress interface. No ads, no nags. Nobody has to know about the tools you’ve used to create your website. Note that we output standardized development-comments distinguishing the plugin output in source code. You can remove these with our free Incognito extension. Behind the screens The SEO Framework works on many things without notifying you, because the best software is fast, nimble, responsive, and should save you precious time. Here are a few things it does behind the screens. It prevents canonical errors for categories, pages, subdomains, and WordPress Multisite domain mapping. It stops SEO attacks that are caused by pagination exploits in WordPress by telling the search engine to look at the existing last page instead. It discourages 404 pages and empty categories from being indexed, even when they don’t send a 404 response. It automatically notifies Google and the Bing network on website updates when sitemaps are enabled. It discourages search engines from indexing feeds and the sitemap. This doesn’t mean they won’t use them; only, they won’t show them in their search results. It directs search engines from the comment pages back to the post storing those comments. Compatibility and accessibility The SEO Framework supports: Internationalization through WordPress.org. You can contribute here. Unicode (UTF-8) character recognition and rendering, including Emoji and CJKV (Chinese, Japanese, Korean, Vietnamese). Right to Left (RTL) languages (Arabic, Hebrew, Farsi, etc.), through its interface and metatag generation. Complete color-vision deficiency accessibility thanks to a carefully picked color scheme. Full keyboard navigation, so that you can inspect tooltips quickly without ever having to reach for your mouse. Full screen-reader accessibility via field anchors, ARIA labels, and title attributes. WordPress Multisite setups, this plugin is in fact built upon one. Detection and output of robots.txt and sitemap.xml files. Full integration with WordPress Core sitemaps. Primary term (category) selection to influence breadcrumbs and links. Output of structured data via Schema.org JSON-LD scripts. Altering oEmbed for improved sharing on Discord. Detection of various other SEO plugins to help you switch graciously. Translation plugins like WPML, Polylang, WPGlobus, and MultilingualPress. E-commerce plugins like WooCommerce and Easy Digital Downloads. Blocking of SEO analysis and AI crawlers for Moz, OpenAI, Apple, and others, via robots.txt. Forum plugins like bbPress and wpForo. Editing posts and terms via WordPress’s native bulk-and-quick-edit interfaces. Headless mode via a single constant definition.
Top keywords
- seo33×2.30%
- wordpress17×1.18%
- framework16×1.11%
- seo framework16×1.11%
- search12×0.84%
- pages9×0.63%
- website9×0.63%
- engines8×0.56%
- search engines8×0.56%
- automatically5×0.35%
- extensions5×0.35%
- focus5×0.35%
Seotune Search Insights
Seotune Search Insights connects to Google Search Console, stores search analytics in your WordPress database, and provides an admin dashboard with KPIs, reports, and actionable SEO insights. For setup help, see the Documentation. Without external accounts: The plugin installs and activates like any other plugin, but reports and sync require a Google Cloud OAuth client and a Google account with access to a Search Console property for your site. Until you complete connection in Seotune Search Insights → Settings, no Search Console data is fetched and dashboards stay empty. Features Connection: OAuth connection to GSC; automatic detection of the property matching your site domain (no manual property picker). Dashboard: Overview with clicks, impressions, CTR, position; charts; top queries and pages; recent alerts. Keywords: Filterable, sortable report with export to CSV. Pages: Same for page URLs with export to CSV. Opportunities: Two reports — high impressions / low CTR, and keywords in positions 8–20 (quick wins); CSV export. Cannibalization: Queries with multiple pages competing; per-query URL list. Normalized by URL (fragment stripped). Decay: Pages with declining organic performance vs the previous period; filters, probable-cause hints, CSV export. Content Refresh: Pages prioritized for refresh (urgency levels) with reasons and metrics; CSV export. Internal Links: Internal linking opportunities from WordPress content and GSC signals; filters; CSV export. Question Queries: Question-style search queries with difficulty signals and metrics (from GSC data). Alerts: Automatic detection of position drop, CTR drop, traffic drop, impressions spike (runs after daily sync); list on the Dashboard and CSV export. Export: CSV export for queries, pages, opportunities, alerts, decay, content refresh, and internal linking (with filters where applicable; UTF-8 BOM for Excel). Settings: Google OAuth credentials, connect/disconnect, Sync & Import (auto-import last 28 days on first connection, sync now 3/7 days, import range in background), advanced import tuning, and import diagnostics. Data is synced for the last 3 days on manual run or via a daily cron. After the first successful connection to Google Search Console, Seotune Search Insights automatically imports the last 28 days so that the Dashboard and reports are not empty; you can then use Sync & Import to extend or restart the import for a larger range. After the first import, data is updated automatically every day via cron. Historical data can be imported in background batches (by default 7 days per batch and 1000 rows per DB write) that stay within sensible Google Search Console usage and are tuned for performance; you can adjust these values from Settings → Sync & Import if needed. The Sync & Import card also includes an Import diagnostics panel that shows recent import activity, cron status, and common issues (e.g. cron not running, API quota, PHP/DB limits) without exposing sensitive query data. Custom database tables use a plugin-specific prefix (in addition to your WordPress table prefix). Privacy This plugin does not send your site’s front-end visitor traffic to Seotune Search Insights or to a proprietary Seotune API. It does not add visitor tracking, advertising pixels, or marketing analytics to the public site. Declared service data (administrators) Google OAuth 2.0 & Search Console API (required for core features): After you add OAuth credentials and connect, the server communicates with Google to authorize and to read Search Console data you are allowed to access. Tokens and imported metrics are stored in your WordPress database. Google’s terms and privacy policies apply to Google accounts and APIs: Google Privacy Policy, Google APIs Terms of Service. Admin UI typography: The dashboard uses the operating system’s UI fonts (system font stack in local CSS) in the WordPress admin only; it does not load third-party font stylesheets for Seotune Search Insights screens. Responsibility: Site owners should inform end users where required by law (e.g. privacy policy, cookie/consent flows) that Search Console-related data is processed when administrators connect Google services. Technical map (endpoints, when requests run): documentation/network-and-privacy.txt. Narrative guide: documentation/index.html (Privacy & third-party services). Troubleshooting Import diagnostics panel In Seotune Search Insights → Settings → Sync & Import you will find an Import diagnostics box: A status badge (OK / WARNING / ERROR) with a short message and a hint. A table of the latest import jobs (manual sync, historical batches, internal links index), showing time, range, rows, duration, and result. A Copy log for support button that copies a plain-text summary (timestamps, job types, technical messages) which you can paste into a support ticket. No search queries, URLs, or user-identifiable data are included. The panel is read-only and is meant to help you and support quickly understand what is happening on your server. Common messages and what to do “Cron may not be running regularly” / “No plugin cron jobs have run in the last few hours” This usually means WordPress cron is disabled or not being triggered. Check wp-config.php for DISABLE_WP_CRON. If it is set to true, configure a real server cron job that calls wp-cron.php every few minutes, or ask your hosting provider to set this up. “Historical import is marked as running, but no backfill batches have completed yet” The backfill state is “running” but no historical batches are logged. This is typically another sign that cron is not firing. Verify the cron configuration as above, then wait a few minutes and refresh the page. “Historical import seems stuck (no progress for a while)” If the progress bar stays at 0% or does not move for a long time, use Stop / Reset import in the Sync & Import card, then start a new import with smaller batches (lower “Days per batch”). Also make sure cron is running. Search Console quota / rate limit errors in the log If recent log entries mention quota or rate-limit errors from the Google Search Console API, try lowering Days per batch for the historical import, and consider running imports at quieter times of day. If the issue persists, you may need to wait for quotas to reset or use a dedicated Google Cloud project. PHP execution time, memory, or database errors in the log Messages mentioning maximum execution time, memory limits, or database connection issues indicate that the server limits are too strict for large imports. Try reducing Days per batch and, if needed, ask your hosting provider to increase PHP memory_limit and max_execution_time, or to relax database limits for background jobs. Hosting requirements (for smooth import) Seotune Search Insights’ historical import runs in the background via WordPress cron: each cron run processes one batch (a few days of data), then schedules the next. For the import to complete without blocking or stalling, the hosting environment must meet the following. Default settings (7 days per batch, 60 seconds delay between batches, 1000 rows per DB batch) are chosen to work on most hosting. On servers with more resources you can increase Days per batch and reduce Delay between batches in Seotune Search Insights → Settings → Sync & Import for a faster import. Minimum (plugin runs, import may be slow or need tuning) PHP: 8.0 or higher (required by the plugin). PHP memory_limit: at least 128 MB. Lower values can cause out-of-memory errors during import. PHP max_execution_time: at least 60 seconds for each cron run (single batch). Many shared hosts use 30s; that can be enough for small batches but may cause timeouts on heavier batches. WordPress cron: Must run regularly (at least every 5–10 minutes). If DISABLE_WP_CRON is set to true in wp-config.php, a system cron job must call wp-cron.php (or trigger WordPress cron) every few minutes; otherwise the import never advances. MySQL: Standard WordPress requirements; no extra extensions needed. The plugin writes data in batches (configurable: 100–2000 rows per batch). Recommended (smooth, reliable import) PHP memory_limit: 256 MB or more. PHP max_execution_time: 120–300 seconds for cron/CLI so each batch has enough time to fetch data from Google and write to the database. Cron: Triggered every 1–2 minutes (e.g. system cron every 2 minutes) so batches run frequently and the import completes in a reasonable time. Network: Outbound HTTPS to Google APIs (Search Console) without long timeouts or blocks. Restrictive shared hosting (e.g. some Aruba, or low-resource plans) On hosting with strict limits (low memory, 30s execution time, or cron that rarely runs), the import can block, time out, or appear stuck. To improve reliability: Cron: Ensure WordPress cron actually runs. If the host uses DISABLE_WP_CRON, set up a real cron job (e.g. */5 * * * * to hit https://yoursite.com/wp-cron.php?doing_wp_cron or run wp cron event run --due-now via WP-CLI every few minutes). Ask the host (e.g. Aruba) how to add a cron job and what the URL/command should be. Days per batch: In Seotune Search Insights → Settings → Sync & Import, set Days per batch to 3–5 (or even 1 for very slow hosts). Smaller batches reduce memory and execution time per run. Rows per DB batch: In the same section, set Rows per DB batch to 500 (or 100 if you still see timeouts or DB errors). Lower values reduce load per request. PHP limits: Ask the hosting provider to raise memory_limit to at least 256 MB and max_execution_time to at least 120 seconds for PHP (or for the cron/CLI context, if they differentiate). If the import still fails or gets stuck, use Import diagnostics in Settings (and Copy log for support) to see whether the cause is cron not running, timeouts, memory, or API quota; then adjust the above or contact the host with the requested limits. Development Backend (Composer) From the plugin root: composer install. Keep the vendor/ directory when deploying (plugin requires it for the Google API client). Autoload: composer.json uses a classmap for includes/ (no PSR-4 path mismatch warnings). monolog/monolog is required by google/apiclient; it stays in composer.json as ^2.9 to pin Monolog 2.x and remain compatible with PHP 8.0 (Monolog 3 needs PHP 8.1+). Frontend (React) From admin/react-app: npm install then npm run build. Build outputs a single admin/assets/js/admin-app.js (IIFE bundle for classic wp_enqueue_script, no import.meta) plus admin/assets/js/admin-app.css (extracted CSS). Deploy both files; without the built JS, a placeholder script is loaded. WordPress.org / source access: The default release zip includes admin/react-app/ (Vite/React sources, package-lock.json; node_modules excluded — run npm ci inside admin/react-app to rebuild). Compiled admin-app.js + admin-app.css are also present. Optional: add a public git mirror URL below for convenience. Details: documentation/source-and-build.txt. Public source code repository: (Optional — add GitHub/GitLab URL if you publish a mirror; not required for review because sources ship in the plugin package.) Release zip(s) (from plugin root, after composer / npm as needed) Version bump & SVN: see scripts/README-release.txt (Stable tag, version constant in seotune-search-insights.php aligned with the plugin header, changelog, Subversion tag folder). npm run release — creates a zip in dist/ (includes admin/react-app sources; excludes node_modules and documentation/). npm run release:src — creates only the *-with-sources.zip variant with the same contents (alias for workflows that expect the filename). npm run release:all — writes both filenames; the archives are identical (duplicate name for compatibility). Translations (i18n) Text domain: seotune-search-insights. PHP uses load_plugin_textdomain with languages/. Admin UI strings use @wordpress/i18n (__(), sprintf, _n) in JSX; wp_set_script_translations() loads Jed JSON for the built script. Regenerate templates (from plugin root, WP-CLI): wp i18n make-pot . languages/seotune-search-insights.pot –slug=seotune-search-insights –domain=seotune-search-insights –exclude=vendor,admin/react-app/node_modules,dist,admin/assets,documentation,scripts Update languages/seotune-search-insights-en_US.po with wp i18n update-po languages/seotune-search-insights.pot languages/seotune-search-insights-en_US.po. Build JS JSON (maps all React sources to the single bundle): wp i18n make-json languages/seotune-search-insights-en_US.po –use-map=languages/wp-i18n-map.json –domain=seotune-search-insights –extensions=jsx,js Commit languages/seotune-search-insights.pot, languages/seotune-search-insights-en_US.po, languages/wp-i18n-map.json, and languages/seotune-search-insights-*-*.json with the plugin.