{"id":396317,"date":"2026-11-03T19:14:00","date_gmt":"2026-11-03T19:14:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seolok\/"},"modified":"2026-11-03T19:40:59","modified_gmt":"2026-11-03T19:40:59","slug":"seolok","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/seolok\/","author":23596658,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.11","stable_tag":"0.6.11","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SEOLOK","header_author":"SEOLOK","header_description":"Applies approved SEOLOK actions (SEO title\/meta description, noindex, 301 redirects, fixing broken links, giving a page a new address), shows SEOLOK's jobs as a to-do list in the WordPress admin, can keep SEOLOK up to date about your site (opt-in), serves the link indexing key file and, only if you switch it on, shows the Boost notification button and the SEOLOK network box to visitors.","assets_banners_color":"f5f5fb","last_updated":"2026-11-03 19:40:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/seolok.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":50,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.6.11":{"tag":"0.6.11","author":"seolok","date":"2026-11-03 19:40:59","revision":3782523}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3782512,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3782512,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3782512,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3782512,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.6.11"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"SEOLOK \u2192 Overview: this site's to-do list (broken links, technical checks, today's jobs), the ticks for what is fine and the status table (live sync, search engines).","2":"Broken links: one approval fixes a dead address on every page that links to it, and each change can be undone.","3":"SEOLOK \u2192 Live sync: off by default; the switch, what waits to be sent, what was sent and an audit log.","4":"SEOLOK \u2192 Alerts: search engines blocked, with the one-click \"Allow search engines\", the checks, a timeline and the affected pages.","5":"Settings: the site ID and token from SEOLOK, and \"Show SEOLOK to visitors\" (off by default).","6":"SEOLOK \u2192 SEO titles: a suggested title and description applied on the page, with a search result preview, checks and undo."}},"plugin_section":[262246],"plugin_tags":[905,2353,14279,727,186],"plugin_category":[55],"plugin_contributors":[290548],"plugin_business_model":[],"class_list":["post-396317","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-905","plugin_tags-ai","plugin_tags-broken-links","plugin_tags-redirect","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-seolok","plugin_committers-seolok"],"banners":{"banner":"https:\/\/ps.w.org\/seolok\/assets\/banner-772x250.jpg?rev=3782512","banner_2x":"https:\/\/ps.w.org\/seolok\/assets\/banner-1544x500.jpg?rev=3782512","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/seolok\/assets\/icon-128x128.png?rev=3782512","icon_2x":"https:\/\/ps.w.org\/seolok\/assets\/icon-256x256.png?rev=3782512","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>SEOLOK is an AI-powered SEO platform. Its assistant Lokman turns your site's SEO problems into a short to-do list inside WordPress, and fixes them with one click.<\/strong><\/p>\n\n<p>Lokman, SEOLOK's AI SEO assistant, analyzes your site, finds what is costing you traffic (broken links, 404 pages, titles that get impressions but no clicks, settings that hide you from Google) and puts the most important jobs first. You approve a fix, the plugin applies it, and every change can be undone.<\/p>\n\n<p>Works with <strong>Yoast SEO<\/strong>, <strong>Rank Math<\/strong> or plain WordPress. No global CSS, no changes to your theme.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Broken link fixer<\/strong> \u2013 one approval fixes a dead address on every page that links to it: re-point the link to a new address or remove it (the link text stays). The previous content of the page is saved first, so the change can be undone. Pages built with Elementor or Beaver Builder are left alone.<\/li>\n<li><strong>404 monitor and 301 redirects<\/strong> \u2013 SEOLOK \u2192 404 addresses lists the addresses visitors asked for that answered \"not found\", how often and where visitors came from. Send any of them to another page with a 301, or ignore it. Redirect loops are refused.<\/li>\n<li><strong>SEO titles and meta descriptions<\/strong> \u2013 SEOLOK \u2192 SEO titles suggests a better title and description for pages that show up on Google but get few clicks, with a desktop and mobile search result preview and length \/ search-term checks. Approve, apply on the page and undo later. Applied values are also written into Rank Math's or Yoast's own fields.<\/li>\n<li><strong>Search visibility alerts<\/strong> \u2013 SEOLOK \u2192 Alerts checks what keeps a site out of Google: the \"Discourage search engines\" setting, robots.txt and a \"noindex\" tag on the home page and key pages. One-click \"Allow search engines\", a timeline of what changed and a daily automatic check. A forgotten staging setting is the classic way to disappear from Google; SEOLOK catches it.<\/li>\n<li><strong>Page address changes<\/strong> \u2013 gives a page the address you approve (for example a yearly page from \/guide-2025\/ to \/guide-2026\/) and sends the old address to the new one with a 301.<\/li>\n<li><strong>Old content finder<\/strong> \u2013 SEOLOK \u2192 Old posts lists posts not updated for 18 months, with old years in their title or text, and tells you what to check and update.<\/li>\n<li><strong>Site overview and Dashboard panel<\/strong> \u2013 broken links, technical checks, today's jobs and site health on one screen, most important first. With Google Search Console connected in SEOLOK, see visits from Google and average position over the last 28 days.<\/li>\n<li><strong>SEO insights<\/strong> \u2013 site analysis, content opportunities, keywords and Google rank, competitors, backlinks and reports from your SEOLOK account, right in wp-admin.<\/li>\n<li><strong>Noindex and 301s on demand<\/strong> \u2013 SEO title, meta description, noindex and 301 redirects approved in SEOLOK are served through WordPress filters; deactivating the plugin stops them, deleting it removes them.<\/li>\n<li><strong>Live sync (optional, off by default)<\/strong> \u2013 tells SEOLOK about pages you publish, update or delete and about search engines being switched off, so new pages are checked soon after they go live and a blocked site is flagged at once.<\/li>\n<li><strong>Secure by design<\/strong> \u2013 every request from SEOLOK is signed with your site token (HMAC-SHA256, 5-minute window). Nothing is sent until you connect the plugin.<\/li>\n<\/ul>\n\n<h4>Who it is for<\/h4>\n\n<ul>\n<li>Site owners who want to know exactly what to fix next for better Google rankings.<\/li>\n<li>Marketers and SEO specialists who want fixes applied without editing pages one by one.<\/li>\n<li>Agencies managing many WordPress sites who need undo, logs and a clear audit trail.<\/li>\n<\/ul>\n\n<h4>Optional features visitors see<\/h4>\n\n<p>Only if an administrator ticks \"Show SEOLOK to visitors\" in Settings \u2192 SEOLOK (off by default): during an active SEOLOK Boost campaign, a small opt-in button for browser notifications (permission is only requested after a click; the subscription is stored in SEOLOK), and, if the site joined the SEOLOK network, a \"recommended\" box with links to other member sites under posts (marked as recommendations, rel=\"nofollow sponsored\").<\/p>\n\n<h4>Free to use<\/h4>\n\n<p>The plugin needs a SEOLOK account (free to start). Everything the plugin does in WordPress works with any SEOLOK plan, including applying and undoing SEO titles and descriptions. SEOLOK's own service features (for example applying changes automatically from the SEOLOK panel) depend on your SEOLOK plan.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin is the WordPress side of the SEOLOK service (https:\/\/seolok.com, or the address you set under Settings \u2192 SEOLOK). It does nothing until you paste your site ID and token from a SEOLOK account into Settings \u2192 SEOLOK, and every request it makes is signed with that token. The service is provided by SEOLOK: terms of use https:\/\/seolok.com\/en\/legal\/terms, privacy policy https:\/\/seolok.com\/en\/legal\/privacy.<\/p>\n\n<p>What is sent, when and why:<\/p>\n\n<ul>\n<li>SEOLOK \u2192 WordPress (applying fixes): SEOLOK calls the plugin's REST endpoints <code>\/wp-json\/seolok\/v1\/ping<\/code> and <code>\/wp-json\/seolok\/v1\/apply<\/code> only after you approve a change in SEOLOK (or click \"Test connection\"). The plugin answers with the result and its own, WordPress' and the active SEO plugin's version.<\/li>\n<li>SEO titles: when an administrator opens SEOLOK \u2192 SEO titles, the plugin fetches this site's title and description suggestions (site ID and the admin screen's language are sent). A button sends its action and the suggestion's ID; \"Apply\" and \"Undo\" are written on the page by the plugin itself, which then sends SEOLOK the title and description it replaced (so they can be put back later).<\/li>\n<li>Alerts: the checks run inside WordPress and send nothing; \"Check the pages\" opens your own pages from your server, like a visitor would.<\/li>\n<li>Lokman page: when an administrator opens SEOLOK \u2192 Overview or clicks one of its buttons, the plugin fetches the page's content from SEOLOK and sends the button you clicked (for example \"remove this link on all pages\", with the addresses concerned). Sent: site ID, plugin version, whether live sync is on, the language of the admin screen and the action.<\/li>\n<li>SEOLOK \u2192 Old posts: the list of posts not updated for 18 months is built inside WordPress. When an administrator clicks \"Is it still current? Check\" for one post, the plugin sends that post's address and its last update date (signed); SEOLOK reads the public page itself and writes what to check. Opening the screen reads the results of those checks and how many checks are left today (cached two minutes). \"Current, mark it\" and \"Ignore\" stay in WordPress.<\/li>\n<li>\"SEOLOK: site status\" box on the WordPress Dashboard (administrators only): when the Dashboard opens it reads the number of SEO title suggestions per state from SEOLOK (the same signed request as the SEO titles screen, cached for two minutes); everything else in the box is what the plugin already keeps on your site.<\/li>\n<li>Live sync, off until an administrator switches it on (SEOLOK \u2192 Live sync, or the Live sync row on SEOLOK \u2192 Overview); the content types it tells about can be chosen there. While it is on the plugin sends about once an hour and when something happens a report with the WordPress and PHP version, the plugin's version, the site address and language, whether it is a multisite, whether the address is https, whether pretty permalinks are on, whether \"Discourage search engines\" is on, the name of the SEO and cache plugin in use, the number of published posts\/pages\/drafts, whether a WordPress core update and how many plugin\/theme updates are waiting, whether WP-Cron is disabled and how late it is, the 30 most-asked addresses of your site that answered \"not found\" (404: the path, how often and the first and last day; see \"404 addresses\" below); and events: the address, title and post type of a page you publish, update, take offline or delete (visitor-written content such as forum topics and replies is left out), a changed page address, search engines switched on or off, a changed permalink structure, and the names of plugins and themes you switch on or off. It never sends page content, visitors, users, comments or passwords. \"Turn off\" on the same row stops everything at once, removes the schedule and deletes what was waiting to be sent; it (and deactivating the plugin) sends one last message saying sync is off, with the site address.<\/li>\n<li>404 addresses (SEOLOK \u2192 404 addresses): when WordPress answers a visitor's request with \"not found\", the plugin adds one to that address's count, in your own database. Kept: the path without its query string, the number of hits, the first and last day and where visitors came from (a page of your own site by its path, another site by its domain only, e.g. google.com; nothing else of that address). Never an IP address, browser, search words or anything about the visitor; where visitors came from is not sent to SEOLOK. Logged-in staff, WordPress and scanner addresses (wp-admin, wp-login, .php, dot files) and files (scripts, styles, images, fonts) are not counted; at most 500 addresses are kept. The list leaves WordPress only inside the live sync report (above), while live sync is on. \"301 redirect\", \"Ignore\" and \"Undo\" on that screen stay in WordPress.<\/li>\n<li>Features visitors see, off until an administrator ticks \"Show SEOLOK to visitors\" in Settings \u2192 SEOLOK. Then the site asks SEOLOK at most once an hour (site ID only) whether a Boost campaign runs and whether the site is in the SEOLOK network. During a campaign, a visitor who clicks the notification button and allows notifications in the browser sends their browser's push subscription (an endpoint address and keys, no name or e-mail) with the site ID to SEOLOK. With the network on, a visitor's browser asks SEOLOK for recommendations, sending the site ID and the address of the post being read; no cookies are sent.<\/li>\n<li>Link indexing: if you use it in SEOLOK, the plugin stores your site's public key and serves it as \/.txt so search engines (IndexNow) can verify SEOLOK's notifications; the plugin itself sends nothing for this.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress go to Plugins \u2192 Add New, search for \"SEOLOK\", then click Install Now and Activate.<\/li>\n<li>Create a free account at https:\/\/seolok.com and add your site.<\/li>\n<li>Go to Settings \u2192 SEOLOK and paste the Site ID and token shown in SEOLOK.<\/li>\n<li>In SEOLOK click \"Test connection\". Your to-do list appears under SEOLOK \u2192 Overview.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20seolok%20account%3F\"><h3>Do I need a SEOLOK account?<\/h3><\/dt>\n<dd><p>Yes. The plugin is the WordPress side of SEOLOK: the jobs, the broken-link list and the fixes come from your site's analysis in SEOLOK. You paste the site ID and token from SEOLOK into Settings \u2192 SEOLOK.<\/p><\/dd>\n<dt id=\"is%20it%20free%3F\"><h3>Is it free?<\/h3><\/dt>\n<dd><p>Yes. The plugin is free and nothing in it is locked: every screen and button works with a free SEOLOK account, including applying SEO titles and descriptions on your pages. Paid SEOLOK plans add service features on seolok.com (for example automatic changes started from the SEOLOK panel and more reports); see https:\/\/seolok.com.<\/p><\/dd>\n<dt id=\"how%20do%20i%20fix%20broken%20links%20in%20wordpress%20with%20seolok%3F\"><h3>How do I fix broken links in WordPress with SEOLOK?<\/h3><\/dt>\n<dd><p>SEOLOK finds the dead links on your site. Under SEOLOK \u2192 Overview, approve a new address (or removal) once and the plugin fixes that link on every page that uses it. Each change can be undone.<\/p><\/dd>\n<dt id=\"does%20it%20find%20and%20redirect%20404%20errors%3F\"><h3>Does it find and redirect 404 errors?<\/h3><\/dt>\n<dd><p>Yes. SEOLOK \u2192 404 addresses counts the addresses that answered \"not found\" (no IP address or visitor data is kept). Send any of them to a working page with a 301 redirect in one click, or ignore it.<\/p><\/dd>\n<dt id=\"will%20it%20warn%20me%20if%20my%20site%20is%20hidden%20from%20google%3F\"><h3>Will it warn me if my site is hidden from Google?<\/h3><\/dt>\n<dd><p>Yes. SEOLOK \u2192 Alerts checks the \"Discourage search engines\" setting, robots.txt and noindex tags on your key pages every day, and offers a one-click \"Allow search engines\" fix.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does it work with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes. SEO titles and meta descriptions approved in SEOLOK are written in a way that works with Yoast SEO, Rank Math or plain WordPress, and are also saved into their own fields so their editor and score show them.<\/p><\/dd>\n<dt id=\"does%20it%20send%20anything%20without%20my%20permission%3F\"><h3>Does it send anything without my permission?<\/h3><\/dt>\n<dd><p>No. Nothing is sent until you connect the plugin with your site ID and token. Live sync and the features visitors see are off until an administrator switches them on, and both can be switched off again at any time (see \"External services\").<\/p><\/dd>\n<dt id=\"does%20it%20change%20my%20theme%20or%20slow%20down%20my%20site%3F\"><h3>Does it change my theme or slow down my site?<\/h3><\/dt>\n<dd><p>No. Everything the plugin adds uses its own \"seolok-\" class names and no global CSS. It loads no scripts on your pages unless an administrator turns on \"Show SEOLOK to visitors\". SEO titles, descriptions, noindex and 301s are served through WordPress filters; deactivating the plugin stops them, deleting it removes them.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20a%20change%3F\"><h3>Can I undo a change?<\/h3><\/dt>\n<dd><p>Yes. Fixed links, 301 redirects, SEO titles and page address changes can be undone from SEOLOK or from SEOLOK \u2192 Overview while the page is still as the plugin left it; the plugin keeps the previous content of the last three changes of a page.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>The plugin reports whether it runs on a multisite to SEOLOK; connect each site with its own site ID and token from SEOLOK.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.11<\/h4>\n\n<ul>\n<li>Security hardening: every admin screen is filtered through a fixed list of allowed HTML right before it is printed, and each setting has its own fixed sanitize callback.<\/li>\n<\/ul>\n\n<h4>0.6.10<\/h4>\n\n<ul>\n<li>SEO titles: the search term SEOLOK writes a title for is now used word for word in both the new title and the new description, near the start of the title, the way Rank Math and Yoast check the focus keyword. The checks under a suggestion now also say whether the term is at the start of the title and whether it is in the description.<\/li>\n<li>Backlinks: on plans without backlink tracking the screen says so instead of showing an empty list.<\/li>\n<\/ul>\n\n<h4>0.6.9<\/h4>\n\n<ul>\n<li>SEO titles can be applied on category, tag and other archive pages too; they are written into Rank Math's \/ Yoast's term fields and undone the same way. Pages of other post types are found by their path as well.<\/li>\n<li>\"The title was changed after this suggestion was written\" no longer fires on a title that only differs by the site name, a %variable% of the SEO plugin's template or an HTML entity.<\/li>\n<li>Bulk runs: the progress says how many were done and how many could not be; the summary lists every page that failed with its reason.<\/li>\n<\/ul>\n\n<h4>0.6.8<\/h4>\n\n<ul>\n<li>SEOLOK \u2192 Overview and SEOLOK \u2192 Alerts redesigned; key pages are checked automatically once a day.<\/li>\n<li>New read-only screens with SEOLOK's own data: Site analysis, Content opportunities, Keywords, Competitors, Backlinks and Reports.<\/li>\n<li>WordPress Dashboard: a full-width SEOLOK panel for administrators.<\/li>\n<li>404 addresses redrawn: where visitors came from, linking pages, SEOLOK's suggestion and the 301.<\/li>\n<\/ul>\n\n<h4>0.6.7<\/h4>\n\n<ul>\n<li>New screen SEOLOK \u2192 404 addresses: not-found addresses counted per path (no visitor data kept), with one-click 301 or ignore.<\/li>\n<\/ul>\n\n<h4>0.6.6<\/h4>\n\n<ul>\n<li>Live sync screen: \"Run scheduled tasks now\" button when WP-Cron is late or switched off.<\/li>\n<\/ul>\n\n<h4>0.6.5<\/h4>\n\n<ul>\n<li>SEO titles: bulk actions are queued and handled one at a time, with a progress bar and a Stop button.<\/li>\n<\/ul>\n\n<h4>0.6.4<\/h4>\n\n<ul>\n<li>Live sync: retries with growing waits, sending from admin visits when WP-Cron is late, clearer errors.<\/li>\n<\/ul>\n\n<h4>0.6.3<\/h4>\n\n<ul>\n<li>SEOLOK \u2192 Overview drawn the way WordPress draws its own screens: one to-do list, most important first.<\/li>\n<\/ul>\n\n<h4>0.6.2<\/h4>\n\n<ul>\n<li>Settings \u2192 SEOLOK no longer prints the saved token back.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>SEO titles: bulk approve \/ apply \/ reject; values also written into Rank Math's or Yoast's fields.<\/li>\n<li>Dashboard box \"SEOLOK: site status\" and new screen SEOLOK \u2192 Old posts.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>New SEOLOK menu: Overview, SEO titles, Alerts, Live sync, Settings. Optional live sync (off by default). \"Show SEOLOK to visitors\" setting (off by default). Deleting the plugin removes everything it stored.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Broken-link cleanup with undo, page address changes with 301, cache purge after address changes.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Link indexing (IndexNow key file).<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>\"Undo\" from SEOLOK for SEO titles and meta descriptions.<\/li>\n<\/ul>","raw_excerpt":"Lokman, SEOLOK's AI SEO assistant, finds what costs you Google traffic and fixes it in one click: broken links, 404s, SEO titles.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396317","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=396317"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/seolok"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396317"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396317"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396317"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396317"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396317"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}