{"id":303622,"date":"2026-04-30T08:59:41","date_gmt":"2026-04-30T08:59:41","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seoyen-seo-platform\/"},"modified":"2026-08-31T07:07:34","modified_gmt":"2026-08-31T07:07:34","slug":"seoyen","status":"publish","type":"plugin","link":"https:\/\/es-ec.wordpress.org\/plugins\/seoyen\/","author":17765454,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.2","stable_tag":"2.2.2","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SEOYEN SEO Platform","header_author":"SEOYEN","header_description":"One-click WordPress integration for the SEOYEN SEO Platform \u2014 publish AI content, apply internal links, manage 301 redirects, auto-fix audit issues, and more.","assets_banners_color":"","last_updated":"2026-08-31 07:07:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/seoyen.com\/","rating":0,"author_block_rating":0,"active_installs":30,"downloads":521,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.13":{"tag":"1.0.13","author":"tevfikgulep","date":"2026-06-11 09:46:59","revision":3568605},"1.0.13.1":{"tag":"1.0.13.1","author":"tevfikgulep","date":"2026-06-11 20:02:31","revision":3569319},"1.1.0":{"tag":"1.1.0","author":"tevfikgulep","date":"2026-06-14 15:45:22","revision":3572052},"2.2.2":{"tag":"2.2.2","author":"tevfikgulep","date":"2026-08-31 07:07:34","revision":3673527}},"upgrade_notice":{"2.2.2":"<p>&quot;Kopya H1&quot; ve &quot;H1 \u00e7ok uzun&quot; d\u00fczeltmeleri art\u0131k uygulanabiliyor: i\u00e7erikte de\u011fi\u015ftirilecek bir  yoksa eklenti sessizce vazge\u00e7miyor, panelde &quot;Yaz\u0131 ba\u015fl\u0131\u011f\u0131n\u0131 da g\u00fcncelle&quot; onay\u0131 istiyor. Onay verilmeden hi\u00e7bir \u015fey de\u011fi\u015fmez; kal\u0131c\u0131 ba\u011flant\u0131n\u0131z (slug) her h\u00e2l\u00fck\u00e2rda ayn\u0131 kal\u0131r. \u00d6nerilen g\u00fcncelleme.<\/p>","2.2.1":"<p>Meta a\u00e7\u0131klama d\u00fczeltmeleri art\u0131k sayfada ger\u00e7ekten g\u00f6r\u00fcn\u00fcyor: eklenti, a\u00e7\u0131k\u00e7a kaydetti\u011finiz de\u011fere sahipse teman\u0131n bast\u0131\u011f\u0131 etiketi susmak yerine de\u011fi\u015ftiriyor (a\u00e7\u0131klama, Open Graph a\u00e7\u0131klamas\u0131\/t\u00fcr\u00fc, Twitter kart\u0131). T\u00fcretilmi\u015f yedekler temaya dokunmaz; ba\u015fka bir SEO eklentisi kuruluysa davran\u0131\u015f de\u011fi\u015fmez. \u00d6nerilen g\u00fcncelleme.<\/p>","2.2.0":"<p>T\u00fcrk\u00e7e y\u00f6netici ekran\u0131nda \u0130ngilizce kalan on bir etiket \u00e7evrildi: ara\u00e7 adlar\u0131, \u00f6nem dereceleri ve makale kart\u0131 etiketleri art\u0131k tek dilde. Yaln\u0131z g\u00f6r\u00fcnen metinler de\u011fi\u015fti; ayarlar\u0131n\u0131za ve verilerinize dokunulmad\u0131. \u00d6nerilen g\u00fcncelleme.<\/p>","2.1.3":"<p>&quot;Tek T\u0131kla D\u00fczelt&quot; art\u0131k sorunun t\u00fcm uygun sayfalar\u0131n\u0131 kaps\u0131yor ve t\u0131klamadan \u00f6nce ka\u00e7 sayfa i\u015flenece\u011fini, tahmini kredi maliyetini ve kalan bakiyenizi s\u00f6yl\u00fcyor. Onaylamadan kredi harcanmaz. \u00d6nerilen g\u00fcncelleme.<\/p>","2.1.2":"<p>D\u00fczeltti\u011finiz denetim sorunlar\u0131 art\u0131k aktif listeden d\u00fc\u015f\u00fcyor ve varsay\u0131lan olarak kapal\u0131 &quot;Uygulanm\u0131\u015f d\u00fczeltmeler&quot; b\u00f6l\u00fcm\u00fcnde toplan\u0131yor. Sorun yeniden ortaya \u00e7\u0131karsa kendili\u011finden aktif listeye d\u00f6ner. \u00d6nerilen g\u00fcncelleme.<\/p>","2.1.0":"<p>WooCommerce i\u00e7in e-ticaret SEO katman\u0131: \u00fcr\u00fcn ve kategori katalo\u011fu, g\u00fcn i\u00e7i stok-fiyat takibi, \u00fc\u00e7 yeni tek-t\u0131k d\u00fczeltme, sekiz denetim kontrol\u00fc. Kald\u0131rma bildirimi, h\u0131z s\u0131n\u0131r\u0131 ve otopilotun sessiz yay\u0131n\u0131 da d\u00fczeltildi. \u00d6nerilen g\u00fcncelleme.<\/p>","2.0.8":"<p>&quot;\u0130\u00e7erik&quot; men\u00fcs\u00fc &quot;\u00d6neriler&quot; oldu ve men\u00fc kalemleri i\u015fe g\u00f6re k\u00fcmelendi. Eski adres yenisine y\u00f6nlendirilir, yer imleri k\u0131r\u0131lmaz. \u0130\u00e7erik Botu de\u011fi\u015fmedi. Ayr\u0131ca SEOYEN veri sayfalar\u0131 b\u00f6l\u00fcm ve sekmelere ayr\u0131ld\u0131; eklenti panelden eski kalsa bile sayfa eksiksiz g\u00f6r\u00fcn\u00fcr.<\/p>","1.1.0":"<p>Sunucu-s\u00fcr\u00fcml\u00fc companion \u00e7er\u00e7evesi: AI G\u00f6r\u00fcn\u00fcrl\u00fck + Arama Performans\u0131 sekmeleri eklendi, panele yeni \u00f6zellik geldi\u011finde art\u0131k eklenti g\u00fcncellemesi gerekmiyor. Grafikler paketlenmi\u015f Chart.js ile \u00e7izilir. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.13":"<p>AI bot ziyaret kayd\u0131 + IndexNow + Google Instant Indexing + kar\u015f\u0131lama ekran\u0131 + robots.txt AI bot toggle&#039;lar\u0131. Panel ba\u011flant\u0131s\u0131n\u0131 k\u0131ran \u00e7ift-header hatas\u0131 d\u00fczeltildi \u2014 t\u00fcm kullan\u0131c\u0131lar i\u00e7in \u00f6nerilen g\u00fcncelleme.<\/p>","1.0.8":"<p>Autofix 57 check&#039;e \u00e7\u0131kar\u0131ld\u0131, 12 yeni t\u00fcr (twitter:card t\u00fcr\u00fc, HowTo\/Video\/Review schema, html lang, Claude\/Perplexity allow, d\u00fc\u015f\u00fck kelime say\u0131s\u0131, llms-full.txt). Schema builder + frontend geni\u015flemesi. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.7":"<p>Autofix 45 check&#039;e \u00e7\u0131kar\u0131ld\u0131, Schema builder, redirect chain resolver, AI bot y\u00f6netimi. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.6":"<p>D\u00fczeltme callback&#039;i + URL sat\u0131r\u0131 UI g\u00fcncelleme + AI hata mesaj\u0131 iyile\u015ftirme. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.5":"<p>AI tabanl\u0131 d\u00fczeltme sistemi eklendi. Tek T\u0131kla D\u00fczelt i\u00e7in Bireysel veya \u00fcst\u00fc paket ve AI kredisi gereklidir. Fallback mant\u0131\u011f\u0131 kald\u0131r\u0131ld\u0131 \u2014 yaln\u0131zca yapay zeka ile \u00e7al\u0131\u015f\u0131r. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.4":"<p>Tek T\u0131kla D\u00fczelt ak\u0131ll\u0131 fallback&#039;lerle tam \u00e7al\u0131\u015f\u0131r hale getirildi. Meta, alt metin, OG, hreflang otomatik \u00fcretilir. Toplu URL d\u00fczeltme eklendi. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.3":"<p>Kritik 403 nonce hatas\u0131 ve update &quot;Unauthorized&quot; hatas\u0131 \u00e7\u00f6z\u00fcld\u00fc. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.2":"<p>Tek T\u0131kla D\u00fczelt d\u00fczeltildi (403 fix), T\u00fcm\u00fc sekmesinde audit ve AI \u00f6nerileri birlikte, otomatik versiyon sync, tamamen T\u00fcrk\u00e7e UI. \u00d6nerilen g\u00fcncelleme.<\/p>","1.0.1":"<p>Site Audit Fixes + AI Articles tabs added, internal links auto-populate, setup wizard and redirect form fixes, foreign notice suppression, full-width admin pages. Recommended update.<\/p>","1.0.0":"<p>Initial public release.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3519338,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.13","1.0.13.1","1.1.0","2.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3519338,"resolution":"1","location":"assets","locale":"","width":1775,"height":763},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3519338,"resolution":"2","location":"assets","locale":"","width":1760,"height":570},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3519338,"resolution":"3","location":"assets","locale":"","width":1047,"height":617},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3519338,"resolution":"4","location":"assets","locale":"","width":1247,"height":554},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3519338,"resolution":"5","location":"assets","locale":"","width":1740,"height":793},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3519338,"resolution":"6","location":"assets","locale":"","width":1759,"height":864}},"screenshots":{"1":"Dashboard overview with audit score, organic traffic summary, recent activity feed, and quick action cards for publish, redirects, audit, and panel.","2":"Redirect manager with sortable list, bulk actions, search, and CSV import for migrating from other redirect plugins or importing broken-backlink targets from the SEOYEN panel.","3":"Setup wizard \u2014 three-step API key, connect, and verify flow with inline validation.","4":"AI content suggestions \u2014 list of panel-generated drafts with one-click apply\/reject buttons and a preview of the incoming change.","5":"Activity log with date-range filter, action and result filters, search box, and CSV export.","6":"System status page with REST loopback test, active SEO plugin detection, and debug bundle downloader."}},"plugin_section":[262246],"plugin_tags":[195933,19933,726,1117,186],"plugin_category":[55],"plugin_contributors":[261520],"plugin_business_model":[],"class_list":["post-303622","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-ai-content","plugin_tags-internal-linking","plugin_tags-redirects","plugin_tags-schema","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-tevfikgulep","plugin_committers-tevfikgulep"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/seoyen\/assets\/icon.svg?rev=3519338","icon":"https:\/\/ps.w.org\/seoyen\/assets\/icon.svg?rev=3519338","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/seoyen\/assets\/screenshot-1.jpg?rev=3519338","caption":"Dashboard overview with audit score, organic traffic summary, recent activity feed, and quick action cards for publish, redirects, audit, and panel."},{"src":"https:\/\/ps.w.org\/seoyen\/assets\/screenshot-2.jpg?rev=3519338","caption":"Redirect manager with sortable list, bulk actions, search, and CSV import for migrating from other redirect plugins or importing broken-backlink targets from the SEOYEN panel."},{"src":"https:\/\/ps.w.org\/seoyen\/assets\/screenshot-3.jpg?rev=3519338","caption":"Setup wizard \u2014 three-step API key, connect, and verify flow with inline validation."},{"src":"https:\/\/ps.w.org\/seoyen\/assets\/screenshot-4.jpg?rev=3519338","caption":"AI content suggestions \u2014 list of panel-generated drafts with one-click apply\/reject buttons and a preview of the incoming change."},{"src":"https:\/\/ps.w.org\/seoyen\/assets\/screenshot-5.jpg?rev=3519338","caption":"Activity log with date-range filter, action and result filters, search box, and CSV export."},{"src":"https:\/\/ps.w.org\/seoyen\/assets\/screenshot-6.jpg?rev=3519338","caption":"System status page with REST loopback test, active SEO plugin detection, and debug bundle downloader."}],"raw_content":"<!--section=description-->\n<p>SEOYEN SEO Platform is the official WordPress companion plugin for the SEOYEN SEO platform (https:\/\/seoyen.com\/). It lets you apply decisions made in the SEOYEN panel to your WordPress site with a single click \u2014 publish AI-generated articles, add internal links from SEOYEN suggestions, fix audit issues, manage 301\/302\/307\/308\/410 redirects, write meta descriptions that work with every major SEO plugin, and much more.<\/p>\n\n<p>Use the plugin alongside an active SEOYEN account to turn panel recommendations into live site changes without copying and pasting, editing templates, or juggling multiple SEO tools. A guided welcome screen greets you right after activation and walks you through connecting the plugin to your SEOYEN account.<\/p>\n\n<p><strong>Highlights<\/strong><\/p>\n\n<ul>\n<li>Publish AI-generated content (articles and paragraphs) from the SEOYEN panel straight to WordPress as drafts, scheduled posts, or published articles.<\/li>\n<li>Apply internal link suggestions with a single click. The inserter first tokenizes the existing <code>&lt;a&gt;<\/code> elements in your content, then links only the first still-unlinked occurrence of the anchor text \u2014 so it never writes a link inside an existing link, and never double-links the same phrase.<\/li>\n<li>Manage 301\/302\/307\/308\/410 redirects with per-hit analytics, support for exact, prefix, and regex matching, CSV bulk import, and automatic capture of broken backlinks.<\/li>\n<li>Auto-fix common SEO audit issues on 58 supported check types (title, meta description, canonical, robots.txt, schema Article\/Breadcrumb\/Organization\/WebSite\/Product\/FAQPage, Open Graph + Twitter Card expansion, hreflang, alt text, viewport, apple-touch-icon, theme-color, llms.txt, AI bot management, broken-link 301 capture, redirect chains, WooCommerce product and category copy, and more).<\/li>\n<li>Notify IndexNow (Bing\/Microsoft) the moment content is published \u2014 optional and disabled by default, with a verification key generated inside the plugin.<\/li>\n<li>Submit published URLs to the Google Indexing API using your own Google Cloud service-account credentials \u2014 optional and disabled by default.<\/li>\n<li>Apply AI-generated meta descriptions across Yoast SEO, Rank Math, SEOPress, or the built-in native fallback \u2014 the plugin detects your active SEO plugin automatically.<\/li>\n<li>Set image alt text in bulk, including featured images and media library entries.<\/li>\n<li>Manage JSON-LD schema markup per post (append, replace, upsert) and output it in a single clean <code>&lt;script type=\"application\/ld+json\"&gt;<\/code> block.<\/li>\n<li>Convert content into social media drafts ready for your editorial workflow.<\/li>\n<li>Serve a custom <code>robots.txt<\/code> and <code>llms.txt<\/code> through virtual routes \u2014 no file permission changes required.<\/li>\n<li>Outbound webhook dispatcher with HMAC-SHA256 signing so you can forward activity to Zapier, Make, n8n, or your own endpoint.<\/li>\n<li>Complete activity log with search, filter, date range, and CSV export.<\/li>\n<li>System status page with REST loopback test, active SEO plugin detection, and a debug bundle downloader.<\/li>\n<\/ul>\n\n<p><strong>Instant indexing<\/strong><\/p>\n\n<p>When enabled, the plugin pings IndexNow (Bing\/Microsoft) and the Google Indexing API the moment you publish content, so search engines learn about new URLs in minutes instead of days. Both integrations are optional and disabled by default. IndexNow uses a verification key generated inside the plugin and served through a virtual <code>\/{key}.txt<\/code> route, and Google Instant Indexing authenticates with your own Google Cloud service-account JSON over an OAuth2 JWT (RS256) \u2014 no third-party libraries involved.<\/p>\n\n<p><strong>SEO plugin integrations<\/strong><\/p>\n\n<p>The plugin talks to existing SEO plugins so there are no conflicts:<\/p>\n\n<ul>\n<li>Yoast SEO (Free and Premium) \u2014 meta description, title, canonical, Open Graph.<\/li>\n<li>Rank Math \u2014 meta description, title, canonical, Open Graph.<\/li>\n<li>SEOPress \u2014 meta description, title, canonical, Open Graph.<\/li>\n<li>Native fallback \u2014 if no SEO plugin is active, the plugin outputs standards-compliant meta tags itself.<\/li>\n<\/ul>\n\n<p><strong>Dashboard widget<\/strong><\/p>\n\n<p>A native WordPress dashboard widget summarises your audit score, top tracked keywords, recent organic clicks, and the latest activity from both the panel and the plugin. Refreshable with a single click.<\/p>\n\n<p><strong>Privacy-first<\/strong><\/p>\n\n<p>The plugin does not make any remote call until you enter a SEOYEN API key and complete the three-step setup wizard. Telemetry is opt-in and disabled by default. On uninstall, plugin data is kept unless you explicitly opt in to full data removal.<\/p>\n\n<p><strong>SEOYEN account required for AI features<\/strong><\/p>\n\n<p>The internal-links apply, redirect management, and local admin tools work without an account. Panel-driven features (AI content, meta description generation, audit auto-fix driven from the panel, suggestion lists) require an active SEOYEN account so the WordPress plugin can talk to the panel API.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to external services to provide its functionality. The integrations are documented below so you can make an informed decision before activating them.<\/p>\n\n<p><strong>1. SEOYEN Panel API (required for panel-driven features)<\/strong><\/p>\n\n<ul>\n<li>Endpoint: <code>https:\/\/seoyen.com\/panel\/api\/api-platform.php<\/code><\/li>\n<li>What it does: Receives WordPress site actions (liveness pings, activation handshake, link\/meta\/schema\/alt\/social\/autofix apply callbacks, redirect sync, activity log sync) and returns the data the plugin needs to render panel-driven UI (audit summary, link suggestions, AI content, audit auto-fix instructions).<\/li>\n<li>When: Only after the user enters a SEOYEN API key in <strong>SEOYEN SEO &gt; Settings<\/strong> and completes the setup wizard. The plugin makes no outbound calls on activation or before the key is set.<\/li>\n<li>Data sent: site URL, admin email (once, during the first activation handshake), WordPress version, PHP version, plugin version, and action-specific payloads (e.g. redirect source and target URLs, meta description text, target post ID, activity log entries). No content of posts or media is sent unless you explicitly trigger a publish or apply action.<\/li>\n<li>Data received: AI-generated content, internal link suggestions, audit fixes, redirect and webhook configurations.<\/li>\n<li>Terms of service: https:\/\/seoyen.com\/sartlar\/<\/li>\n<li>Privacy policy: https:\/\/seoyen.com\/gizlilik\/<\/li>\n<\/ul>\n\n<p><strong>2. User-configured outbound webhooks (optional)<\/strong><\/p>\n\n<ul>\n<li>Endpoints: User-provided URLs entered in the webhook settings.<\/li>\n<li>What it does: When enabled, the plugin POSTs HMAC-SHA256-signed JSON payloads to the URLs you configure whenever a tracked event occurs (for example, a redirect being created or an AI meta description being applied). You control the URLs and the event types.<\/li>\n<li>When: Only if you explicitly add at least one webhook endpoint and enable it.<\/li>\n<li>Data sent: The event name and a minimal payload describing the event. No credentials or user information is included.<\/li>\n<li>Terms and privacy: Determined by the third party that owns the webhook endpoint.<\/li>\n<\/ul>\n\n<p><strong>3. WordPress core REST self-call (loopback)<\/strong><\/p>\n\n<p>During the setup wizard the plugin makes a single request to its own <code>\/wp-json\/seoyen\/v1\/ping<\/code> endpoint to verify REST API availability. This is a loopback request to the same WordPress install and does not leave the server.<\/p>\n\n<p><strong>4. IndexNow (optional)<\/strong><\/p>\n\n<ul>\n<li>Endpoint: <code>https:\/\/api.indexnow.org\/indexnow<\/code><\/li>\n<li>What it does: When you enable IndexNow in <strong>SEOYEN SEO &gt; IndexNow<\/strong> and generate a verification key, the canonical URL of newly published content is submitted to the IndexNow service (operated by Microsoft Bing) so search engines can index it faster.<\/li>\n<li>When: Only if you explicitly enable the feature (disabled by default). No request is made while the feature is off.<\/li>\n<li>Data sent: The URL of the published content, your site host, and your own verification key. The key is generated inside the plugin (never fetched from a third party) and is served through a virtual <code>\/{key}.txt<\/code> route on your own site.<\/li>\n<li>Terms of service: https:\/\/www.bing.com\/indexnow<\/li>\n<li>Privacy policy: https:\/\/www.microsoft.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>5. Google Instant Indexing (optional)<\/strong><\/p>\n\n<ul>\n<li>Endpoints: <code>https:\/\/oauth2.googleapis.com\/token<\/code> and <code>https:\/\/indexing.googleapis.com\/v3\/urlNotifications:publish<\/code><\/li>\n<li>What it does: When you upload your own Google Cloud service-account JSON and enable the feature, the URLs of newly published content are submitted to the Google Indexing API. Authentication uses an OAuth2 JWT (RS256) signed locally with OpenSSL \u2014 no third-party libraries are involved.<\/li>\n<li>When: Only if you explicitly enable the feature and provide your own service-account credentials (disabled by default).<\/li>\n<li>Data sent: The published URL and your own service-account credentials (used solely to obtain an access token from Google). The private key is stored in your WordPress database and is never displayed back in the browser.<\/li>\n<li>Terms of service: https:\/\/developers.google.com\/search\/apis<\/li>\n<li>Privacy policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>6. SEOYEN Panel API \u2014 WooCommerce catalogue sync (optional, WooCommerce only)<\/strong><\/p>\n\n<ul>\n<li>Endpoint: <code>https:\/\/seoyen.com\/panel\/api\/api-platform.php<\/code> (the same panel API as item 1).<\/li>\n<li>What it does: When your site runs WooCommerce and you have connected a SEOYEN account, the panel reads your product and category catalogue so it can score product SEO, flag missing product descriptions and empty category pages, and generate copy on request. The plugin also keeps a local change journal so price and stock movements are reported at intra-day resolution \u2014 WooCommerce does not update a product's <code>post_modified<\/code> timestamp when an order reduces stock, so a date-based sync would silently miss it.<\/li>\n<li>When: Once per day via a scheduled sync, plus whenever you trigger a catalogue refresh or a product SEO action yourself. If WooCommerce is not active, no product data is collected and no product query is ever executed.<\/li>\n<li>Data sent: Product and category attributes only \u2014 name, SKU, GTIN, price, sale price, cost (when set), stock status and quantity, brand, category and tag names, permalink, image URLs, product type, publish status, and aggregate review <strong>counts<\/strong> and average rating. Change-journal rows (which product changed, which field, when). Daily order <strong>totals<\/strong> (aggregate revenue and order count per day) when GA4-style commerce reporting is enabled.<\/li>\n<li>Data NOT sent: No customer personal data of any kind \u2014 no customer names, e-mail addresses, phone numbers, billing or shipping addresses, and no IP addresses. No order numbers or individual order records. No review text and no reviewer identity; only the number of reviews and the average score.<\/li>\n<li>Terms of service: https:\/\/seoyen.com\/sartlar\/<\/li>\n<li>Privacy policy: https:\/\/seoyen.com\/gizlilik\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>, or unzip into <code>wp-content\/plugins\/seoyen\/<\/code>.<\/li>\n<li>Activate <strong>SEOYEN SEO Platform<\/strong> from the Plugins screen.<\/li>\n<li>Go to <strong>SEOYEN SEO &gt; Settings<\/strong> and paste the API key generated in the SEOYEN panel (Settings &gt; Integrations &gt; WordPress Plugin).<\/li>\n<li>Click <strong>Connect to Panel<\/strong>. The plugin will run a three-step handshake and report when the connection is active.<\/li>\n<li>Open the <strong>SEOYEN SEO<\/strong> top-level menu to explore the dashboard, redirects, internal links, content suggestions, activity log, and system status pages.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20seoyen%20account%3F\"><h3>Do I need a SEOYEN account?<\/h3><\/dt>\n<dd><p>Yes for AI and panel-driven features (AI content publish, meta description apply, audit auto-fix from the panel, suggestion lists, webhook dispatch back to the panel). The redirect manager, admin UI, and local debugging pages work without a panel connection.<\/p><\/dd>\n<dt id=\"which%20seo%20plugins%20are%20supported%3F\"><h3>Which SEO plugins are supported?<\/h3><\/dt>\n<dd><p>Yoast SEO (Free and Premium), Rank Math, and SEOPress are detected automatically. If none of these are active, the plugin falls back to writing meta descriptions, canonical tags, and Open Graph tags itself. You only need one of these (including the native fallback) to get meta description support.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20plugin%20without%20the%20seoyen%20panel%3F\"><h3>Can I use this plugin without the SEOYEN panel?<\/h3><\/dt>\n<dd><p>The redirect manager, admin UI, activity log, and system status work without a panel connection. AI features, audit auto-fix from the panel, and suggestion lists require an active SEOYEN account because the data comes from the panel API.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20track%20users%20on%20my%20site%3F\"><h3>Does this plugin track users on my site?<\/h3><\/dt>\n<dd><p>No. The plugin has no public-facing tracking scripts. Telemetry is strictly opt-in (disabled by default) and only sends plugin version, WordPress version, and PHP version when enabled.<\/p><\/dd>\n<dt id=\"how%20do%20redirects%20work%3F\"><h3>How do redirects work?<\/h3><\/dt>\n<dd><p>Redirects are stored in the custom table <code>{prefix}seoyen_redirects<\/code>. On every public request the plugin hooks <code>template_redirect<\/code> at priority 1, normalizes the request URI, looks up the destination, and \u2014 if a match is found \u2014 issues a <code>wp_safe_redirect()<\/code> with the configured status code. Hit counts are updated on the <code>shutdown<\/code> hook so they do not slow down the response.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20yoast%2C%20rank%20math%2C%20or%20seopress%3F\"><h3>Will it conflict with Yoast, Rank Math, or SEOPress?<\/h3><\/dt>\n<dd><p>No. The plugin uses an adapter pattern. If Yoast is active, meta descriptions are written into Yoast's post meta keys; the same is true for Rank Math and SEOPress. If none are active, the plugin writes its own meta tags in the head. The plugin never outputs duplicate meta tags.<\/p><\/dd>\n<dt id=\"can%20i%20remove%20plugin%20data%20on%20uninstall%3F\"><h3>Can I remove plugin data on uninstall?<\/h3><\/dt>\n<dd><p>Yes. In <strong>SEOYEN SEO &gt; Settings<\/strong> there is a \"Keep data on uninstall\" toggle. When disabled, uninstalling the plugin drops the custom tables, deletes all <code>_seoyen_*<\/code> post meta, and removes all <code>seoyen_*<\/code> options. The default is to keep data so you can reactivate without losing redirects or activity history.<\/p><\/dd>\n<dt id=\"is%20it%20gpl-compatible%3F\"><h3>Is it GPL-compatible?<\/h3><\/dt>\n<dd><p>Yes. SEOYEN SEO Platform is released under GPLv2 or later, the same license as WordPress core.<\/p><\/dd>\n<dt id=\"where%20do%20i%20report%20bugs%20or%20request%20features%3F\"><h3>Where do I report bugs or request features?<\/h3><\/dt>\n<dd><p>Please contact support through https:\/\/seoyen.com\/ or open an issue in the SEOYEN panel's help section.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.2<\/h4>\n\n<ul>\n<li><strong>\"Kopya H1\" ve \"H1 \u00e7ok uzun\" d\u00fczeltmeleri art\u0131k ger\u00e7ekten uygulanabiliyor.<\/strong> Bu iki bulguda \"WP ile Uygula\" \u00e7o\u011fu temada hi\u00e7bir \u015feyi de\u011fi\u015ftirmiyordu: eklenti yaln\u0131z yaz\u0131 i\u00e7eri\u011findeki <code>&lt;h1&gt;<\/code> etiketini d\u00fczeltebiliyor, oysa temalar\u0131n \u00e7o\u011fu g\u00f6r\u00fcnen ba\u015fl\u0131\u011f\u0131 yaz\u0131 ba\u015fl\u0131\u011f\u0131ndan bas\u0131yor. \u00d6l\u00e7\u00fcld\u00fc (28 A\u011fustos 2026, \u00fc\u00e7 tur): hedef yaz\u0131lar\u0131n i\u00e7eri\u011finde tek bir <code>&lt;h1&gt;<\/code> yoktu, d\u00fczeltme \u00fc\u00e7 turda da sessizce atland\u0131 ve ayn\u0131 bulgu her denetimde geri geldi.<\/li>\n<li><strong>Art\u0131k ne olaca\u011f\u0131 a\u00e7\u0131k\u00e7a soruluyor.<\/strong> \u0130\u00e7erikte de\u011fi\u015ftirilebilecek <code>&lt;h1&gt;<\/code> yoksa eklenti sessizce vazge\u00e7mez; panelde \u00e7\u00f6z\u00fcm\u00fcn alt\u0131nda <strong>\"Yaz\u0131 ba\u015fl\u0131\u011f\u0131n\u0131 da g\u00fcncelle\"<\/strong> kutusu \u00e7\u0131kar. Kutu i\u015faretlenmeden hi\u00e7bir \u015fey de\u011fi\u015fmez.<\/li>\n<li><strong>Kal\u0131c\u0131 ba\u011flant\u0131n\u0131z (adres) de\u011fi\u015fmez.<\/strong> Onay verildi\u011finde yaln\u0131z yaz\u0131 ba\u015fl\u0131\u011f\u0131 g\u00fcncellenir; ba\u011flant\u0131 adresi (slug) oldu\u011fu gibi kal\u0131r. Ba\u015fl\u0131\u011f\u0131n g\u00f6r\u00fcnd\u00fc\u011f\u00fc yerler: men\u00fcler, yaz\u0131 listeleri ve arama sonu\u00e7lar\u0131.<\/li>\n<li><strong>\"Yapt\u0131m\" yalan\u0131 yok.<\/strong> Ba\u015fl\u0131k g\u00fcncellemesini WordPress reddederse d\u00fczeltme ba\u015far\u0131l\u0131 say\u0131lmaz; sorun denetim listesinde a\u00e7\u0131k kal\u0131r.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li><strong>\"D\u00fczelttim\" denen meta a\u00e7\u0131klamalar sayfada ger\u00e7ekten g\u00f6r\u00fcn\u00fcyor.<\/strong> Alt\u0131 d\u00fczeltme tipi \"yazd\u0131m\" cevab\u0131 verip de\u011feri kaydediyor, ama ziyaret\u00e7inin g\u00f6rd\u00fc\u011f\u00fc sayfada hi\u00e7bir \u015fey de\u011fi\u015fmiyordu. \u00d6L\u00c7\u00dcLD\u00dc (canl\u0131, 28 A\u011fustos 2026; 18 d\u00fczeltme tipi \u00d7 3 tur): <code>content.meta_too_long<\/code>, <code>content.meta_too_short<\/code>, <code>content.meta_description_duplicate<\/code> ve <code>social_meta.og_description_missing<\/code> 3\/3 turda sessiz kald\u0131.<\/li>\n<li><strong>Sebep:<\/strong> eklenti \"bu etiket sayfada zaten var\" deyip susuyordu. Temalar\u0131n \u00e7o\u011fu kendi <code>&lt;meta name=\"description\"&gt;<\/code> etiketini eklentinin s\u0131ras\u0131 gelmeden basar. Temas\u0131nda kendi a\u00e7\u0131klamas\u0131n\u0131 basan HER sitede ayn\u0131 sessiz sonu\u00e7suzluk vard\u0131.<\/li>\n<li><strong>Art\u0131k:<\/strong> a\u00e7\u0131k\u00e7a kaydetti\u011finiz bir de\u011fer varsa eklenti mevcut etiketi susmak yerine DE\u011e\u0130\u015eT\u0130R\u0130YOR \u2014 sayfa a\u00e7\u0131klamas\u0131, Open Graph a\u00e7\u0131klamas\u0131 ve t\u00fcr\u00fc, Twitter kart t\u00fcr\u00fc\/ba\u015fl\u0131\u011f\u0131\/a\u00e7\u0131klamas\u0131.<\/li>\n<li><strong>Bilerek yapmad\u0131klar\u0131:<\/strong> de\u011fer sizin yazd\u0131\u011f\u0131n\u0131z metin de\u011fil de \u00f6zetten t\u00fcretilmi\u015f bir yedekse temaya dokunulmaz; Yoast \/ Rank Math \/ SEOPress \/ AIOSEO kuruluysa hi\u00e7bir \u015fey de\u011fi\u015fmez; ayn\u0131 adl\u0131 birden \u00e7ok etiket varsa yaln\u0131z ilki d\u00fczeltilir.<\/li>\n<li><strong><code>twitter:card<\/code> \u00e7o\u011falt\u0131lm\u0131yor<\/strong> \u2014 tema (ya da Jetpack gibi bir eklenti) kendi kart etiketini basm\u0131\u015fsa ikinci, \u00e7eli\u015fen bir tane daha eklenmiyor. S\u0131n\u0131ftaki \u00fc\u00e7 \u00e7\u0131k\u0131\u015f noktas\u0131n\u0131n \u00fc\u00e7\u00fc de ayn\u0131 s\u00f6zle\u015fmeye al\u0131nd\u0131.<\/li>\n<li>Ezme yap\u0131ld\u0131\u011f\u0131nda da yap\u0131lamad\u0131\u011f\u0131nda da sunucu hata g\u00fcnl\u00fc\u011f\u00fcne saatte en fazla bir kez a\u00e7\u0131klay\u0131c\u0131 sat\u0131r d\u00fc\u015fer.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li><strong>T\u00fcrk\u00e7e y\u00f6netici ekran\u0131nda \u0130ngilizce kalan on bir etiket \u00e7evrildi<\/strong> \u2014 ara\u00e7 adlar\u0131 (Meta A\u00e7\u0131klama, Alt Metin, Sosyal Medya D\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc, Paragraf \u00dcretici, Otomatik D\u00fczeltme), \u00f6nem dereceleri (Kritik, Bilgi) ve makale kart\u0131 etiketleri (AI Makale, Anahtar kelime:, Taslak, Yay\u0131nda). Ayn\u0131 ekranda iki dil bir arada g\u00f6r\u00fcnm\u00fcyor art\u0131k.<\/li>\n<li>Yaln\u0131z g\u00f6r\u00fcnen metinler de\u011fi\u015fti; ayarlar, kay\u0131tlar ve yaz\u0131 durumlar\u0131n\u0131n teknik de\u011ferleri (<code>draft<\/code> \/ <code>publish<\/code>) ayn\u0131 kald\u0131.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li><strong>\"Tek T\u0131kla D\u00fczelt\" art\u0131k ger\u00e7ekten hepsini kaps\u0131yor.<\/strong> Kart \"42 URL etkilendi\" derken d\u00fc\u011fme yaln\u0131z ekranda g\u00f6sterilen ilk 5 adresi d\u00fczeltiyordu. D\u00fc\u011fme art\u0131k ekrandaki listeye hi\u00e7 bakmaz: sorunun T\u00dcM uygun adreslerini panelin toplu d\u00fczeltme motoruna verir.<\/li>\n<li><strong>T\u0131klamadan \u00f6nce ne harcayaca\u011f\u0131n\u0131z yaz\u0131l\u0131 olarak s\u00f6yleniyor<\/strong> \u2014 ka\u00e7 sayfa i\u015flenecek, tahmini ka\u00e7 kredi gidecek, kalan bakiyeniz ne. Onaylamadan hi\u00e7bir kredi harcanmaz. Bakiye s\u0131n\u0131rs\u0131zsa rakam yerine \"s\u0131n\u0131rs\u0131z\" yazar; maliyet hesaplanam\u0131yorsa uydurulmaz, \"hesaplanamad\u0131\" denir ve sayfa say\u0131s\u0131 yine s\u00f6ylenir.<\/li>\n<li><strong>Kart, panelin o soruna ait sayfas\u0131na ba\u011flant\u0131 veriyor<\/strong> (\"Tek tek se\u00e7mek i\u00e7in panelde a\u00e7 \u2192\") \u2014 hangi sayfay\u0131 d\u00fczeltece\u011finize tek tek karar vermek isterseniz oradan se\u00e7ersiniz.<\/li>\n<li><strong>\u0130lerleme d\u00fcr\u00fcst \u00fc\u00e7 kovada g\u00f6steriliyor<\/strong>: haz\u0131r \u00b7 hata \u00b7 bekliyor. \"Bekliyor\" hata de\u011fildir \u2014 o adresin d\u00fczeltmesi hen\u00fcz \u00fcretilmedi. \u0130stedi\u011finiz an durdurabilirsiniz; durdurmak izlemeyi keser, panelde s\u00fcren \u00fcretimi \u00f6ld\u00fcrmez ve bu a\u00e7\u0131k\u00e7a yazar.<\/li>\n<li>Etkilenen adres \u00f6nizlemesi 5 yerine 20 sat\u0131r g\u00f6steriyor.<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li><strong>D\u00fczeltti\u011finiz denetim sorunlar\u0131 aktif listeden d\u00fc\u015f\u00fcyor.<\/strong> Bir sorunu d\u00fczeltmenize ra\u011fmen kart listede duruyordu; hangi i\u015fi yap\u0131p hangisini yapmad\u0131\u011f\u0131n\u0131z\u0131 ay\u0131rt edemiyordunuz. D\u00fczeltilenler art\u0131k <strong>\"Uygulanm\u0131\u015f d\u00fczeltmeler\"<\/strong> ba\u015fl\u0131kl\u0131, varsay\u0131lan olarak kapal\u0131 bir b\u00f6l\u00fcmde toplan\u0131r \u2014 kaybolmazlar, sadece yolunuzdan \u00e7ekilirler.<\/li>\n<li><strong>Bir sorun yeniden ortaya \u00e7\u0131karsa kendili\u011finden aktif listeye d\u00f6ner<\/strong> \u2014 ar\u015fiv \"bir daha bakma\" listesi de\u011fildir; sonraki denetimde ayn\u0131 kontrol yeniden ba\u015far\u0131s\u0131z olursa sorun a\u00e7\u0131k listede yeniden belirir.<\/li>\n<li>Uygulanm\u0131\u015f d\u00fczeltme say\u0131s\u0131 ba\u015fl\u0131kta g\u00f6sterilir; say\u0131 panelden okunam\u0131yorsa ba\u015fl\u0131k say\u0131s\u0131z bas\u0131l\u0131r, uydurma rakam g\u00f6sterilmez.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li><strong>\"Uygulan\u0131yor\u2026\" sonsuza kadar durmuyor<\/strong> \u2014 d\u00fczeltme ekran\u0131 bir sonucu iki saate kadar bekleyebiliyordu; ge\u00e7en s\u00fcre yoktu, iptal yoktu. Bekleme art\u0131k \u00f6l\u00e7\u00fclm\u00fc\u015f s\u00fcreye g\u00f6re: tek d\u00fczeltme i\u00e7in 6 dakika, bir sorunun t\u00fcm adresleri i\u00e7in toplam 30 dakika.<\/li>\n<li><strong>Beklerken ge\u00e7en s\u00fcre g\u00f6r\u00fcn\u00fcyor<\/strong> (\"42 sn\", \"3 dk 07 sn\") ve istedi\u011finiz an <strong>\u0130ptal<\/strong> diyebiliyorsunuz. \u0130ptal d\u00fcr\u00fcstt\u00fcr: izleme durur, sunucudaki \u00fcretim arka planda s\u00fcrebilir, ama sitenize hi\u00e7bir \u015fey yaz\u0131lmaz \u2014 yeniden deneyebilirsiniz.<\/li>\n<li><strong>S\u00fcre doldu\u011funda \"ba\u015far\u0131s\u0131z\" denmiyor<\/strong> \u2014 d\u00fczeltme h\u00e2l\u00e2 \u00fcretiliyor olabilir; ekran \"sonucu bekleyemedik\" der ve ne yapman\u0131z gerekti\u011fini yazar.<\/li>\n<li><strong>\"A\u011f hatas\u0131\" yerine sunucunun ger\u00e7ekten ne dedi\u011fi yaz\u0131yor<\/strong> \u2014 zaman a\u015f\u0131m\u0131 m\u0131, sunucuya ula\u015f\u0131lam\u0131yor mu, beklenmeyen yan\u0131t m\u0131; durum koduyla birlikte. Ham hata sayfas\u0131 kullan\u0131c\u0131ya g\u00f6sterilmez, yaln\u0131z geli\u015ftirici konsoluna d\u00fc\u015fer.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li><strong>WooCommerce ma\u011fazan\u0131z SEOYEN'e ba\u011flanabiliyor.<\/strong> \u00dcr\u00fcn ve kategori katalo\u011funuz panele okunuyor; panel hangi \u00fcr\u00fcn\u00fcn a\u00e7\u0131klamas\u0131 eksik, hangi kategori metinsiz g\u00f6steriyor. WooCommerce kurulu de\u011filse eklenti bu i\u015f i\u00e7in tek sorgu bile \u00e7al\u0131\u015ft\u0131rmaz.<\/li>\n<li><strong>Stok ve fiyat hareketleri g\u00fcn i\u00e7inde yakalan\u0131yor<\/strong> \u2014 yeni \"de\u011fi\u015fim defteri\" her hareketi kaydeder. \u015eart oldu: sipari\u015f kaynakl\u0131 stok d\u00fc\u015f\u00fcm\u00fc WooCommerce'te \u00fcr\u00fcn\u00fcn \"son d\u00fczenlenme\" tarihine dokunmaz, yaln\u0131z tarihe bakan bir e\u015fitleme \u00fcr\u00fcn\u00fcn t\u00fckenmesini ka\u00e7\u0131r\u0131rd\u0131.<\/li>\n<li><strong>Katalog e\u015fitlemesini besleyen d\u00f6rt yeni u\u00e7<\/strong> (\u00fcr\u00fcnler, kategoriler, ma\u011faza durumu, onay). WooCommerce yokken sessizce bo\u015f liste d\u00f6nmez, durumu a\u00e7\u0131k\u00e7a bildirir \u2014 panel \"ma\u011faza var, s\u0131f\u0131r \u00fcr\u00fcn var\" san\u0131p katalo\u011fu silinmi\u015f saymas\u0131n diye.<\/li>\n<li><strong>\u00dc\u00e7 yeni \"Tek T\u0131kla D\u00fczelt\" kalemi<\/strong>: eksik \u00fcr\u00fcn a\u00e7\u0131klamas\u0131, ince \u00fcr\u00fcn a\u00e7\u0131klamas\u0131n\u0131 geni\u015fletme, eksik kategori metni. Geni\u015fletmede ma\u011fazan\u0131n kendi metni korunur.<\/li>\n<li><strong>Sekiz yeni e-ticaret denetim kontrol\u00fc<\/strong> + y\u00f6netici men\u00fcs\u00fcnde <strong>\"E-Ticaret SEO\" ekran\u0131<\/strong> + panelde <strong>toplu \u00fcr\u00fcn SEO optimizasyonu<\/strong>.<\/li>\n<li><strong>Organik ciro \u00f6l\u00e7\u00fcl\u00fcyor<\/strong> \u2014 Google Analytics ba\u011fl\u0131ysa panel e-ticaret metriklerini de \u00e7ekiyor.<\/li>\n<li><strong>Eklentiyi kald\u0131rd\u0131\u011f\u0131n\u0131zda panel haberdar oluyor<\/strong> \u2014 kald\u0131rma bildirimi eski bir kimlik ba\u015fl\u0131\u011f\u0131yla gidiyor ve reddediliyordu; site hesab\u0131n\u0131zda \"ba\u011fl\u0131\" g\u00f6r\u00fcnmeye devam ediyordu.<\/li>\n<li><strong>Toplu d\u00fczeltme s\u0131ras\u0131 eklentinin h\u0131z s\u0131n\u0131r\u0131na \u00e7arpm\u0131yor<\/strong> \u2014 eklenti s\u0131n\u0131r\u0131n\u0131 bildiriyor, panel yava\u015fl\u0131yor ve s\u0131n\u0131ra \u00e7arparsa geri \u00e7ekiliyor. \u00d6l\u00e7\u00fcld\u00fc (30 g\u00fcn): bildirim yokken 428 istek reddedilmi\u015fti, her biri kredisi zaten harcanm\u0131\u015f bir d\u00fczeltmeydi.<\/li>\n<li><strong>Otopilot istemedi\u011finiz h\u00e2lde yay\u0131na alm\u0131yor<\/strong> \u2014 yay\u0131n durumu belirtilmeden ba\u015flat\u0131lan ko\u015fu yaz\u0131y\u0131 sessizce yay\u0131nl\u0131yordu, art\u0131k taslak b\u0131rak\u0131r.<\/li>\n<li><strong>Medya kitapl\u0131\u011f\u0131nda olmayan g\u00f6rsel i\u00e7in \"d\u00fczelt\" d\u00fc\u011fmesi \u00e7\u0131km\u0131yor<\/strong> (30 g\u00fcnde 93 ba\u015far\u0131s\u0131z deneme) \u00b7 <strong>d\u00f6rt \u0130ngilizce y\u00f6netici metni T\u00fcrk\u00e7eye \u00e7evrildi<\/strong>.<\/li>\n<li>\u015eema s\u00fcr\u00fcm\u00fc 1.1.0 \u2192 1.2.0; g\u00fcncellemede iki yeni tablo otomatik olu\u015fur, mevcut veriler etkilenmez.<\/li>\n<li><strong>Eklenti wordpress.org'da yay\u0131mlanmaya haz\u0131rland\u0131<\/strong> \u2014 dizinin kabul etmedi\u011fi <code>Update URI<\/code> ba\u015fl\u0131\u011f\u0131 kald\u0131r\u0131ld\u0131. Kurulu sitelerde bu turda hi\u00e7bir \u015fey de\u011fi\u015fmez: WordPress yaln\u0131z daha y\u00fcksek s\u00fcr\u00fcm g\u00f6r\u00fcrse g\u00fcncelleme \u00f6nerir, 2.1.0 ise oradaki kay\u0131tl\u0131 1.1.0'dan y\u00fcksektir.<\/li>\n<\/ul>\n\n<h4>2.0.11<\/h4>\n\n<ul>\n<li><strong>\u0130\u00e7erik ekran\u0131ndaki \"Yenile\" d\u00fc\u011fmesi sunucu reddetti\u011finde art\u0131k sayfay\u0131 yenilemiyor.<\/strong> \u0130stek 403 (oturum anahtar\u0131 s\u00fcresi doldu) veya 500 ile d\u00f6nse bile sayfa yenileniyordu; sunucuda hi\u00e7bir \u015fey tazelenmemi\u015fken ayn\u0131 bayat \u00f6neri listesi \"yeni\" san\u0131l\u0131yordu. Sayfa art\u0131k yaln\u0131z sunucu tazeledi\u011fini s\u00f6yledi\u011finde yenilenir, aksi h\u00e2lde hata metni g\u00f6sterilir. (\u0130\u00e7 Linkler ekran\u0131 2.0.10'da d\u00fczeltilmi\u015fti; iki ekran art\u0131k ayn\u0131.)<\/li>\n<li><strong>Rank Math kullanan sitelerde yaz\u0131 g\u00f6rseli \u00f6n y\u00fcze ula\u015f\u0131yor.<\/strong> Rank Math yaz\u0131n\u0131n Facebook\/Twitter g\u00f6rselini \u00f6n y\u00fczde yaln\u0131z medya kitapl\u0131\u011f\u0131 kimli\u011finden okur; SEOYEN yaln\u0131z adresi yazd\u0131\u011f\u0131 i\u00e7in g\u00f6rsel hi\u00e7 yay\u0131na girmiyordu. G\u00f6rsel kitapl\u0131kta yoksa art\u0131k \"uyguland\u0131\" denmiyor. (Kategori\/etiket taraf\u0131 2.0.10'dayd\u0131.)<\/li>\n<li><strong>Ba\u015far\u0131s\u0131z g\u00f6rsel yaz\u0131m\u0131n\u0131n ger\u00e7ek sebebi bildiriliyor<\/strong> \u2014 her hataya <code>update_failed<\/code> yazmak yerine adapter'\u0131n bildirdi\u011fi sebep ta\u015f\u0131n\u0131yor; \u00f6nceki adapter'\u0131n bayat sebebi bir sonrakine yap\u0131\u015fm\u0131yor.<\/li>\n<li><strong>Yay\u0131mlanan yaz\u0131n\u0131n WordPress kimli\u011fi ve adresi panele ta\u015f\u0131n\u0131yor<\/strong> \u2014 panel yay\u0131nlanan yaz\u0131ya geri ba\u011flant\u0131 kurabiliyor. Panele ula\u015f\u0131lamazsa yay\u0131n etkilenmez.<\/li>\n<li>S\u00fcr\u00fcm numaras\u0131 ayn\u0131 zamanda betik\/stil \u00f6nbellek anahtar\u0131d\u0131r; <code>seoyen-page-content.js<\/code> de\u011fi\u015fti\u011fi i\u00e7in s\u00fcr\u00fcm y\u00fckseltildi \u2014 aksi h\u00e2lde kurulu siteler eski dosyay\u0131 \u00f6nbellekten sunmaya devam ederdi.<\/li>\n<\/ul>\n\n<h4>2.0.10<\/h4>\n\n<ul>\n<li><strong>\"Yenile\" d\u00fc\u011fmesi sunucu reddetti\u011finde art\u0131k sayfay\u0131 yenilemiyor.<\/strong> \u0130stek 403 (oturum anahtar\u0131 s\u00fcresi doldu) veya 500 ile d\u00f6nse bile sayfa yenileniyordu; sunucuda hi\u00e7bir \u015fey tazelenmemi\u015fken ayn\u0131 bayat \u00f6neri listesi \"yeni\" san\u0131l\u0131yordu. Sayfa art\u0131k yaln\u0131z sunucu tazeledi\u011fini s\u00f6yledi\u011finde yenilenir, aksi h\u00e2lde hata metni g\u00f6sterilir.<\/li>\n<li><strong>Rank Math kullanan sitelerde kategori\/etiket g\u00f6rseli \u00f6n y\u00fcze ula\u015f\u0131yor.<\/strong> Rank Math terim g\u00f6rselini \u00f6n y\u00fczde yaln\u0131z medya kitapl\u0131\u011f\u0131 kimli\u011finden okur; SEOYEN yaln\u0131z adresi yazd\u0131\u011f\u0131 i\u00e7in g\u00f6rsel hi\u00e7 yay\u0131na girmiyordu. G\u00f6rsel kitapl\u0131kta yoksa art\u0131k \"uyguland\u0131\" denmiyor.<\/li>\n<li><strong>\"Fallback Meta Output\" ayar\u0131 kapat\u0131ld\u0131\u011f\u0131nda ger\u00e7ekten kapan\u0131yor.<\/strong> WordPress kutucuk kald\u0131r\u0131ld\u0131\u011f\u0131nda ayar\u0131 bo\u015f dize olarak saklar; bo\u015f dize \"a\u00e7\u0131k\" say\u0131ld\u0131\u011f\u0131 i\u00e7in meta etiketler bas\u0131lmaya devam ediyordu. Hi\u00e7 dokunmam\u0131\u015f kurulumlar etkilenmez.<\/li>\n<li><strong>\u0130\u00e7erik Botu ko\u015fu a\u015famalar\u0131 ger\u00e7ek durumu g\u00f6steriyor<\/strong> \u2014 \"G\u00fcvenlik kontrol\u00fc yap\u0131l\u0131yor\" ve \"Yaz\u0131 birle\u015ftiriliyor\" a\u015famalar\u0131 listede yoktu (ham kod g\u00f6r\u00fcn\u00fcyordu), hi\u00e7 kullan\u0131lmayan iki \u00f6l\u00fc etiket ise duruyordu.<\/li>\n<li><strong>Bot ziyaret sayac\u0131 artan de\u011feri kaybetmiyor<\/strong> \u2014 saya\u00e7 okunduktan sonra gelen ziyaretler de yanl\u0131\u015fl\u0131kla \"g\u00f6nderildi\" i\u015faretlenebiliyordu.<\/li>\n<li><strong><code>&lt;html lang=\"...\"&gt;<\/code> d\u00fczeltmesi resmi WordPress dil paketleriyle \u00e7al\u0131\u015f\u0131yor<\/strong> (<code>de_DE_formal<\/code>, <code>pt_PT_ao90<\/code>, <code>nl_NL_formal<\/code>, <code>tr_TR<\/code> gibi kodlar reddediliyordu). Ger\u00e7ekten ge\u00e7ersiz girdi h\u00e2l\u00e2 reddedilir.<\/li>\n<li><strong>apple-touch-icon d\u00fczeltmesi adres olmayan metni kabul etmiyor<\/strong> \u2014 d\u00fcz bir c\u00fcmlenin ba\u015f\u0131na <code>http:\/\/<\/code> eklenip kaydediliyor ve \"ba\u015far\u0131l\u0131\" deniyordu.<\/li>\n<li><strong>Yedi denetim kusuru art\u0131k \"Tek T\u0131kla D\u00fczelt\" ile giderilebiliyor<\/strong>: <code>og:image<\/code>, <code>og:type<\/code>, Twitter a\u00e7\u0131klamas\u0131, Twitter g\u00f6rseli, \u00e7ok uzun g\u00f6rsel alt metni, \u00e7ok uzun H1, eksik video \u015femas\u0131. Bunlar g\u00f6r\u00fcn\u00fcyor ama d\u00fczeltilemiyordu.<\/li>\n<li><strong>Eklenti i\u00e7inden yay\u0131mlanan yaz\u0131 panele bildiriliyor<\/strong> \u2014 durum, kullan\u0131m kayd\u0131 ve rozet g\u00fcncelleniyor. Panele ula\u015f\u0131lamazsa yay\u0131n etkilenmez, ikinci yaz\u0131 \u00fcretilmez.<\/li>\n<li><strong>D\u00fczeltme etiketlerinin tamam\u0131 T\u00fcrk\u00e7e ve \u00e7eviri yoluna al\u0131nd\u0131<\/strong> (55 etiket; 14'\u00fc \u0130ngilizceden \u00e7evrildi). \u00c7eviri katalo\u011fu kodla e\u015fitlendi.<\/li>\n<li>S\u00fcr\u00fcm numaras\u0131 ayn\u0131 zamanda betik\/stil \u00f6nbellek anahtar\u0131d\u0131r; <code>seoyen-page-links.js<\/code> de\u011fi\u015fti\u011fi i\u00e7in s\u00fcr\u00fcm y\u00fckseltildi \u2014 aksi h\u00e2lde kurulu siteler eski dosyay\u0131 \u00f6nbellekten sunmaya devam ederdi.<\/li>\n<\/ul>\n\n<h4>2.0.9<\/h4>\n\n<ul>\n<li><strong>\"Tek T\u0131kla D\u00fczelt\" art\u0131k uzun s\u00fcren yapay zeka \u00fcretimlerini de tamaml\u0131yor.<\/strong> D\u00fczeltme \u00f6nceden panele a\u00e7\u0131lan tek bir iste\u011fin i\u00e7inde \u00fcretiliyordu; o istek 90 saniyeyi a\u015famad\u0131\u011f\u0131 i\u00e7in yava\u015f bir model se\u00e7iliyken d\u00fczeltme hi\u00e7 bitmiyor, ekranda \"yapay zeka yan\u0131t vermiyor\" yaz\u0131yordu. Art\u0131k \u00fcretim panelde arka planda ko\u015fuyor ve eklenti sonucu aral\u0131klarla soruyor \u2014 s\u00fcre s\u0131n\u0131r\u0131 kalkt\u0131.<\/li>\n<li><strong>Yar\u0131m kalan d\u00fczeltme hakk\u0131n\u0131z\u0131 yakm\u0131yor.<\/strong> Ayl\u0131k WordPress eylem hakk\u0131 ve yapay zeka kredisi, d\u00fczeltme ger\u00e7ekten \u00fcretildikten sonra d\u00fc\u015f\u00fcyor; taray\u0131c\u0131 kapansa bile sonu\u00e7 panelde sakl\u0131 kal\u0131yor.<\/li>\n<li>D\u00fczeltme iste\u011fi ba\u015far\u0131s\u0131z oldu\u011funda WordPress'e ham sunucu hata metni g\u00f6nderilmiyor, anla\u015f\u0131l\u0131r T\u00fcrk\u00e7e mesaj g\u00f6steriliyor.<\/li>\n<li>Site geneline uygulanan d\u00fczeltmeler (llms.txt, tema rengi, yapay zeka botu izinleri) panelin d\u0131\u015f API ucundan \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda art\u0131k kategori adresiyle birlikte g\u00f6nderilmiyor \u2014 eskiden bu istekler reddediliyordu.<\/li>\n<li>Eski s\u00fcr\u00fcmdeki kurulumlar etkilenmez: arka plan modu yaln\u0131z destekleyen eklentiye a\u00e7\u0131l\u0131r.<\/li>\n<\/ul>\n\n<h4>2.0.8<\/h4>\n\n<ul>\n<li><strong>\"\u0130\u00e7erik\" men\u00fcs\u00fc art\u0131k \"\u00d6neriler\".<\/strong> Men\u00fcde yan yana duran \"\u0130\u00e7erik\" ve \"\u0130\u00e7erik Botu\" kalemleri kar\u0131\u015f\u0131yordu. As\u0131l sorun benzerlik de\u011fildi: o sayfan\u0131n yedi sekmesinin \u00e7o\u011fu (site denetimi d\u00fczeltmeleri, meta a\u00e7\u0131klamalar, alt metinler, \u015femalar) i\u00e7erik \u00fcretmez, mevcut sayfalar\u0131 d\u00fczeltir. Ortak payda \"i\u00e7erik\" de\u011fil, onay bekleyen \u00f6neri \u2014 sayfa art\u0131k \u00f6yle adlan\u0131yor. <strong>\u0130\u00e7erik Botu'na dokunulmad\u0131<\/strong>, yaln\u0131z sayfa ba\u015fl\u0131\u011f\u0131 ne yapt\u0131\u011f\u0131n\u0131 s\u00f6yl\u00fcyor: \"\u0130\u00e7erik Botu \u2014 Otomatik Blog Yazar\u0131\".<\/li>\n<li><strong>Eski yer imleriniz \u00e7al\u0131\u015fmaya devam ediyor.<\/strong> Sayfan\u0131n adresi de\u011fi\u015fti (<code>seoyen-content<\/code> \u2192 <code>seoyen-suggestions<\/code>); eski adrese giden ba\u011flant\u0131lar sekme bilgisiyle birlikte yenisine y\u00f6nlendirilir. Bu y\u00f6nlendirme en az iki min\u00f6r s\u00fcr\u00fcm boyunca kalacak.<\/li>\n<li><strong>Men\u00fc s\u0131ras\u0131 k\u00fcmelendi.<\/strong> Kalemler art\u0131k i\u015fe g\u00f6re gruplu: \u00f6nce g\u00fcnl\u00fck kullan\u0131lan \u00fcretim ekranlar\u0131 (\u00d6neriler, \u0130\u00e7erik Botu), sonra site yap\u0131s\u0131 (\u0130\u00e7 Linkler, Y\u00f6nlendirmeler), analiz sekmeleri, dizine g\u00f6nderim (IndexNow, Google Indexing) ve en altta bak\u0131m (Aktivite, Sistem Durumu, Ayarlar). Kurulumda bir kez a\u00e7\u0131lan Ayarlar, her g\u00fcn a\u00e7\u0131lan ekranlar\u0131n \u00fcst\u00fcnde durmuyor art\u0131k.<\/li>\n<li><strong>SEOYEN sayfalar\u0131 art\u0131k b\u00f6l\u00fcmlere ve sekmelere ayr\u0131l\u0131yor.<\/strong> Arama Performans\u0131 sayfas\u0131nda \u00fcstte \"Genel Bak\u0131\u015f\" b\u00f6l\u00fcm\u00fc (\u00f6zet kartlar + t\u0131klama oran\u0131 \u00e7ubu\u011fu), alt\u0131nda Search Console \/ S\u0131ralamalar \/ Ziyaret\u00e7i sekmeleri var. \u00d6nceden her \u015fey tek bir dikey listede alt alta diziliyordu. Sekmeler JavaScript gerektirmez.<\/li>\n<li><strong>Eklenti panelden daha eskiyse sayfa yine eksiksiz g\u00f6r\u00fcn\u00fcr.<\/strong> Panelin g\u00f6nderdi\u011fi yeni bir kart t\u00fcr\u00fcn\u00fc bu s\u00fcr\u00fcm tan\u0131m\u0131yorsa, i\u00e7indekiler d\u00fcz liste olarak \u00e7izilir \u2014 veri kaybolmaz, yaln\u0131z gruplama sadele\u015fir ve sayfada bunu s\u00f6yleyen bir bilgi notu \u00e7\u0131kar.<\/li>\n<li><strong>Panel art\u0131k hangi s\u00fcr\u00fcme \u00e7izdi\u011fini biliyor.<\/strong> Eklenti her istekte s\u00fcr\u00fcm\u00fcn\u00fc, dilini ve destekledi\u011fi kart s\u00f6zl\u00fc\u011f\u00fcn\u00fcn s\u00fcr\u00fcm\u00fcn\u00fc bildirir; panel ekran\u0131 buna g\u00f6re haz\u0131rlar.<\/li>\n<li><strong>A\u015f\u0131r\u0131 b\u00fcy\u00fck i\u00e7erik sayfay\u0131 kilitlemiyor.<\/strong> Bir sayfada \u00e7izilecek kart say\u0131s\u0131na, veri boyutuna ve i\u00e7 i\u00e7e ge\u00e7me derinli\u011fine \u00fcst s\u0131n\u0131r kondu; s\u0131n\u0131r a\u015f\u0131l\u0131rsa i\u00e7erik sessizce kaybolmaz, k\u0131salt\u0131ld\u0131\u011f\u0131n\u0131 s\u00f6yleyen bir uyar\u0131 g\u00f6sterilir.<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li><strong>AI bot ayarlar\u0131 art\u0131k ger\u00e7ekten yay\u0131na giriyor.<\/strong> Kendi robots.txt metninizi yazd\u0131ysan\u0131z (tam metin modu), SEOYEN'in y\u00f6netti\u011fi bot kurallar\u0131 o metnin sonuna eklenir. \u00d6nceden kendi metniniz varken bot kurallar\u0131 H\u0130\u00c7 yay\u0131nlanm\u0131yordu: Ayarlar'daki be\u015f bot anahtar\u0131 ile panelden gelen d\u00f6rt bot d\u00fczeltmesi kaydediliyor ama \u00e7\u0131kt\u0131ya yans\u0131m\u0131yordu. Ayn\u0131 bot iki kez yaz\u0131lmaz \u2014 sizin metninizdeki kural, SEOYEN'in y\u00f6netti\u011fi kuralla de\u011fi\u015ftirilir.<\/li>\n<li><strong>Bot kural\u0131 kaydedilemezse \"yap\u0131ld\u0131\" denmiyor.<\/strong> Yazma tutmad\u0131\u011f\u0131nda d\u00fczeltme art\u0131k a\u00e7\u0131k\u00e7a hata d\u00f6nd\u00fcr\u00fcr; panel kayd\u0131 yanl\u0131\u015fl\u0131kla \"\u00e7\u00f6z\u00fcld\u00fc\" i\u015faretlemez.<\/li>\n<li><strong><code>\/llms.txt<\/code> ve <code>\/llms-full.txt<\/code> do\u011fru yan\u0131t veriyor.<\/strong> \u00d6zellik kapal\u0131ysa veya i\u00e7erik bo\u015fsa art\u0131k g\u00f6vdesiz \"200 OK\" yerine 404 d\u00f6n\u00fcyor. Kurallar bir kez yenilenmemi\u015f kurulumlarda dosyalar adres \u00fczerinden de sunuluyor \u2014 daha \u00f6nce bu kurulumlarda <code>\/llms-full.txt<\/code> 404 veriyordu. Eklenti devre d\u0131\u015f\u0131 b\u0131rak\u0131ld\u0131\u011f\u0131nda bu adresler art\u0131k sitenin ana sayfas\u0131n\u0131 d\u00f6nd\u00fcrm\u00fcyor.<\/li>\n<li><strong><code>llms-full.txt<\/code> d\u00fczeltmesi yay\u0131n anahtar\u0131n\u0131 da a\u00e7\u0131yor<\/strong> \u2014 i\u00e7erik yaz\u0131l\u0131p dosya sunulmadan kalm\u0131yor.<\/li>\n<li><strong>robots.txt \/ llms.txt i\u00e7eri\u011finiz art\u0131k bozulmuyor.<\/strong> Site haritas\u0131 sat\u0131r\u0131ndaki <code>&amp;<\/code> karakteri <code>&amp;amp;<\/code>'e \u00e7evrilmiyor ve <code>&lt;https:\/\/...&gt;<\/code> bi\u00e7imindeki ba\u011flant\u0131 sat\u0131rlar\u0131 silinmiyor.<\/li>\n<\/ul>\n\n<h4>2.0.6<\/h4>\n\n<ul>\n<li><strong>Konu ba\u015fl\u0131klar\u0131 havuzu ikiye ayr\u0131ld\u0131.<\/strong> S\u0131rada bekleyen konular ile daha \u00f6nce yaz\u0131ya d\u00f6n\u00fc\u015fm\u00fc\u015f konular art\u0131k ayr\u0131 a\u00e7\u0131l\u0131r alanlarda; ikisi de kapal\u0131 a\u00e7\u0131l\u0131r ve her birinin ba\u015fl\u0131\u011f\u0131nda kendi say\u0131s\u0131 yazar. \u00d6nceden ikisi ayn\u0131 tabloda kar\u0131\u015f\u0131yordu: 15 konunun tamam\u0131 kullan\u0131lm\u0131\u015fken b\u00f6l\u00fcm dolu g\u00f6r\u00fcn\u00fcyor, ba\u015fl\u0131ktaki \"0 bekleyen\" rozetiyle \u00e7eli\u015fiyordu.<\/li>\n<li><strong>Bekleyen bir konuyu art\u0131k kald\u0131rabilirsiniz.<\/strong> Sat\u0131rdaki \"Kald\u0131r\" d\u00fc\u011fmesi konuyu s\u0131radan \u00e7\u0131kar\u0131r; onay sorulur. Konu S\u0130L\u0130NMEZ \u2014 panelinizde kay\u0131tl\u0131 kal\u0131r, yaln\u0131z bot bir daha o konuyu se\u00e7mez.<\/li>\n<li><strong>Kullan\u0131lm\u0131\u015f konuda kald\u0131rma yoktur.<\/strong> Yay\u0131mlanm\u0131\u015f bir yaz\u0131n\u0131n kayna\u011f\u0131n\u0131 s\u0131radan \u00e7\u0131karmak \u00fcretim ge\u00e7mi\u015fini silerdi; o sat\u0131rlarda d\u00fc\u011fme \u00e7izilmez, panel de b\u00f6yle bir iste\u011fi reddeder.<\/li>\n<li>Kald\u0131rma ba\u015far\u0131s\u0131z olursa sat\u0131r listede kal\u0131r ve sebebi yaz\u0131l\u0131r \u2014 sahte \"kald\u0131r\u0131ld\u0131\" g\u00f6sterilmez. Panel bu ucu hen\u00fcz yay\u0131mlamam\u0131\u015fsa (eski panel) d\u00fc\u011fme hi\u00e7 \u00e7izilmez, ekran bug\u00fcnk\u00fc davran\u0131\u015f\u0131na d\u00fc\u015fer.<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li><strong>\"Son \u00e7al\u0131\u015fmalar\" art\u0131k zamanlanm\u0131\u015f ko\u015fular\u0131 da g\u00f6steriyor.<\/strong> Liste bug\u00fcne kadar yaln\u0131z bu ekrandan ELLE ba\u015flat\u0131lan ko\u015fular\u0131 kaydeden yerel g\u00fcnl\u00fckten okunuyordu; panelde arka planda ko\u015fan (zamanlanm\u0131\u015f) yaz\u0131lar hi\u00e7 g\u00f6r\u00fcnm\u00fcyordu. Kaynak panelin ko\u015fu defterine ta\u015f\u0131nd\u0131. Her sat\u0131rda yaz\u0131n\u0131n ba\u015fl\u0131\u011f\u0131, botun ara\u015ft\u0131rd\u0131\u011f\u0131 konu, ko\u015funun durumu, harcanan kredi ve tarih var; yay\u0131mlanm\u0131\u015f yaz\u0131n\u0131n ba\u015fl\u0131\u011f\u0131 do\u011frudan yaz\u0131ya giden bir ba\u011flant\u0131d\u0131r.<\/li>\n<li><strong>Harcanan kredi eksikse bunu s\u00f6yl\u00fcyoruz.<\/strong> Eski ko\u015fularda alt i\u015flerin (taslak plan\u0131, g\u00fcvenlik kontrol\u00fc) kayd\u0131 tutulmad\u0131\u011f\u0131 i\u00e7in toplam ger\u00e7ekte oldu\u011fundan d\u00fc\u015f\u00fckt\u00fcr. B\u00f6yle sat\u0131rlarda say\u0131n\u0131n yan\u0131nda bir y\u0131ld\u0131z ve a\u00e7\u0131klamas\u0131 \u00e7\u0131kar \u2014 eksik bir toplam \"tam\" gibi g\u00f6sterilmez.<\/li>\n<li><strong>Konu ba\u015fl\u0131klar\u0131 havuzu ayr\u0131, a\u00e7\u0131l\u0131r-kapan\u0131r bir b\u00f6l\u00fcm oldu<\/strong> ve her zaman kapal\u0131 a\u00e7\u0131l\u0131r. \u0130\u00e7inde botun s\u0131radaki yaz\u0131 i\u00e7in se\u00e7ebilece\u011fi konular, durumlar\u0131 (bekliyor\/kullan\u0131ld\u0131), nereden geldikleri ve kullan\u0131ld\u0131ysa hangi yaz\u0131ya d\u00f6n\u00fc\u015ft\u00fckleri listelenir. Ba\u015fl\u0131kta bekleyen konu say\u0131s\u0131 g\u00f6r\u00fcn\u00fcr.<\/li>\n<li>Panel bu iki yeni ucu hen\u00fcz yay\u0131mlamam\u0131\u015fsa (eski panel) ekran bug\u00fcnk\u00fc davran\u0131\u015f\u0131na d\u00fc\u015fer: ko\u015fu listesi yerel kayda d\u00f6ner, konu havuzu b\u00f6l\u00fcm\u00fc hi\u00e7 \u00e7izilmez. Uydurma sat\u0131r g\u00f6sterilmez.<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li><strong>\u0130\u00e7erik Botu ekran\u0131 yeniden d\u00fczenlendi.<\/strong> Durum bilgisi (otomatik \u00e7al\u0131\u015fma, \u00e7al\u0131\u015fma aral\u0131\u011f\u0131, son \u00e7al\u0131\u015ft\u0131rma, kredi ve \"\u00dcret\" d\u00fc\u011fmesi) art\u0131k ekran\u0131n \u00fcst\u00fcnde tam geni\u015flikte bir \u015feritte; ayarlar onun alt\u0131nda geni\u015f ekranda iki, \u00e7ok geni\u015f ekranda \u00fc\u00e7 s\u00fctuna ak\u0131yor. \u00d6nceki d\u00fczende sol s\u00fctunun b\u00fcy\u00fck b\u00f6l\u00fcm\u00fc bo\u015f kal\u0131yordu.<\/li>\n<li><strong>Kategori: \"Otomatik \u2014 yapay zeka se\u00e7sin\".<\/strong> Yeni kurulumlar\u0131n varsay\u0131lan\u0131 budur. Yapay zeka, yaz\u0131n\u0131n konusuna en yak\u0131n kategoriyi sitenizin <strong>mevcut<\/strong> kategorileri aras\u0131ndan se\u00e7er; bot yeni kategori a\u00e7maz, uygun kategori bulunamazsa WordPress varsay\u0131lan\u0131 kullan\u0131l\u0131r. \"WordPress varsay\u0131lan\u0131\" se\u00e7ene\u011fi duruyor; daha \u00f6nce belirli bir kategori se\u00e7tiyseniz se\u00e7iminiz aynen korunur.<\/li>\n<li><strong>Yasakl\u0131 kelimeler ve konular art\u0131k a\u00e7\u0131l\u0131r-kapan\u0131r bir b\u00f6l\u00fcmde<\/strong> ve her zaman kapal\u0131 a\u00e7\u0131l\u0131r. B\u00f6l\u00fcm\u00fcn i\u00e7inde, sistemin her ko\u015fulda engelledi\u011fi konular yaz\u0131 olarak listelenir \u2014 kendi listenize yaln\u0131z bunlar\u0131n d\u0131\u015f\u0131nda engellemek istediklerinizi yazars\u0131n\u0131z.<\/li>\n<li><strong>Bo\u015f kutulara panelin \u00f6nerdi\u011fi ba\u015flang\u0131\u00e7 de\u011ferleri yaz\u0131l\u0131r<\/strong> (marka sesi, yasakl\u0131 kelimeler, yasakl\u0131 konu terimleri). Daha \u00f6nce kaydetti\u011finiz bir de\u011fer varsa ona dokunulmaz.<\/li>\n<li><strong>Tasar\u0131m SEOYEN ile hizaland\u0131.<\/strong> Ekran ham WordPress admin renkleri yerine eklentinin kendi tasar\u0131m belirte\u00e7lerini kullan\u0131yor; marka moru SEOYEN'in ana tonuna (#8b5cf6) \u00e7ekildi ve metin\/d\u00fc\u011fme kontrastlar\u0131 WCAG AA (4.5:1) e\u015fi\u011fine g\u00f6re \u00f6l\u00e7\u00fclerek ayarland\u0131.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>\u0130\u00e7erik Botu ayar ekran\u0131 3 alandan 17 alana \u00e7\u0131kt\u0131. Ayarlar d\u00f6rt ba\u015fl\u0131k alt\u0131nda topland\u0131: <strong>Zamanlama<\/strong> (otomatik \u00e7al\u0131\u015ft\u0131rma, aral\u0131k, \u00fcretilen yaz\u0131n\u0131n durumu), <strong>Yay\u0131n<\/strong> (kategori, yazar, i\u00e7erik dili, hedef kelime say\u0131s\u0131), <strong>\u0130\u00e7erik<\/strong> (anlat\u0131m tonu, marka sesi, sabit etiketler, en fazla etiket, yeni a\u00e7\u0131labilecek etiket, liste bi\u00e7imli yaz\u0131 oran\u0131) ve <strong>Kalite ve g\u00fcvenlik<\/strong> (yasakl\u0131 kelimeler, yasakl\u0131 konu terimleri, yay\u0131n i\u00e7in en d\u00fc\u015f\u00fck kalite puan\u0131, yeniden yazd\u0131rma e\u015fi\u011fi). Bu ayarlar\u0131n dokuzu panelde zaten vard\u0131 ama eklenti ekran\u0131ndan eri\u015filemiyordu; be\u015fi yeni.<\/li>\n<li><strong>Kategori se\u00e7imi<\/strong>: \u00fcretilen yaz\u0131n\u0131n hangi kategoriye d\u00fc\u015fece\u011fini art\u0131k siz se\u00e7iyorsunuz. Liste sitenizin kendi kategorilerinden gelir ve se\u00e7im kategori kimli\u011fi olarak saklan\u0131r \u2014 bot bu sayede sitenizde kendili\u011finden yeni kategori a\u00e7amaz.<\/li>\n<li><strong>Yazar se\u00e7imi<\/strong>: \u00fcretilen yaz\u0131lar yazars\u0131z kaydediliyordu (post_author=0); yazar kutusu bo\u015f kal\u0131yor, yazar ar\u015fivi olu\u015fmuyordu. Art\u0131k yaz\u0131 yay\u0131mlama yetkisi olan kullan\u0131c\u0131lar aras\u0131ndan bir yazar se\u00e7ebilirsiniz.<\/li>\n<li>Se\u00e7ili kategori ya da yazar sonradan silinirse yaz\u0131 sessizce etkilenmez: eklenti bunu yay\u0131n \u00f6ncesinde do\u011frular, WordPress varsay\u0131lan\u0131na d\u00fc\u015fer ve durumu aktivite g\u00fcnl\u00fc\u011f\u00fcne yazar.<\/li>\n<li>Bo\u015f b\u0131rak\u0131lan say\u0131 alanlar\u0131 art\u0131k s\u0131f\u0131r olarak kaydedilmiyor; bo\u015f kutu \"belirtilmedi\" demektir ve panelin varsay\u0131lan\u0131 korunur.<\/li>\n<li>Kaydettikten sonra alanlar panelin GER\u00c7EKTEN saklad\u0131\u011f\u0131 de\u011ferle tazeleniyor: panel bir say\u0131y\u0131 kendi s\u0131n\u0131r\u0131na \u00e7ekerse ekran art\u0131k eski de\u011feri g\u00f6stermeye devam etmiyor.<\/li>\n<li>\u00d6nbellek anahtar\u0131: s\u00fcr\u00fcm 2.0.3 oldu (ayar ekran\u0131n\u0131n i\u015faretlemesi, JavaScript ve CSS dosyalar\u0131 de\u011fi\u015fti).<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>\u0130\u00e7erik Botu kurulumunun \"Sitenizi tan\u0131yal\u0131m\" ad\u0131m\u0131 art\u0131k D\u00dcZENLENEB\u0130L\u0130R: ni\u015f, ton ve hedef kitle alanlar\u0131n\u0131 kendiniz yaz\u0131p kaydedebilirsiniz. \u00d6nceden bu ad\u0131m salt okunurdu; yanl\u0131\u015f \u00e7\u0131kar\u0131lm\u0131\u015f bir profili d\u00fczeltmenin tek yolu \"Yeniden analiz et\" demekti, o da ayn\u0131 verilerle ko\u015ftu\u011fu i\u00e7in \u00e7o\u011fu zaman ayn\u0131 sonucu \u00fcretiyor ama her denemede yapay zeka kredisi harc\u0131yordu. Kendi yazd\u0131\u011f\u0131n\u0131z profil kredi harcamaz ve sonraki analizler onu ezmez.<\/li>\n<li>\"Yeniden analiz et\" d\u00fc\u011fmesinin maliyeti art\u0131k d\u00fc\u011fmenin yan\u0131nda yaz\u0131yor; bakiyeniz yetmiyorsa d\u00fc\u011fme uyar\u0131 g\u00f6r\u00fcn\u00fcm\u00fcne ge\u00e7ip kredi y\u00fckleme ba\u011flant\u0131s\u0131 g\u00f6steriyor.<\/li>\n<li>\"Yeniden analiz et\" ger\u00e7ekten yeniden analiz ediyor: panelin tazelik penceresi i\u00e7inde ayn\u0131 \u00f6nbelleklenmi\u015f profil geri d\u00f6nd\u00fc\u011f\u00fc i\u00e7in d\u00fc\u011fme sessizce etkisiz kal\u0131yordu.<\/li>\n<li>Yapay zeka yeni bir profil \u00f6nerdi\u011finde kendi yazd\u0131\u011f\u0131n\u0131z metin sessizce de\u011fi\u015ftirilmiyor; \"\u00d6neriyi kullan\" ve \"Benimkini koru\" se\u00e7enekleri sunuluyor.<\/li>\n<li>\u0130\u00e7erik Botu sayfas\u0131n\u0131n JavaScript dosyas\u0131, ekran ad\u0131 \u00e7eviriye g\u00f6re kayd\u0131\u011f\u0131nda da y\u00fckleniyor (ekran kimli\u011fi art\u0131k WordPress'in kendi d\u00f6nd\u00fcrd\u00fc\u011f\u00fc de\u011ferden okunuyor).<\/li>\n<li>\u00d6nbellek anahtar\u0131: s\u00fcr\u00fcm 2.0.2'ye \u00e7\u0131kar\u0131ld\u0131; 2.0.1'de s\u00fcr\u00fcm sabit kal\u0131rken JavaScript de\u011fi\u015fti\u011fi i\u00e7in d\u00fczeltmeler taray\u0131c\u0131ya ula\u015fm\u0131yordu.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>\u00d6nbellek d\u00fczeltmesi: y\u00f6netim aray\u00fcz\u00fcn\u00fcn JavaScript ve CSS dosyalar\u0131 eklenti s\u00fcr\u00fcm\u00fcyle (<code>?ver=<\/code>) sunuluyor; 2.0.0 s\u00fcr\u00fcm numaras\u0131 sabit kal\u0131rken be\u015f JS dosyas\u0131 de\u011fi\u015fti\u011fi i\u00e7in taray\u0131c\u0131 ve CDN eski dosyalar\u0131 sunmaya devam ediyordu. S\u00fcr\u00fcm art\u0131r\u0131ld\u0131, d\u00fczeltilmi\u015f dosyalar art\u0131k ger\u00e7ekten y\u00fckleniyor.<\/li>\n<li>Kategori\/etiket ar\u015fivlerinde yap\u0131land\u0131r\u0131lm\u0131\u015f veri kayb\u0131 giderildi: sayfada ba\u015fka bir bile\u015fenin (tema\/eklenti) <code>CollectionPage<\/code> blo\u011fu varken eklenti KEND\u0130 <code>@graph<\/code>'\u0131n\u0131n tamam\u0131n\u0131 bast\u0131r\u0131yordu \u2014 b\u00f6ylece <code>BreadcrumbList<\/code> ve kullan\u0131c\u0131n\u0131n elle yazd\u0131\u011f\u0131 \u015fema (\u00f6r. <code>FAQPage<\/code>) da siliniyordu. Art\u0131k yaln\u0131z yinelenen <code>CollectionPage<\/code> d\u00fc\u011f\u00fcm\u00fc d\u00fc\u015f\u00fcr\u00fcl\u00fcr, di\u011fer d\u00fc\u011f\u00fcmler bas\u0131l\u0131r.<\/li>\n<li>Sosyal kart ba\u015fl\u0131\u011f\u0131 tutarl\u0131l\u0131\u011f\u0131: <code>og:title<\/code> markal\u0131 tam ba\u015fl\u0131\u011f\u0131, <code>twitter:title<\/code> ise \u00e7\u0131plak terim ad\u0131n\u0131 yaz\u0131yordu. \u0130kisi art\u0131k ayn\u0131 kaynaktan \u00fcretilir (elle girilmi\u015f <code>twitter:title<\/code>\/<code>og:title<\/code> her zaman \u00f6nceliklidir).<\/li>\n<li><code>noindex<\/code> i\u015faretlenmi\u015f yaz\u0131 ve terim sayfalar\u0131na art\u0131k canonical bas\u0131lmaz \u2014 eklentinin kendi noindex \u00e7\u0131kt\u0131s\u0131 da hesaba kat\u0131l\u0131r (\u00f6nceden yaln\u0131z WordPress'in <code>wp_robots<\/code> \u00e7\u0131kt\u0131s\u0131 okunuyordu, bu y\u00fczden eklentinin kendi i\u015faretledi\u011fi sayfalarda \u00e7eli\u015fen sinyal kal\u0131yordu).<\/li>\n<li>Yinelenen etiket korumas\u0131 art\u0131k \u00f6l\u00e7emedi\u011fini biliyor: kom\u015fu bir eklenti <code>wp_head<\/code> i\u00e7inde i\u00e7 i\u00e7e \u00e7\u0131k\u0131\u015f tamponu a\u00e7t\u0131\u011f\u0131nda koruma k\u00f6rle\u015fip yinelenen <code>description<\/code>\/<code>og:description<\/code> \u00fcretiyordu (\u00f6l\u00e7\u00fcld\u00fc: 1 \u2192 2). Bu durum art\u0131k tespit edilir ve sunucu hata g\u00fcnl\u00fc\u011f\u00fcne bir kez bildirilir.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>WordPress 7.1 uyumlulu\u011fu do\u011fruland\u0131 (<code>Tested up to<\/code> 7.1'e y\u00fckseltildi).<\/li>\n<li>Aray\u00fcz \u00e7evirisi d\u00fczeltmesi: eklenti art\u0131k kendi <code>languages\/<\/code> dizinini <code>load_plugin_textdomain()<\/code> ile a\u00e7\u0131k\u00e7a y\u00fckl\u00fcyor. Ayn\u0131 <code>seoyen<\/code> text domain'ini beyan eden bir tema kuruluyken WordPress'in gecikmeli (JIT) \u00e7eviri y\u00fckleyicisi domain'i tema dizinine \u00e7\u00f6z\u00fcyor, eklentinin <code>seoyen-tr_TR.mo<\/code> dosyas\u0131na hi\u00e7 bakm\u0131yordu; sonu\u00e7ta y\u00f6netim aray\u00fcz\u00fc \u00e7evrilmemi\u015f kal\u0131yordu (\"Settings\", \"Redirects\"). Men\u00fcler, ayar etiketleri ve bildirimler art\u0131k do\u011fru \u015fekilde T\u00fcrk\u00e7e g\u00f6r\u00fcn\u00fcyor.<\/li>\n<li>Belge d\u00fczeltmeleri: otomatik d\u00fczeltilebilen denetim kontrol\u00fc say\u0131s\u0131 ger\u00e7ek de\u011ferine g\u00fcncellendi (45 \u2192 57) ve i\u00e7 ba\u011flant\u0131 ekleyicinin \u00e7al\u0131\u015fma bi\u00e7imi do\u011fru anlat\u0131ld\u0131 (DOMDocument de\u011fil, mevcut ba\u011flant\u0131lar\u0131 koruyan tokenizasyon).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Sunucu-s\u00fcr\u00fcml\u00fc companion \u00e7er\u00e7evesi: panel art\u0131k her admin sekmesinin \u0130\u00c7ER\u0130\u011e\u0130N\u0130 \"blok\" listesi olarak g\u00f6nderir; eklenti bu bloklar\u0131 yaln\u0131z bilinen 8 g\u00fcvenli tiple (scorecard, kpi_row, timeseries_chart, bar_chart, table, action_list, notice, text) \u00e7izer. <strong>Panele yeni bir veri sekmesi eklendi\u011finde eklentiyi g\u00fcncellemeniz gerekmez<\/strong> \u2014 sekme otomatik g\u00f6r\u00fcn\u00fcr.<\/li>\n<li>Yeni companion sekmeleri: <strong>AI G\u00f6r\u00fcn\u00fcrl\u00fck<\/strong> (AI kaynakl\u0131 trafik, marka bahsi, ses pay\u0131, aktif motor + AI bot tarama trafi\u011fi + \u00f6nerilen GEO aksiyonlar\u0131) ve <strong>Arama Performans\u0131<\/strong> (Search Console t\u0131k\/g\u00f6sterim\/CTR\/pozisyon + g\u00fcnl\u00fck trend + en \u00e7ok t\u0131klanan sorgular + takip edilen kelime s\u0131ralamalar\u0131 + Google Analytics \u00f6zeti).<\/li>\n<li>Dashboard widget'\u0131: panel veri-\u015fekli d\u00fczeltmesi + \"SEO performans\u0131\" b\u00f6l\u00fcm\u00fc (organik trafik, alan otoritesi, kazan\u0131lan\/kaybedilen backlink) ve companion sekmelerine (\"AI G\u00f6r\u00fcn\u00fcrl\u00fck\", \"Arama Performans\u0131\") h\u0131zl\u0131 eri\u015fim ba\u011flant\u0131lar\u0131.<\/li>\n<li>Grafik bloklar\u0131 art\u0131k paketlenmi\u015f Chart.js (MIT) ile \u00e7izgi\/alan ve s\u00fctun grafi\u011fi olarak \u00e7izilir; JavaScript kapal\u0131yken ya da grafik k\u00fct\u00fcphanesi y\u00fcklenemedi\u011finde eri\u015filebilir tablo g\u00f6r\u00fcn\u00fcm\u00fcne zarif\u00e7e d\u00fc\u015fer.<\/li>\n<li>Panel taraf\u0131 d\u00fczeltme: wp_audit_summary sorgusu art\u0131k var olmayan tracked_keywords.search_volume kolonunu okumaz (SQL hatas\u0131 giderildi).<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>AI Bot Ziyaret Kayd\u0131: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, GoogleOther, Bytespider, Meta-ExternalAgent, CCBot, Amazonbot, Applebot-Extended, bingbot ve MistralAI-User ziyaretleri g\u00fcn + sayfa baz\u0131nda say\u0131l\u0131r; saatte bir SEOYEN paneline g\u00f6nderilir (AI Bot Analiti\u011fi). Bot e\u015fle\u015fmesi yoksa s\u0131f\u0131r ek sorgu.<\/li>\n<li>IndexNow deste\u011fi art\u0131k kendi \"IndexNow\" admin sayfas\u0131nda: yay\u0131nlanan i\u00e7erikler api.indexnow.org adresine an\u0131nda bildirilir (non-blocking); do\u011frulama anahtar\u0131 kullan\u0131c\u0131 taraf\u0131ndan \u00fcretilir (al\u0131nmaz) ve <code>\/{key}.txt<\/code> sanal rotas\u0131yla sunulur. \"Yeni Anahtar \u00dcret\" ve \"Test Bildirimi G\u00f6nder\" aksiyonlar\u0131 eklendi. Varsay\u0131lan kapal\u0131.<\/li>\n<li>Google Instant Indexing (yeni \"Google Indexing\" admin sayfas\u0131): servis hesab\u0131 JSON'u ile kimlik do\u011frulay\u0131p yay\u0131nlanan i\u00e7erik URL'lerini Google Indexing API'sine bildirir (saf openssl\/RS256, vendor k\u00fct\u00fcphane yok). Varsay\u0131lan kapal\u0131.<\/li>\n<li>Ayarlar \u2192 SEO Behavior sekmesine \"AI Botlar\u0131\" b\u00f6l\u00fcm\u00fc: bot ziyaret kayd\u0131 + GPTBot\/ClaudeBot\/PerplexityBot\/Google-Extended\/bingbot i\u00e7in robots.txt izin toggle'lar\u0131.<\/li>\n<li>Panel ba\u011flant\u0131s\u0131 d\u00fczeltmesi: API istemcisi art\u0131k yaln\u0131z X-Seoyen-Key header'\u0131 g\u00f6nderir \u2014 panelin \u00e7ift header (X-API-Key + X-Seoyen-Key) reddi nedeniyle 400 alan t\u00fcm panel \u00e7a\u011fr\u0131lar\u0131 onar\u0131ld\u0131.<\/li>\n<li>G\u00fcnl\u00fck telemetri cron'u art\u0131k panele s\u00fcr\u00fcm + \u00f6zellik durumu (<code>plugin_version<\/code>, <code>indexnow_enabled<\/code>, <code>bot_logging_enabled<\/code>) ping'i atar.<\/li>\n<li>Yeni tablo: <code>{prefix}seoyen_bot_hits<\/code> (30 g\u00fcnl\u00fck yerel tampon; panele g\u00f6nderilen sat\u0131rlar i\u015faretlenir, eski sat\u0131rlar otomatik silinir).<\/li>\n<li>Kar\u015f\u0131lama\/onboarding ekran\u0131: aktivasyon sonras\u0131 tek seferlik y\u00f6nlendirme, panel ba\u011flant\u0131s\u0131 hen\u00fcz kurulmam\u0131\u015fken dashboard'da ad\u0131m ad\u0131m kar\u015f\u0131lama b\u00f6l\u00fcm\u00fc ve kapat\u0131labilir kurulum bildirimi.<\/li>\n<li>Eklenti\u2194panel k\u00f6pr\u00fcs\u00fc sa\u011flamla\u015ft\u0131r\u0131ld\u0131: ping\/aktivasyon el s\u0131k\u0131\u015fmas\u0131na capabilities bildirimi eklendi; panel desteklenmeyen bir aksiyon istedi\u011finde eklenti hata yerine zarif \"desteklenmiyor\" yan\u0131t\u0131 d\u00f6ner.<\/li>\n<li>readme.txt d\u0131\u015f servis beyanlar\u0131 tamamland\u0131: IndexNow ve Google Instant Indexing girdileri eklendi (WordPress.org y\u00f6nergeleri uyumu).<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>WP.org inceleme revizeleri: <code>rest_url()<\/code> ile REST endpoint URL'leri d\u00fczeltildi (hardcoded <code>\/wp-json\/<\/code> kald\u0131r\u0131ld\u0131).<\/li>\n<li><code>register_setting()<\/code> \u00e7a\u011fr\u0131lar\u0131 tip-bazl\u0131 sanitize callback'lerle g\u00fcncellendi (<code>sanitize_text_field<\/code>, <code>sanitize_url<\/code>, <code>absint<\/code>, <code>rest_sanitize_boolean<\/code>).<\/li>\n<li>JSON-LD \u00e7\u0131kt\u0131s\u0131nda <code>&lt;\/script&gt;<\/code> breakout g\u00fcvenlik a\u00e7\u0131\u011f\u0131 kapat\u0131ld\u0131 \u2014 <code>JSON_UNESCAPED_SLASHES<\/code> kald\u0131r\u0131ld\u0131, <code>&lt;\\\/<\/code> replace korumas\u0131 eklendi.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Autofix kapsam\u0131 45 check'ten <strong>57 check'e<\/strong> \u00e7\u0131kar\u0131ld\u0131 \u2014 SEOYEN Panel audit'teki 12 yeni sorun t\u00fcr\u00fc art\u0131k tek t\u0131kla d\u00fczeltilebilir.<\/li>\n<li>5 yeni kay\u0131tl\u0131 check handler'\u0131: <code>content.meta_description_duplicate<\/code>, <code>content.low_word_count<\/code>, <code>content.h1_missing_in_content<\/code>, <code>schema.local_business_missing<\/code>, <code>ai_search.llms_full_missing<\/code> \u2014 panel registry ile plugin handler listesi senkronize edildi.<\/li>\n<li>7 yeni spec-gere\u011fi check handler'\u0131: <code>social_meta.twitter_card_type_missing<\/code>, <code>schema.how_to_missing<\/code>, <code>schema.video_missing<\/code>, <code>schema.review_missing<\/code>, <code>hreflang.html_lang_missing<\/code>, <code>ai_search.claude_bot_allowed<\/code>, <code>ai_search.perplexity_bot_allowed<\/code>.<\/li>\n<li>Schema Markup geni\u015flemesi: <strong>4 yeni builder<\/strong> \u2014 <code>build_howto<\/code> (H3\/H4 + P regex ile ad\u0131m parse), <code>build_video<\/code> (featured image thumbnail + yaz\u0131 bilgileri), <code>build_local_business<\/code> (site bilgileri + override deste\u011fi), <code>build_review<\/code> (rating\/author override ile).<\/li>\n<li>Frontend SEO Output geni\u015flemesi: apple-touch-icon, theme-color, twitter:card (site-level default) ve llms-full.txt virtual serving (<code>\/llms-full.txt<\/code>) art\u0131k plugin taraf\u0131ndan rendering priority 1'de emit edilir.<\/li>\n<li>HTML lang attribute filter: <code>language_attributes<\/code> WP filter'\u0131 \u00fczerinden kullan\u0131c\u0131 taraf\u0131ndan se\u00e7ilen locale uygulan\u0131r (BCP 47 kod do\u011frulamas\u0131 ile).<\/li>\n<li>AI bot allow kurallar\u0131: Claude ve Perplexity bot'lar\u0131 i\u00e7in ayr\u0131 <code>allow<\/code> modu \u2014 \u00f6nceki allow\/block toggle'dan farkl\u0131 olarak iki bot i\u00e7in de idempotent Allow: \/ yaz\u0131m\u0131.<\/li>\n<li>D\u00fc\u015f\u00fck kelime say\u0131s\u0131 (<code>content.low_word_count<\/code>) i\u00e7in AI tabanl\u0131 i\u00e7erik geni\u015fletme handler'\u0131 \u2014 panel AI <code>content-expand<\/code> promptu ile uzat\u0131lm\u0131\u015f i\u00e7eri\u011fi yaz\u0131ya ekler.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Autofix kapsam\u0131 14 check'ten <strong>45 check'e<\/strong> \u00e7\u0131kar\u0131ld\u0131 \u2014 SEOYEN Panel audit'in tespit etti\u011fi \u00e7ok daha geni\u015f bir sorun yelpazesi art\u0131k tek t\u0131kla d\u00fczeltilebilir.<\/li>\n<li>Yeni i\u00e7erik yeniden yazma (rewrite) handler'lar\u0131: ba\u015fl\u0131k \u00e7ok k\u0131sa\/uzun\/duplicate, meta a\u00e7\u0131klama \u00e7ok k\u0131sa\/uzun\/duplicate, H1 \u00e7ok uzun\/duplicate, alt metni \u00e7ok k\u0131sa\/uzun \u2014 her biri SEOYEN Panel'deki AI ile yeni i\u00e7erik \u00fcretir ve uygular.<\/li>\n<li>Schema Markup geni\u015flemesi: <strong>6 yeni builder<\/strong> \u2014 Article, BreadcrumbList, Organization, WebSite (SearchAction dahil), Product (WooCommerce entegrasyonlu), FAQPage (i\u00e7erikten Q&amp;A regex + Gutenberg FAQ block parse). Payload yoksa plugin kendisi \u00fcretir.<\/li>\n<li>Social Meta geni\u015flemesi: og:type, og:url, twitter:title, twitter:description, twitter:image i\u00e7in ayr\u0131 check_key deste\u011fi.<\/li>\n<li>Y\u00f6nlendirme Zinciri (Redirect Chain) \u00e7\u00f6z\u00fcc\u00fc: panel zinciri tespit etti\u011finde plugin ortadaki t\u00fcm redirect'leri pasifle\u015ftirip kaynak \u2192 son hedef tek 301'e d\u00fc\u015f\u00fcr\u00fcr.<\/li>\n<li>K\u0131r\u0131k D\u0131\u015f Link d\u00fczeltme: <code>links.broken_outgoing<\/code> art\u0131k yeni hedef URL geldi\u011finde otomatik 301 y\u00f6nlendirme olu\u015fturur (kay\u0131t <code>broken_backlinks<\/code> origin ile i\u015faretlenir).<\/li>\n<li>AI arama botlar\u0131 y\u00f6netimi: <code>ai_search.gpt_bot_blocked<\/code> ve <code>ai_search.claude_bot_blocked<\/code> check'leri GPTBot, ClaudeBot, anthropic-ai bot'lar\u0131n\u0131 robots.txt extra'ya allow\/block modunda ekler.<\/li>\n<li>Mobil ikon\/theme-color eksiklikleri: <code>mobile.apple_touch_icon_missing<\/code> (site ikonu fallback), <code>mobile.theme_color_missing<\/code> (varsay\u0131lan #8b5cf6) art\u0131k tek t\u0131kla d\u00fczeltilebilir.<\/li>\n<li>Yanl\u0131\u015f noindex kald\u0131rma: <code>crawlability.noindex_wrong<\/code> Yoast\/RankMath\/SEOPress\/native t\u00fcm seviyelerde noindex bayra\u011f\u0131n\u0131 temizler.<\/li>\n<li>\u00c7oklu meta\/title\/H1 tespiti: <code>content.multiple_title<\/code>, <code>content.multiple_meta_desc<\/code>, <code>content.multiple_h1<\/code> \u2014 theme d\u00fczenlemesi gerektiren check'ler i\u00e7in detection-only + T\u00fcrk\u00e7e a\u00e7\u0131klay\u0131c\u0131 hint.<\/li>\n<li>Integration base class'\u0131na <code>set_og_field($post_id, $field, $value)<\/code>, <code>set_twitter_field($post_id, $field, $value)<\/code>, <code>set_title()<\/code> (alias), <code>set_meta_desc()<\/code> (alias) metotlar\u0131 eklendi \u2014 plugin'lere ba\u011f\u0131ms\u0131z genel OG\/Twitter kontrol\u00fc sa\u011flar.<\/li>\n<li>FileManager'a <code>update_robots_ai_bots($action, $bots)<\/code> eklendi \u2014 robots.txt extra k\u0131sm\u0131nda AI bot bloklar\u0131n\u0131 idempotent \u015fekilde g\u00fcnceller (eski blok varsa temizlenir, yenisi yaz\u0131l\u0131r).<\/li>\n<li>RedirectManager'a <code>deactivate_intermediates($chain_urls)<\/code> eklendi \u2014 chain resolver i\u00e7in ortadaki 301'leri soft-delete (is_active=0) olarak i\u015faretler.<\/li>\n<li>SchemaManager builder'lar\u0131 Google Rich Results Test uyumlu @id + mainEntityOfPage yap\u0131s\u0131 kullan\u0131r.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Panel: wp_issue_fixed callback endpoint eklendi \u2014 plugin d\u00fczeltme tamamland\u0131\u011f\u0131nda panel audit_issues tablosunda resolved=1 (veya detection-only skip durumunda muted=1) i\u015faretlenir. Sayfa yenilendi\u011finde d\u00fczeltilen issue'lar listeden kaybolur.<\/li>\n<li>JS: Toplu URL d\u00fczeltme sonras\u0131 her URL sat\u0131r\u0131 \"\u2713 D\u00fczeltildi\" olarak g\u00f6rsel g\u00fcncellenir (ye\u015fil arka plan + disable button). Ba\u015far\u0131s\u0131z URL'ler k\u0131rm\u0131z\u0131 ile i\u015faretlenir.<\/li>\n<li>URL e\u015fle\u015ftirme iyile\u015ftirildi: trailing slash, http\/https, encoding farkl\u0131l\u0131klar\u0131 i\u00e7in \u00e7oklu varyant deneme (findUrlRow helper).<\/li>\n<li>AI hata mesajlar\u0131 iyile\u015ftirildi: \"Yapay zeka servisi \u015fu anda kullan\u0131lam\u0131yor. Birka\u00e7 dakika sonra tekrar deneyin.\" \u2014 HTTP 503 (\u00f6nceki 500\/502 yerine).<\/li>\n<li>CSS: .seoyen-audit-urls li.is-fixed \/ is-failed i\u00e7in g\u00f6rsel stilizasyon.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>AI-only d\u00fczeltme sistemi: Tek T\u0131kla D\u00fczelt art\u0131k ger\u00e7ek yapay zeka ile i\u00e7erik \u00fcretir. Meta a\u00e7\u0131klama, ba\u015fl\u0131k, H1, alt metin, OG, Twitter Card, schema, robots.txt ve llms.txt i\u00e7in tamamen AI tabanl\u0131 \u00fcretim.<\/li>\n<li>Fallback sistemi kald\u0131r\u0131ld\u0131: Yaz\u0131 slug'\u0131ndan, excerpt'ten veya dosya ad\u0131ndan otomatik \u00fcretilen eski \"ak\u0131ll\u0131 fallback\" mant\u0131\u011f\u0131 art\u0131k yok \u2014 payload AI'dan gelmek zorunda, yoksa \"Bu d\u00fczeltme yapay zeka ile i\u00e7erik \u00fcretmeyi gerektirir\" hatas\u0131 verir.<\/li>\n<li>10 yeni AI prompt \u015fablonu: Her autofix check t\u00fcr\u00fc i\u00e7in T\u00fcrk\u00e7e, SEO uyumlu, context-aware prompt.<\/li>\n<li>Yeni panel endpoint: <code>wp_generate_fix<\/code> \u2014 plugin AJAX handler'\u0131 \u00f6nce panel'den AI \u00fcretim ister, d\u00f6nen payload ile d\u00fczeltmeyi uygular.<\/li>\n<li>Context-aware AI \u00fcretim: Her autofix \u00e7a\u011fr\u0131s\u0131 WordPress'ten ilgili verileri (post ba\u015fl\u0131\u011f\u0131, i\u00e7erik \u00f6zeti, attachment meta, featured image, kategoriler, parent post) toplar ve AI'a ona g\u00f6re prompt g\u00f6nderir.<\/li>\n<li>AI kredi sistemi entegrasyonu: Kredi bitti\u011finde \"Yapay Zeka krediniz bitti\" modal'\u0131 g\u00f6sterilir, yenilenme tarihi g\u00f6r\u00fcnt\u00fclenir, i\u015flem yap\u0131lmaz.<\/li>\n<li>Plan gate: Tek T\u0131kla D\u00fczelt, AI Yay\u0131nla, Uygula, y\u00f6nlendirme y\u00f6netimi ve webhook olu\u015fturma gibi yazma aksiyonlar\u0131 yaln\u0131zca Bireysel, Pro ve Enterprise paketlerinde kullan\u0131labilir. \u00dccretsiz paket eklentiyi kurup panel verilerini g\u00f6r\u00fcnt\u00fcleyebilir ama yazma yapamaz.<\/li>\n<li>Quick access check endpoint (<code>wp_quick_access_check<\/code>): Plugin boot s\u0131ras\u0131nda kullan\u0131c\u0131n\u0131n plan ve kredi durumunu panel'den sorgular, 12 saat boyunca cache'ler, UI'\u0131 buna g\u00f6re ayarlar.<\/li>\n<li>Plan banner: \u00dccretsiz paket kullan\u0131c\u0131lar\u0131 i\u00e7in Dashboard ve \u0130\u00e7erik sayfalar\u0131nda bilgilendirme banner'\u0131.<\/li>\n<li>Credit banner: Kredi bitti\u011finde t\u00fcm ilgili sayfalarda yenilenme tarihi ile uyar\u0131 banner'\u0131.<\/li>\n<li>Detection-only check'ler korundu: <code>crawlability.canonical_missing<\/code>, <code>mobile.viewport_missing<\/code>, <code>social_meta.og_image_missing<\/code> ve <code>hreflang.missing<\/code> AI gerektirmez \u2014 WordPress verilerinden (permalink, featured image, WPML\/Polylang) otomatik uygulan\u0131r.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Tek T\u0131kla D\u00fczelt art\u0131k ger\u00e7ekten \u00e7al\u0131\u015f\u0131yor: audit handler'a 7 ak\u0131ll\u0131 fallback eklendi \u2014 payload bo\u015f g\u00f6nderildi\u011finde plugin WordPress verilerinden otomatik meta a\u00e7\u0131klama, alt metin, OG a\u00e7\u0131klama, hreflang vb. \u00fcretir.<\/li>\n<li>Meta ve OG a\u00e7\u0131klama fallback: yaz\u0131 excerpt'i varsa onu, yoksa i\u00e7eri\u011fin ilk 155 karakteri (HTML strip + kelime s\u0131n\u0131r\u0131ndan kesim) kullan\u0131l\u0131r.<\/li>\n<li>Alt metin fallback: attachment ba\u015fl\u0131\u011f\u0131 \u2192 parent post ba\u015fl\u0131\u011f\u0131 \u2192 dosya ad\u0131ndan insanla\u015ft\u0131r\u0131lm\u0131\u015f metin.<\/li>\n<li>Ba\u015fl\u0131k fallback: payload bo\u015fsa yaz\u0131 slug'\u0131ndan insanla\u015ft\u0131r\u0131lm\u0131\u015f ba\u015fl\u0131k \u00fcretilir.<\/li>\n<li>Hreflang ak\u0131ll\u0131 tespit: WPML\/Polylang aktifse alternatif URL'ler otomatik \u00e7ekilir; tek dilli siteler i\u00e7in \"skipped_no_alternates\" (sessiz ba\u015far\u0131) d\u00f6ner \u2014 hata vermez.<\/li>\n<li>URL resolve iyile\u015ftirmesi: query string, fragment, trailing slash, http\/https farkl\u0131l\u0131klar\u0131 art\u0131k otomatik handle ediliyor (get_page_by_path fallback dahil).<\/li>\n<li>Tek T\u0131kla D\u00fczelt butonu art\u0131k issue'daki T\u00dcM affected URL'leri s\u0131rayla d\u00fczeltir (ilk URL yerine). Kart \u00fczerinde canl\u0131 saya\u00e7: \"D\u00fczeltiliyor (3\/8)\u2026\".<\/li>\n<li>K\u0131smi ba\u015far\u0131 durumu: baz\u0131 URL'ler d\u00fczeltilip baz\u0131lar\u0131 hata verirse \"K\u0131smen d\u00fczeltildi (5\/8)\" mesaj\u0131 g\u00f6sterilir.<\/li>\n<li>Global audit fix'leri (viewport\/robots\/llms) URL gerektirmez \u2014 panel URL g\u00f6ndermese bile \u00e7al\u0131\u015f\u0131r.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>403 \"G\u00fcvenlik do\u011frulamas\u0131 ba\u015far\u0131s\u0131z\" hatas\u0131 kal\u0131c\u0131 olarak \u00e7\u00f6z\u00fcld\u00fc: Admin JS dosyalar\u0131 art\u0131k footer yerine header'a y\u00fckleniyor, wp_localize_script ile emit edilen seoyenAdmin objesi inline script bloklar\u0131ndan \u00f6nce haz\u0131r oluyor \u2014 nonce art\u0131k do\u011fru ge\u00e7iyor.<\/li>\n<li>Inline script'lerde ajaxUrl\/nonce de\u011fi\u015fkenleri art\u0131k butona basma an\u0131nda okunuyor (lazy read).<\/li>\n<li>Download endpoint (wp_download_plugin) art\u0131k X-Seoyen-Key header-auth ile de \u00e7al\u0131\u015f\u0131yor \u2014 WP native g\u00fcncelleme ak\u0131\u015f\u0131nda \"Unauthorized\" hatas\u0131 \u00e7\u00f6z\u00fcld\u00fc.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Tek T\u0131kla D\u00fczelt ve Bunu D\u00fczelt butonlar\u0131 d\u00fczeltildi: AJAX handler art\u0131k REST dispatch yerine do\u011frudan Seoyen_Audit_Handler::autofix() \u00e7a\u011f\u0131r\u0131yor (X-Seoyen-Key header beklentisi bypass edildi, admin nonce yeterli).<\/li>\n<li>403 \"Forbidden\" hatas\u0131 d\u00fczeltildi: T\u00fcm seoyen_admin ve seoyen_redirects_action nonce kontrolleri art\u0131k graceful fail veriyor \u2014 kullan\u0131c\u0131ya \"Sayfay\u0131 yenileyip tekrar deneyin\" mesaj\u0131 g\u00f6sterilir (wp_die yerine JSON error).<\/li>\n<li>\"T\u00fcm\u00fc\" sekmesi art\u0131k hem Site Denetimi d\u00fczeltmelerini hem de AI \u00f6nerilerini\/makalelerini yan yana g\u00f6steriyor.<\/li>\n<li>Plugin g\u00fcncelleme sonras\u0131 panel'e otomatik versiyon sync eklendi: upgrader_process_complete sonras\u0131 ve admin_init'te plugin_version mismatch varsa panel'e wp_site_status ping at\u0131l\u0131yor \u2014 \"G\u00fcncelleme mevcut\" badge'i art\u0131k Check Now gerektirmeden kaybolur.<\/li>\n<li>T\u00fcm admin UI tamamen T\u00fcrk\u00e7ele\u015ftirildi: men\u00fc, sekmeler, kartlar, butonlar, bildirimler. ASCII-safe yaz\u0131mlar (baglan, icin, duzelt, vs.) do\u011fru T\u00fcrk\u00e7e karakterlere (ba\u011flan, i\u00e7in, d\u00fczelt) \u00e7evrildi.<\/li>\n<li>Setup wizard \"API key required\" hatas\u0131 d\u00fczeltildi: key \u00f6nce option'a yaz\u0131lmadan explicit olarak test edilir.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added Site Audit Fixes tab in Content Suggestions page: shows up to 14 auto-fixable audit checks pulled from the SEOYEN panel with one-click fix buttons.<\/li>\n<li>Added AI Articles tab in Content Suggestions page: lists completed AI Writer articles from the panel with Publish-to-WP action.<\/li>\n<li>Internal Links page now reads from the live link_opportunities data source; suggestions auto-populate whenever the panel internal-links page is visited.<\/li>\n<li>Fixed setup wizard \"API key required\" error by passing the key explicitly on the activation request instead of relying on the option cache.<\/li>\n<li>Fixed redirect form: source and target URLs accepted as relative paths (<code>\/eski<\/code>, <code>\/yeni<\/code>) and site-local full URLs; no more <code>http:\/\/yeni<\/code> corruption.<\/li>\n<li>Suppressed foreign admin notices on SEOYEN admin pages so the page title area is not polluted by other plugins.<\/li>\n<li>Made Dashboard, Settings, Redirects, and System Status pages use the full content width.<\/li>\n<li>Added WP native update flow with dual-source detection (WordPress.org if the plugin is listed there, SEOYEN panel otherwise).<\/li>\n<li>&hellip;<\/li>\n<\/ul>","raw_excerpt":"One-click WordPress integration for the SEOYEN SEO platform. AI content, internal links, redirects, schema, audit auto-fix, instant indexing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/303622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=303622"}],"author":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tevfikgulep"}],"wp:attachment":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=303622"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=303622"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=303622"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=303622"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=303622"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=303622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}