Title: SEOYEN SEO Platform
Author: Tevfik Gülep
Published: <strong>Ebrel 30, 2026</strong>
Last modified: Est 31, 2026

---

Search plugins

![](https://ps.w.org/seoyen/assets/icon.svg?rev=3519338)

# SEOYEN SEO Platform

 By [Tevfik Gülep](https://profiles.wordpress.org/tevfikgulep/)

[Download](https://downloads.wordpress.org/plugin/seoyen.2.2.2.zip)

 * [Details](https://cor.wordpress.org/plugins/seoyen/#description)
 * [Reviews](https://cor.wordpress.org/plugins/seoyen/#reviews)
 *  [Installation](https://cor.wordpress.org/plugins/seoyen/#installation)
 * [Development](https://cor.wordpress.org/plugins/seoyen/#developers)

 [Support](https://wordpress.org/support/plugin/seoyen/)

## Description

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 — 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.

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.

**Highlights**

 * Publish AI-generated content (articles and paragraphs) from the SEOYEN panel 
   straight to WordPress as drafts, scheduled posts, or published articles.
 * Apply internal link suggestions with a single click. The inserter first tokenizes
   the existing `<a>` elements in your content, then links only the first still-
   unlinked occurrence of the anchor text — so it never writes a link inside an 
   existing link, and never double-links the same phrase.
 * 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.
 * 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).
 * Notify IndexNow (Bing/Microsoft) the moment content is published — optional and
   disabled by default, with a verification key generated inside the plugin.
 * Submit published URLs to the Google Indexing API using your own Google Cloud 
   service-account credentials — optional and disabled by default.
 * Apply AI-generated meta descriptions across Yoast SEO, Rank Math, SEOPress, or
   the built-in native fallback — the plugin detects your active SEO plugin automatically.
 * Set image alt text in bulk, including featured images and media library entries.
 * Manage JSON-LD schema markup per post (append, replace, upsert) and output it
   in a single clean `<script type="application/ld+json">` block.
 * Convert content into social media drafts ready for your editorial workflow.
 * Serve a custom `robots.txt` and `llms.txt` through virtual routes — no file permission
   changes required.
 * Outbound webhook dispatcher with HMAC-SHA256 signing so you can forward activity
   to Zapier, Make, n8n, or your own endpoint.
 * Complete activity log with search, filter, date range, and CSV export.
 * System status page with REST loopback test, active SEO plugin detection, and 
   a debug bundle downloader.

**Instant indexing**

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`/{
key}.txt` route, and Google Instant Indexing authenticates with your own Google 
Cloud service-account JSON over an OAuth2 JWT (RS256) — no third-party libraries
involved.

**SEO plugin integrations**

The plugin talks to existing SEO plugins so there are no conflicts:

 * Yoast SEO (Free and Premium) — meta description, title, canonical, Open Graph.
 * Rank Math — meta description, title, canonical, Open Graph.
 * SEOPress — meta description, title, canonical, Open Graph.
 * Native fallback — if no SEO plugin is active, the plugin outputs standards-compliant
   meta tags itself.

**Dashboard widget**

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.

**Privacy-first**

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.

**SEOYEN account required for AI features**

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.

### External Services

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.

**1. SEOYEN Panel API (required for panel-driven features)**

 * Endpoint: `https://seoyen.com/panel/api/api-platform.php`
 * 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).
 * When: Only after the user enters a SEOYEN API key in **SEOYEN SEO > Settings**
   and completes the setup wizard. The plugin makes no outbound calls on activation
   or before the key is set.
 * 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.
 * Data received: AI-generated content, internal link suggestions, audit fixes, 
   redirect and webhook configurations.
 * Terms of service: https://seoyen.com/sartlar/
 * Privacy policy: https://seoyen.com/gizlilik/

**2. User-configured outbound webhooks (optional)**

 * Endpoints: User-provided URLs entered in the webhook settings.
 * 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.
 * When: Only if you explicitly add at least one webhook endpoint and enable it.
 * Data sent: The event name and a minimal payload describing the event. No credentials
   or user information is included.
 * Terms and privacy: Determined by the third party that owns the webhook endpoint.

**3. WordPress core REST self-call (loopback)**

During the setup wizard the plugin makes a single request to its own `/wp-json/seoyen/
v1/ping` endpoint to verify REST API availability. This is a loopback request to
the same WordPress install and does not leave the server.

**4. IndexNow (optional)**

 * Endpoint: `https://api.indexnow.org/indexnow`
 * What it does: When you enable IndexNow in **SEOYEN SEO > IndexNow** 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.
 * When: Only if you explicitly enable the feature (disabled by default). No request
   is made while the feature is off.
 * 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 `/{key}.txt` route on your own site.
 * Terms of service: https://www.bing.com/indexnow
 * Privacy policy: https://www.microsoft.com/privacy

**5. Google Instant Indexing (optional)**

 * Endpoints: `https://oauth2.googleapis.com/token` and `https://indexing.googleapis.
   com/v3/urlNotifications:publish`
 * 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 — no third-party libraries are involved.
 * When: Only if you explicitly enable the feature and provide your own service-
   account credentials (disabled by default).
 * 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.
 * Terms of service: https://developers.google.com/search/apis
 * Privacy policy: https://policies.google.com/privacy

**6. SEOYEN Panel API — WooCommerce catalogue sync (optional, WooCommerce only)**

 * Endpoint: `https://seoyen.com/panel/api/api-platform.php` (the same panel API
   as item 1).
 * 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 — WooCommerce does not
   update a product’s `post_modified` timestamp when an order reduces stock, so 
   a date-based sync would silently miss it.
 * 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.
 * Data sent: Product and category attributes only — 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 **counts**
   and average rating. Change-journal rows (which product changed, which field, 
   when). Daily order **totals** (aggregate revenue and order count per day) when
   GA4-style commerce reporting is enabled.
 * Data NOT sent: No customer personal data of any kind — 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.
 * Terms of service: https://seoyen.com/sartlar/
 * Privacy policy: https://seoyen.com/gizlilik/

## Screenshots

[⌊Dashboard overview with audit score, organic traffic summary, recent activity 
feed, and quick action cards for publish, redirects, audit, and panel.⌉⌊Dashboard
overview with audit score, organic traffic summary, recent activity feed, and quick
action cards for publish, redirects, audit, and panel.⌉[

Dashboard overview with audit score, organic traffic summary, recent activity feed,
and quick action cards for publish, redirects, audit, and panel.

[⌊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.⌉⌊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.⌉[

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.

[⌊Setup wizard — three-step API key, connect, and verify flow with inline validation.⌉⌊
Setup wizard — three-step API key, connect, and verify flow with inline validation
.⌉[

Setup wizard — three-step API key, connect, and verify flow with inline validation.

[⌊AI content suggestions — list of panel-generated drafts with one-click apply/reject
buttons and a preview of the incoming change.⌉⌊AI content suggestions — list of 
panel-generated drafts with one-click apply/reject buttons and a preview of the 
incoming change.⌉[

AI content suggestions — list of panel-generated drafts with one-click apply/reject
buttons and a preview of the incoming change.

[⌊Activity log with date-range filter, action and result filters, search box, and
CSV export.⌉⌊Activity log with date-range filter, action and result filters, search
box, and CSV export.⌉[

Activity log with date-range filter, action and result filters, search box, and 
CSV export.

[⌊System status page with REST loopback test, active SEO plugin detection, and debug
bundle downloader.⌉⌊System status page with REST loopback test, active SEO plugin
detection, and debug bundle downloader.⌉[

System status page with REST loopback test, active SEO plugin detection, and debug
bundle downloader.

## Installation

 1. Upload the plugin ZIP via **Plugins > Add New > Upload Plugin**, or unzip into `
    wp-content/plugins/seoyen/`.
 2. Activate **SEOYEN SEO Platform** from the Plugins screen.
 3. Go to **SEOYEN SEO > Settings** and paste the API key generated in the SEOYEN panel(
    Settings > Integrations > WordPress Plugin).
 4. Click **Connect to Panel**. The plugin will run a three-step handshake and report
    when the connection is active.
 5. Open the **SEOYEN SEO** top-level menu to explore the dashboard, redirects, internal
    links, content suggestions, activity log, and system status pages.

## FAQ

### Do I need a SEOYEN account?

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.

### Which SEO plugins are supported?

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.

### Can I use this plugin without the SEOYEN panel?

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.

### Does this plugin track users on my site?

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.

### How do redirects work?

Redirects are stored in the custom table `{prefix}seoyen_redirects`. On every public
request the plugin hooks `template_redirect` at priority 1, normalizes the request
URI, looks up the destination, and — if a match is found — issues a `wp_safe_redirect()`
with the configured status code. Hit counts are updated on the `shutdown` hook so
they do not slow down the response.

### Will it conflict with Yoast, Rank Math, or SEOPress?

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.

### Can I remove plugin data on uninstall?

Yes. In **SEOYEN SEO > Settings** there is a “Keep data on uninstall” toggle. When
disabled, uninstalling the plugin drops the custom tables, deletes all `_seoyen_*`
post meta, and removes all `seoyen_*` options. The default is to keep data so you
can reactivate without losing redirects or activity history.

### Is it GPL-compatible?

Yes. SEOYEN SEO Platform is released under GPLv2 or later, the same license as WordPress
core.

### Where do I report bugs or request features?

Please contact support through https://seoyen.com/ or open an issue in the SEOYEN
panel’s help section.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“SEOYEN SEO Platform” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Tevfik Gülep ](https://profiles.wordpress.org/tevfikgulep/)

[Translate “SEOYEN SEO Platform” into your language.](https://translate.wordpress.org/projects/wp-plugins/seoyen)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/seoyen/), check out
the [SVN repository](https://plugins.svn.wordpress.org/seoyen/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/seoyen/) by [RSS](https://plugins.trac.wordpress.org/log/seoyen/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.2.2

 * **“Kopya H1” ve “H1 çok uzun” düzeltmeleri artık gerçekten uygulanabiliyor.**
   Bu iki bulguda “WP ile Uygula” çoğu temada hiçbir şeyi değiştirmiyordu: eklenti
   yalnız yazı içeriğindeki `<h1>` etiketini düzeltebiliyor, oysa temaların çoğu
   görünen başlığı yazı başlığından basıyor. Ölçüldü (28 Ağustos 2026, üç tur): 
   hedef yazıların içeriğinde tek bir `<h1>` yoktu, düzeltme üç turda da sessizce
   atlandı ve aynı bulgu her denetimde geri geldi.
 * **Artık ne olacağı açıkça soruluyor.** İçerikte değiştirilebilecek `<h1>` yoksa
   eklenti sessizce vazgeçmez; panelde çözümün altında **“Yazı başlığını da güncelle”**
   kutusu çıkar. Kutu işaretlenmeden hiçbir şey değişmez.
 * **Kalıcı bağlantınız (adres) değişmez.** Onay verildiğinde yalnız yazı başlığı
   güncellenir; bağlantı adresi (slug) olduğu gibi kalır. Başlığın göründüğü yerler:
   menüler, yazı listeleri ve arama sonuçları.
 * **“Yaptım” yalanı yok.** Başlık güncellemesini WordPress reddederse düzeltme 
   başarılı sayılmaz; sorun denetim listesinde açık kalır.

#### 2.2.1

 * **“Düzelttim” denen meta açıklamalar sayfada gerçekten görünüyor.** Altı düzeltme
   tipi “yazdım” cevabı verip değeri kaydediyor, ama ziyaretçinin gördüğü sayfada
   hiçbir şey değişmiyordu. ÖLÇÜLDÜ (canlı, 28 Ağustos 2026; 18 düzeltme tipi × 
   3 tur): `content.meta_too_long`, `content.meta_too_short`, `content.meta_description_duplicate`
   ve `social_meta.og_description_missing` 3/3 turda sessiz kaldı.
 * **Sebep:** eklenti “bu etiket sayfada zaten var” deyip susuyordu. Temaların çoğu
   kendi `<meta name="description">` etiketini eklentinin sırası gelmeden basar.
   Temasında kendi açıklamasını basan HER sitede aynı sessiz sonuçsuzluk vardı.
 * **Artık:** açıkça kaydettiğiniz bir değer varsa eklenti mevcut etiketi susmak
   yerine DEĞİŞTİRİYOR — sayfa açıklaması, Open Graph açıklaması ve türü, Twitter
   kart türü/başlığı/açıklaması.
 * **Bilerek yapmadıkları:** değer sizin yazdığınız metin değil de özetten türetilmiş
   bir yedekse temaya dokunulmaz; Yoast / Rank Math / SEOPress / AIOSEO kuruluysa
   hiçbir şey değişmez; aynı adlı birden çok etiket varsa yalnız ilki düzeltilir.
 * **`twitter:card` çoğaltılmıyor** — tema (ya da Jetpack gibi bir eklenti) kendi
   kart etiketini basmışsa ikinci, çelişen bir tane daha eklenmiyor. Sınıftaki üç
   çıkış noktasının üçü de aynı sözleşmeye alındı.
 * Ezme yapıldığında da yapılamadığında da sunucu hata günlüğüne saatte en fazla
   bir kez açıklayıcı satır düşer.

#### 2.2.0

 * **Türkçe yönetici ekranında İngilizce kalan on bir etiket çevrildi** — araç adları(
   Meta Açıklama, Alt Metin, Sosyal Medya Dönüştürücü, Paragraf Üretici, Otomatik
   Düzeltme), önem dereceleri (Kritik, Bilgi) ve makale kartı etiketleri (AI Makale,
   Anahtar kelime:, Taslak, Yayında). Aynı ekranda iki dil bir arada görünmüyor 
   artık.
 * Yalnız görünen metinler değişti; ayarlar, kayıtlar ve yazı durumlarının teknik
   değerleri (`draft` / `publish`) aynı kaldı.

#### 2.1.3

 * **“Tek Tıkla Düzelt” artık gerçekten hepsini kapsıyor.** Kart “42 URL etkilendi”
   derken düğme yalnız ekranda gösterilen ilk 5 adresi düzeltiyordu. Düğme artık
   ekrandaki listeye hiç bakmaz: sorunun TÜM uygun adreslerini panelin toplu düzeltme
   motoruna verir.
 * **Tıklamadan önce ne harcayacağınız yazılı olarak söyleniyor** — kaç sayfa işlenecek,
   tahmini kaç kredi gidecek, kalan bakiyeniz ne. Onaylamadan hiçbir kredi harcanmaz.
   Bakiye sınırsızsa rakam yerine “sınırsız” yazar; maliyet hesaplanamıyorsa uydurulmaz,“
   hesaplanamadı” denir ve sayfa sayısı yine söylenir.
 * **Kart, panelin o soruna ait sayfasına bağlantı veriyor** (“Tek tek seçmek için
   panelde aç ”) — hangi sayfayı düzelteceğinize tek tek karar vermek isterseniz
   oradan seçersiniz.
 * **İlerleme dürüst üç kovada gösteriliyor**: hazır · hata · bekliyor. “Bekliyor”
   hata değildir — o adresin düzeltmesi henüz üretilmedi. İstediğiniz an durdurabilirsiniz;
   durdurmak izlemeyi keser, panelde süren üretimi öldürmez ve bu açıkça yazar.
 * Etkilenen adres önizlemesi 5 yerine 20 satır gösteriyor.

#### 2.1.2

 * **Düzelttiğiniz denetim sorunları aktif listeden düşüyor.** Bir sorunu düzeltmenize
   rağmen kart listede duruyordu; hangi işi yapıp hangisini yapmadığınızı ayırt 
   edemiyordunuz. Düzeltilenler artık **“Uygulanmış düzeltmeler”** başlıklı, varsayılan
   olarak kapalı bir bölümde toplanır — kaybolmazlar, sadece yolunuzdan çekilirler.
 * **Bir sorun yeniden ortaya çıkarsa kendiliğinden aktif listeye döner** — arşiv“
   bir daha bakma” listesi değildir; sonraki denetimde aynı kontrol yeniden başarısız
   olursa sorun açık listede yeniden belirir.
 * Uygulanmış düzeltme sayısı başlıkta gösterilir; sayı panelden okunamıyorsa başlık
   sayısız basılır, uydurma rakam gösterilmez.

#### 2.1.1

 * **“Uygulanıyor…” sonsuza kadar durmuyor** — düzeltme ekranı bir sonucu iki saate
   kadar bekleyebiliyordu; geçen süre yoktu, iptal yoktu. Bekleme artık ölçülmüş
   süreye göre: tek düzeltme için 6 dakika, bir sorunun tüm adresleri için toplam
   30 dakika.
 * **Beklerken geçen süre görünüyor** (“42 sn”, “3 dk 07 sn”) ve istediğiniz an **
   İptal** diyebiliyorsunuz. İptal dürüsttür: izleme durur, sunucudaki üretim arka
   planda sürebilir, ama sitenize hiçbir şey yazılmaz — yeniden deneyebilirsiniz.
 * **Süre dolduğunda “başarısız” denmiyor** — düzeltme hâlâ üretiliyor olabilir;
   ekran “sonucu bekleyemedik” der ve ne yapmanız gerektiğini yazar.
 * **“Ağ hatası” yerine sunucunun gerçekten ne dediği yazıyor** — zaman aşımı mı,
   sunucuya ulaşılamıyor mu, beklenmeyen yanıt mı; durum koduyla birlikte. Ham hata
   sayfası kullanıcıya gösterilmez, yalnız geliştirici konsoluna düşer.

#### 2.1.0

 * **WooCommerce mağazanız SEOYEN’e bağlanabiliyor.** Ürün ve kategori kataloğunuz
   panele okunuyor; panel hangi ürünün açıklaması eksik, hangi kategori metinsiz
   gösteriyor. WooCommerce kurulu değilse eklenti bu iş için tek sorgu bile çalıştırmaz.
 * **Stok ve fiyat hareketleri gün içinde yakalanıyor** — yeni “değişim defteri”
   her hareketi kaydeder. Şart oldu: sipariş kaynaklı stok düşümü WooCommerce’te
   ürünün “son düzenlenme” tarihine dokunmaz, yalnız tarihe bakan bir eşitleme ürünün
   tükenmesini kaçırırdı.
 * **Katalog eşitlemesini besleyen dört yeni uç** (ürünler, kategoriler, mağaza 
   durumu, onay). WooCommerce yokken sessizce boş liste dönmez, durumu açıkça bildirir—
   panel “mağaza var, sıfır ürün var” sanıp kataloğu silinmiş saymasın diye.
 * **Üç yeni “Tek Tıkla Düzelt” kalemi**: eksik ürün açıklaması, ince ürün açıklamasını
   genişletme, eksik kategori metni. Genişletmede mağazanın kendi metni korunur.
 * **Sekiz yeni e-ticaret denetim kontrolü** + yönetici menüsünde **“E-Ticaret SEO”
   ekranı** + panelde **toplu ürün SEO optimizasyonu**.
 * **Organik ciro ölçülüyor** — Google Analytics bağlıysa panel e-ticaret metriklerini
   de çekiyor.
 * **Eklentiyi kaldırdığınızda panel haberdar oluyor** — kaldırma bildirimi eski
   bir kimlik başlığıyla gidiyor ve reddediliyordu; site hesabınızda “bağlı” görünmeye
   devam ediyordu.
 * **Toplu düzeltme sırası eklentinin hız sınırına çarpmıyor** — eklenti sınırını
   bildiriyor, panel yavaşlıyor ve sınıra çarparsa geri çekiliyor. Ölçüldü (30 gün):
   bildirim yokken 428 istek reddedilmişti, her biri kredisi zaten harcanmış bir
   düzeltmeydi.
 * **Otopilot istemediğiniz hâlde yayına almıyor** — yayın durumu belirtilmeden 
   başlatılan koşu yazıyı sessizce yayınlıyordu, artık taslak bırakır.
 * **Medya kitaplığında olmayan görsel için “düzelt” düğmesi çıkmıyor** (30 günde
   93 başarısız deneme) · **dört İngilizce yönetici metni Türkçeye çevrildi**.
 * Şema sürümü 1.1.0  1.2.0; güncellemede iki yeni tablo otomatik oluşur, mevcut
   veriler etkilenmez.
 * **Eklenti wordpress.org’da yayımlanmaya hazırlandı** — dizinin kabul etmediği`
   Update URI` başlığı kaldırıldı. Kurulu sitelerde bu turda hiçbir şey değişmez:
   WordPress yalnız daha yüksek sürüm görürse güncelleme önerir, 2.1.0 ise oradaki
   kayıtlı 1.1.0’dan yüksektir.

#### 2.0.11

 * **İçerik ekranındaki “Yenile” düğmesi sunucu reddettiğinde artık sayfayı yenilemiyor.**
   İstek 403 (oturum anahtarı süresi doldu) veya 500 ile dönse bile sayfa yenileniyordu;
   sunucuda hiçbir şey tazelenmemişken aynı bayat öneri listesi “yeni” sanılıyordu.
   Sayfa artık yalnız sunucu tazelediğini söylediğinde yenilenir, aksi hâlde hata
   metni gösterilir. (İç Linkler ekranı 2.0.10’da düzeltilmişti; iki ekran artık
   aynı.)
 * **Rank Math kullanan sitelerde yazı görseli ön yüze ulaşıyor.** Rank Math yazının
   Facebook/Twitter görselini ön yüzde yalnız medya kitaplığı kimliğinden okur; 
   SEOYEN yalnız adresi yazdığı için görsel hiç yayına girmiyordu. Görsel kitaplıkta
   yoksa artık “uygulandı” denmiyor. (Kategori/etiket tarafı 2.0.10’daydı.)
 * **Başarısız görsel yazımının gerçek sebebi bildiriliyor** — her hataya `update_failed`
   yazmak yerine adapter’ın bildirdiği sebep taşınıyor; önceki adapter’ın bayat 
   sebebi bir sonrakine yapışmıyor.
 * **Yayımlanan yazının WordPress kimliği ve adresi panele taşınıyor** — panel yayınlanan
   yazıya geri bağlantı kurabiliyor. Panele ulaşılamazsa yayın etkilenmez.
 * Sürüm numarası aynı zamanda betik/stil önbellek anahtarıdır; `seoyen-page-content.
   js` değiştiği için sürüm yükseltildi — aksi hâlde kurulu siteler eski dosyayı
   önbellekten sunmaya devam ederdi.

#### 2.0.10

 * **“Yenile” düğmesi sunucu reddettiğinde artık sayfayı yenilemiyor.** İstek 403(
   oturum anahtarı süresi doldu) veya 500 ile dönse bile sayfa yenileniyordu; sunucuda
   hiçbir şey tazelenmemişken aynı bayat öneri listesi “yeni” sanılıyordu. Sayfa
   artık yalnız sunucu tazelediğini söylediğinde yenilenir, aksi hâlde hata metni
   gösterilir.
 * **Rank Math kullanan sitelerde kategori/etiket görseli ön yüze ulaşıyor.** Rank
   Math terim görselini ön yüzde yalnız medya kitaplığı kimliğinden okur; SEOYEN
   yalnız adresi yazdığı için görsel hiç yayına girmiyordu. Görsel kitaplıkta yoksa
   artık “uygulandı” denmiyor.
 * **“Fallback Meta Output” ayarı kapatıldığında gerçekten kapanıyor.** WordPress
   kutucuk kaldırıldığında ayarı boş dize olarak saklar; boş dize “açık” sayıldığı
   için meta etiketler basılmaya devam ediyordu. Hiç dokunmamış kurulumlar etkilenmez.
 * **İçerik Botu koşu aşamaları gerçek durumu gösteriyor** — “Güvenlik kontrolü 
   yapılıyor” ve “Yazı birleştiriliyor” aşamaları listede yoktu (ham kod görünüyordu),
   hiç kullanılmayan iki ölü etiket ise duruyordu.
 * **Bot ziyaret sayacı artan değeri kaybetmiyor** — sayaç okunduktan sonra gelen
   ziyaretler de yanlışlıkla “gönderildi” işaretlenebiliyordu.
 * **`<html lang="...">` düzeltmesi resmi WordPress dil paketleriyle çalışıyor**(`
   de_DE_formal`, `pt_PT_ao90`, `nl_NL_formal`, `tr_TR` gibi kodlar reddediliyordu).
   Gerçekten geçersiz girdi hâlâ reddedilir.
 * **apple-touch-icon düzeltmesi adres olmayan metni kabul etmiyor** — düz bir cümlenin
   başına `http://` eklenip kaydediliyor ve “başarılı” deniyordu.
 * **Yedi denetim kusuru artık “Tek Tıkla Düzelt” ile giderilebiliyor**: `og:image`,`
   og:type`, Twitter açıklaması, Twitter görseli, çok uzun görsel alt metni, çok
   uzun H1, eksik video şeması. Bunlar görünüyor ama düzeltilemiyordu.
 * **Eklenti içinden yayımlanan yazı panele bildiriliyor** — durum, kullanım kaydı
   ve rozet güncelleniyor. Panele ulaşılamazsa yayın etkilenmez, ikinci yazı üretilmez.
 * **Düzeltme etiketlerinin tamamı Türkçe ve çeviri yoluna alındı** (55 etiket; 
   14’ü İngilizceden çevrildi). Çeviri kataloğu kodla eşitlendi.
 * Sürüm numarası aynı zamanda betik/stil önbellek anahtarıdır; `seoyen-page-links.
   js` değiştiği için sürüm yükseltildi — aksi hâlde kurulu siteler eski dosyayı
   önbellekten sunmaya devam ederdi.

#### 2.0.9

 * **“Tek Tıkla Düzelt” artık uzun süren yapay zeka üretimlerini de tamamlıyor.**
   Düzeltme önceden panele açılan tek bir isteğin içinde üretiliyordu; o istek 90
   saniyeyi aşamadığı için yavaş bir model seçiliyken düzeltme hiç bitmiyor, ekranda“
   yapay zeka yanıt vermiyor” yazıyordu. Artık üretim panelde arka planda koşuyor
   ve eklenti sonucu aralıklarla soruyor — süre sınırı kalktı.
 * **Yarım kalan düzeltme hakkınızı yakmıyor.** Aylık WordPress eylem hakkı ve yapay
   zeka kredisi, düzeltme gerçekten üretildikten sonra düşüyor; tarayıcı kapansa
   bile sonuç panelde saklı kalıyor.
 * Düzeltme isteği başarısız olduğunda WordPress’e ham sunucu hata metni gönderilmiyor,
   anlaşılır Türkçe mesaj gösteriliyor.
 * Site geneline uygulanan düzeltmeler (llms.txt, tema rengi, yapay zeka botu izinleri)
   panelin dış API ucundan çağrıldığında artık kategori adresiyle birlikte gönderilmiyor—
   eskiden bu istekler reddediliyordu.
 * Eski sürümdeki kurulumlar etkilenmez: arka plan modu yalnız destekleyen eklentiye
   açılır.

#### 2.0.8

 * **“İçerik” menüsü artık “Öneriler”.** Menüde yan yana duran “İçerik” ve “İçerik
   Botu” kalemleri karışıyordu. Asıl sorun benzerlik değildi: o sayfanın yedi sekmesinin
   çoğu (site denetimi düzeltmeleri, meta açıklamalar, alt metinler, şemalar) içerik
   üretmez, mevcut sayfaları düzeltir. Ortak payda “içerik” değil, onay bekleyen
   öneri — sayfa artık öyle adlanıyor. **İçerik Botu’na dokunulmadı**, yalnız sayfa
   başlığı ne yaptığını söylüyor: “İçerik Botu — Otomatik Blog Yazarı”.
 * **Eski yer imleriniz çalışmaya devam ediyor.** Sayfanın adresi değişti (`seoyen-
   content`  `seoyen-suggestions`); eski adrese giden bağlantılar sekme bilgisiyle
   birlikte yenisine yönlendirilir. Bu yönlendirme en az iki minör sürüm boyunca
   kalacak.
 * **Menü sırası kümelendi.** Kalemler artık işe göre gruplu: önce günlük kullanılan
   üretim ekranları (Öneriler, İçerik Botu), sonra site yapısı (İç Linkler, Yönlendirmeler),
   analiz sekmeleri, dizine gönderim (IndexNow, Google Indexing) ve en altta bakım(
   Aktivite, Sistem Durumu, Ayarlar). Kurulumda bir kez açılan Ayarlar, her gün 
   açılan ekranların üstünde durmuyor artık.
 * **SEOYEN sayfaları artık bölümlere ve sekmelere ayrılıyor.** Arama Performansı
   sayfasında üstte “Genel Bakış” bölümü (özet kartlar + tıklama oranı çubuğu), 
   altında Search Console / Sıralamalar / Ziyaretçi sekmeleri var. Önceden her şey
   tek bir dikey listede alt alta diziliyordu. Sekmeler JavaScript gerektirmez.
 * **Eklenti panelden daha eskiyse sayfa yine eksiksiz görünür.** Panelin gönderdiği
   yeni bir kart türünü bu sürüm tanımıyorsa, içindekiler düz liste olarak çizilir—
   veri kaybolmaz, yalnız gruplama sadeleşir ve sayfada bunu söyleyen bir bilgi 
   notu çıkar.
 * **Panel artık hangi sürüme çizdiğini biliyor.** Eklenti her istekte sürümünü,
   dilini ve desteklediği kart sözlüğünün sürümünü bildirir; panel ekranı buna göre
   hazırlar.
 * **Aşırı büyük içerik sayfayı kilitlemiyor.** Bir sayfada çizilecek kart sayısına,
   veri boyutuna ve iç içe geçme derinliğine üst sınır kondu; sınır aşılırsa içerik
   sessizce kaybolmaz, kısaltıldığını söyleyen bir uyarı gösterilir.

#### 2.0.7

 * **AI bot ayarları artık gerçekten yayına giriyor.** Kendi robots.txt metninizi
   yazdıysanız (tam metin modu), SEOYEN’in yönettiği bot kuralları o metnin sonuna
   eklenir. Önceden kendi metniniz varken bot kuralları HİÇ yayınlanmıyordu: Ayarlar’daki
   beş bot anahtarı ile panelden gelen dört bot düzeltmesi kaydediliyor ama çıktıya
   yansımıyordu. Aynı bot iki kez yazılmaz — sizin metninizdeki kural, SEOYEN’in
   yönettiği kuralla değiştirilir.
 * **Bot kuralı kaydedilemezse “yapıldı” denmiyor.** Yazma tutmadığında düzeltme
   artık açıkça hata döndürür; panel kaydı yanlışlıkla “çözüldü” işaretlemez.
 * **`/llms.txt` ve `/llms-full.txt` doğru yanıt veriyor.** Özellik kapalıysa veya
   içerik boşsa artık gövdesiz “200 OK” yerine 404 dönüyor. Kurallar bir kez yenilenmemiş
   kurulumlarda dosyalar adres üzerinden de sunuluyor — daha önce bu kurulumlarda`/
   llms-full.txt` 404 veriyordu. Eklenti devre dışı bırakıldığında bu adresler artık
   sitenin ana sayfasını döndürmüyor.
 * **`llms-full.txt` düzeltmesi yayın anahtarını da açıyor** — içerik yazılıp dosya
   sunulmadan kalmıyor.
 * **robots.txt / llms.txt içeriğiniz artık bozulmuyor.** Site haritası satırındaki`&`
   karakteri `&amp;`‘e çevrilmiyor ve `<https://...>` biçimindeki bağlantı satırları
   silinmiyor.

#### 2.0.6

 * **Konu başlıkları havuzu ikiye ayrıldı.** Sırada bekleyen konular ile daha önce
   yazıya dönüşmüş konular artık ayrı açılır alanlarda; ikisi de kapalı açılır ve
   her birinin başlığında kendi sayısı yazar. Önceden ikisi aynı tabloda karışıyordu:
   15 konunun tamamı kullanılmışken bölüm dolu görünüyor, başlıktaki “0 bekleyen”
   rozetiyle çelişiyordu.
 * **Bekleyen bir konuyu artık kaldırabilirsiniz.** Satırdaki “Kaldır” düğmesi konuyu
   sıradan çıkarır; onay sorulur. Konu SİLİNMEZ — panelinizde kayıtlı kalır, yalnız
   bot bir daha o konuyu seçmez.
 * **Kullanılmış konuda kaldırma yoktur.** Yayımlanmış bir yazının kaynağını sıradan
   çıkarmak üretim geçmişini silerdi; o satırlarda düğme çizilmez, panel de böyle
   bir isteği reddeder.
 * Kaldırma başarısız olursa satır listede kalır ve sebebi yazılır — sahte “kaldırıldı”
   gösterilmez. Panel bu ucu henüz yayımlamamışsa (eski panel) düğme hiç çizilmez,
   ekran bugünkü davranışına düşer.

#### 2.0.5

 * **“Son çalışmalar” artık zamanlanmış koşuları da gösteriyor.** Liste bugüne kadar
   yalnız bu ekrandan ELLE başlatılan koşuları kaydeden yerel günlükten okunuyordu;
   panelde arka planda koşan (zamanlanmış) yazılar hiç görünmüyordu. Kaynak panelin
   koşu defterine taşındı. Her satırda yazının başlığı, botun araştırdığı konu, 
   koşunun durumu, harcanan kredi ve tarih var; yayımlanmış yazının başlığı doğrudan
   yazıya giden bir bağlantıdır.
 * **Harcanan kredi eksikse bunu söylüyoruz.** Eski koşularda alt işlerin (taslak
   planı, güvenlik kontrolü) kaydı tutulmadığı için toplam gerçekte olduğundan düşüktür.
   Böyle satırlarda sayının yanında bir yıldız ve açıklaması çıkar — eksik bir toplam“
   tam” gibi gösterilmez.
 * **Konu başlıkları havuzu ayrı, açılır-kapanır bir bölüm oldu** ve her zaman kapalı
   açılır. İçinde botun sıradaki yazı için seçebileceği konular, durumları (bekliyor/
   kullanıldı), nereden geldikleri ve kullanıldıysa hangi yazıya dönüştükleri listelenir.
   Başlıkta bekleyen konu sayısı görünür.
 * Panel bu iki yeni ucu henüz yayımlamamışsa (eski panel) ekran bugünkü davranışına
   düşer: koşu listesi yerel kayda döner, konu havuzu bölümü hiç çizilmez. Uydurma
   satır gösterilmez.

#### 2.0.4

 * **İçerik Botu ekranı yeniden düzenlendi.** Durum bilgisi (otomatik çalışma, çalışma
   aralığı, son çalıştırma, kredi ve “Üret” düğmesi) artık ekranın üstünde tam genişlikte
   bir şeritte; ayarlar onun altında geniş ekranda iki, çok geniş ekranda üç sütuna
   akıyor. Önceki düzende sol sütunun büyük bölümü boş kalıyordu.
 * **Kategori: “Otomatik — yapay zeka seçsin”.** Yeni kurulumların varsayılanı budur.
   Yapay zeka, yazının konusuna en yakın kategoriyi sitenizin **mevcut** kategorileri
   arasından seçer; bot yeni kategori açmaz, uygun kategori bulunamazsa WordPress
   varsayılanı kullanılır. “WordPress varsayılanı” seçeneği duruyor; daha önce belirli
   bir kategori seçtiyseniz seçiminiz aynen korunur.
 * **Yasaklı kelimeler ve konular artık açılır-kapanır bir bölümde** ve her zaman
   kapalı açılır. Bölümün içinde, sistemin her koşulda engellediği konular yazı 
   olarak listelenir — kendi listenize yalnız bunların dışında engellemek istediklerinizi
   yazarsınız.
 * **Boş kutulara panelin önerdiği başlangıç değerleri yazılır** (marka sesi, yasaklı
   kelimeler, yasaklı konu terimleri). Daha önce kaydettiğiniz bir değer varsa ona
   dokunulmaz.
 * **Tasarım SEOYEN ile hizalandı.** Ekran ham WordPress admin renkleri yerine eklentinin
   kendi tasarım belirteçlerini kullanıyor; marka moru SEOYEN’in ana tonuna (#8b5cf6)
   çekildi ve metin/düğme kontrastları WCAG AA (4.5:1) eşiğine göre ölçülerek ayarlandı.

#### 2.0.3

 * İçerik Botu ayar ekranı 3 alandan 17 alana çıktı. Ayarlar dört başlık altında
   toplandı: **Zamanlama** (otomatik çalıştırma, aralık, üretilen yazının durumu),**
   Yayın** (kategori, yazar, içerik dili, hedef kelime sayısı), **İçerik** (anlatım
   tonu, marka sesi, sabit etiketler, en fazla etiket, yeni açılabilecek etiket,
   liste biçimli yazı oranı) ve **Kalite ve güvenlik** (yasaklı kelimeler, yasaklı
   konu terimleri, yayın için en düşük kalite puanı, yeniden yazdırma eşiği). Bu
   ayarların dokuzu panelde zaten vardı ama eklenti ekranından erişilemiyordu; beşi
   yeni.
 * **Kategori seçimi**: üretilen yazının hangi kategoriye düşeceğini artık siz seçiyorsunuz.
   Liste sitenizin kendi kategorilerinden gelir ve seçim kategori kimliği olarak
   saklanır — bot bu sayede sitenizde kendiliğinden yeni kategori açamaz.
 * **Yazar seçimi**: üretilen yazılar yazarsız kaydediliyordu (post_author=0); yazar
   kutusu boş kalıyor, yazar arşivi oluşmuyordu. Artık yazı yayımlama yetkisi olan
   kullanıcılar arasından bir yazar seçebilirsiniz.
 * Seçili kategori ya da yazar sonradan silinirse yazı sessizce etkilenmez: eklenti
   bunu yayın öncesinde doğrular, WordPress varsayılanına düşer ve durumu aktivite
   günlüğüne yazar.
 * Boş bırakılan sayı alanları artık sıfır olarak kaydedilmiyor; boş kutu “belirtilmedi”
   demektir ve panelin varsayılanı korunur.
 * Kaydettikten sonra alanlar panelin GERÇEKTEN sakladığı değerle tazeleniyor: panel
   bir sayıyı kendi sınırına çekerse ekran artık eski değeri göstermeye devam etmiyor.
 * Önbellek anahtarı: sürüm 2.0.3 oldu (ayar ekranının işaretlemesi, JavaScript 
   ve CSS dosyaları değişti).

#### 2.0.2

 * İçerik Botu kurulumunun “Sitenizi tanıyalım” adımı artık DÜZENLENEBİLİR: niş,
   ton ve hedef kitle alanlarını kendiniz yazıp kaydedebilirsiniz. Önceden bu adım
   salt okunurdu; yanlış çıkarılmış bir profili düzeltmenin tek yolu “Yeniden analiz
   et” demekti, o da aynı verilerle koştuğu için çoğu zaman aynı sonucu üretiyor
   ama her denemede yapay zeka kredisi harcıyordu. Kendi yazdığınız profil kredi
   harcamaz ve sonraki analizler onu ezmez.
 * “Yeniden analiz et” düğmesinin maliyeti artık düğmenin yanında yazıyor; bakiyeniz
   yetmiyorsa düğme uyarı görünümüne geçip kredi yükleme bağlantısı gösteriyor.
 * “Yeniden analiz et” gerçekten yeniden analiz ediyor: panelin tazelik penceresi
   içinde aynı önbelleklenmiş profil geri döndüğü için düğme sessizce etkisiz kalıyordu.
 * Yapay zeka yeni bir profil önerdiğinde kendi yazdığınız metin sessizce değiştirilmiyor;“
   Öneriyi kullan” ve “Benimkini koru” seçenekleri sunuluyor.
 * İçerik Botu sayfasının JavaScript dosyası, ekran adı çeviriye göre kaydığında
   da yükleniyor (ekran kimliği artık WordPress’in kendi döndürdüğü değerden okunuyor).
 * Önbellek anahtarı: sürüm 2.0.2’ye çıkarıldı; 2.0.1’de sürüm sabit kalırken JavaScript
   değiştiği için düzeltmeler tarayıcıya ulaşmıyordu.

#### 2.0.1

 * Önbellek düzeltmesi: yönetim arayüzünün JavaScript ve CSS dosyaları eklenti sürümüyle(`?
   ver=`) sunuluyor; 2.0.0 sürüm numarası sabit kalırken beş JS dosyası değiştiği
   için tarayıcı ve CDN eski dosyaları sunmaya devam ediyordu. Sürüm artırıldı, 
   düzeltilmiş dosyalar artık gerçekten yükleniyor.
 * Kategori/etiket arşivlerinde yapılandırılmış veri kaybı giderildi: sayfada başka
   bir bileşenin (tema/eklenti) `CollectionPage` bloğu varken eklenti KENDİ `@graph`‘
   ının tamamını bastırıyordu — böylece `BreadcrumbList` ve kullanıcının elle yazdığı
   şema (ör. `FAQPage`) da siliniyordu. Artık yalnız yinelenen `CollectionPage` 
   düğümü düşürülür, diğer düğümler basılır.
 * Sosyal kart başlığı tutarlılığı: `og:title` markalı tam başlığı, `twitter:title`
   ise çıplak terim adını yazıyordu. İkisi artık aynı kaynaktan üretilir (elle girilmiş`
   twitter:title`/`og:title` her zaman önceliklidir).
 * `noindex` işaretlenmiş yazı ve terim sayfalarına artık canonical basılmaz — eklentinin
   kendi noindex çıktısı da hesaba katılır (önceden yalnız WordPress’in `wp_robots`
   çıktısı okunuyordu, bu yüzden eklentinin kendi işaretlediği sayfalarda çelişen
   sinyal kalıyordu).
 * Yinelenen etiket koruması artık ölçemediğini biliyor: komşu bir eklenti `wp_head`
   içinde iç içe çıkış tamponu açtığında koruma körleşip yinelenen `description`/`
   og:description` üretiyordu (ölçüldü: 1  2). Bu durum artık tespit edilir ve sunucu
   hata günlüğüne bir kez bildirilir.

#### 2.0.0

 * WordPress 7.1 uyumluluğu doğrulandı (`Tested up to` 7.1’e yükseltildi).
 * Arayüz çevirisi düzeltmesi: eklenti artık kendi `languages/` dizinini `load_plugin_textdomain()`
   ile açıkça yüklüyor. Aynı `seoyen` text domain’ini beyan eden bir tema kuruluyken
   WordPress’in gecikmeli (JIT) çeviri yükleyicisi domain’i tema dizinine çözüyor,
   eklentinin `seoyen-tr_TR.mo` dosyasına hiç bakmıyordu; sonuçta yönetim arayüzü
   çevrilmemiş kalıyordu (“Settings”, “Redirects”). Menüler, ayar etiketleri ve 
   bildirimler artık doğru şekilde Türkçe görünüyor.
 * Belge düzeltmeleri: otomatik düzeltilebilen denetim kontrolü sayısı gerçek değerine
   güncellendi (45  57) ve iç bağlantı ekleyicinin çalışma biçimi doğru anlatıldı(
   DOMDocument değil, mevcut bağlantıları koruyan tokenizasyon).

#### 1.1.0

 * Sunucu-sürümlü companion çerçevesi: panel artık her admin sekmesinin İÇERİĞİNİ“
   blok” listesi olarak gönderir; eklenti bu blokları yalnız bilinen 8 güvenli tiple(
   scorecard, kpi_row, timeseries_chart, bar_chart, table, action_list, notice, 
   text) çizer. **Panele yeni bir veri sekmesi eklendiğinde eklentiyi güncellemeniz
   gerekmez** — sekme otomatik görünür.
 * Yeni companion sekmeleri: **AI Görünürlük** (AI kaynaklı trafik, marka bahsi,
   ses payı, aktif motor + AI bot tarama trafiği + önerilen GEO aksiyonları) ve **
   Arama Performansı** (Search Console tık/gösterim/CTR/pozisyon + günlük trend 
   + en çok tıklanan sorgular + takip edilen kelime sıralamaları + Google Analytics
   özeti).
 * Dashboard widget’ı: panel veri-şekli düzeltmesi + “SEO performansı” bölümü (organik
   trafik, alan otoritesi, kazanılan/kaybedilen backlink) ve companion sekmelerine(“
   AI Görünürlük”, “Arama Performansı”) hızlı erişim bağlantıları.
 * Grafik blokları artık paketlenmiş Chart.js (MIT) ile çizgi/alan ve sütun grafiği
   olarak çizilir; JavaScript kapalıyken ya da grafik kütüphanesi yüklenemediğinde
   erişilebilir tablo görünümüne zarifçe düşer.
 * Panel tarafı düzeltme: wp_audit_summary sorgusu artık var olmayan tracked_keywords.
   search_volume kolonunu okumaz (SQL hatası giderildi).

#### 1.0.13

 * AI Bot Ziyaret Kaydı: 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ün + sayfa bazında sayılır; saatte bir SEOYEN 
   paneline gönderilir (AI Bot Analitiği). Bot eşleşmesi yoksa sıfır ek sorgu.
 * IndexNow desteği artık kendi “IndexNow” admin sayfasında: yayınlanan içerikler
   api.indexnow.org adresine anında bildirilir (non-blocking); doğrulama anahtarı
   kullanıcı tarafından üretilir (alınmaz) ve `/{key}.txt` sanal rotasıyla sunulur.“
   Yeni Anahtar Üret” ve “Test Bildirimi Gönder” aksiyonları eklendi. Varsayılan
   kapalı.
 * Google Instant Indexing (yeni “Google Indexing” admin sayfası): servis hesabı
   JSON’u ile kimlik doğrulayıp yayınlanan içerik URL’lerini Google Indexing API’sine
   bildirir (saf openssl/RS256, vendor kütüphane yok). Varsayılan kapalı.
 * Ayarlar  SEO Behavior sekmesine “AI Botları” bölümü: bot ziyaret kaydı + GPTBot/
   ClaudeBot/PerplexityBot/Google-Extended/bingbot için robots.txt izin toggle’ları.
 * Panel bağlantısı düzeltmesi: API istemcisi artık yalnız X-Seoyen-Key header’ı
   gönderir — panelin çift header (X-API-Key + X-Seoyen-Key) reddi nedeniyle 400
   alan tüm panel çağrıları onarıldı.
 * Günlük telemetri cron’u artık panele sürüm + özellik durumu (`plugin_version`,`
   indexnow_enabled`, `bot_logging_enabled`) ping’i atar.
 * Yeni tablo: `{prefix}seoyen_bot_hits` (30 günlük yerel tampon; panele gönderilen
   satırlar işaretlenir, eski satırlar otomatik silinir).
 * Karşılama/onboarding ekranı: aktivasyon sonrası tek seferlik yönlendirme, panel
   bağlantısı henüz kurulmamışken dashboard’da adım adım karşılama bölümü ve kapatılabilir
   kurulum bildirimi.
 * Eklentipanel köprüsü sağlamlaştırıldı: ping/aktivasyon el sıkışmasına capabilities
   bildirimi eklendi; panel desteklenmeyen bir aksiyon istediğinde eklenti hata 
   yerine zarif “desteklenmiyor” yanıtı döner.
 * readme.txt dış servis beyanları tamamlandı: IndexNow ve Google Instant Indexing
   girdileri eklendi (WordPress.org yönergeleri uyumu).

#### 1.0.12

 * WP.org inceleme revizeleri: `rest_url()` ile REST endpoint URL’leri düzeltildi(
   hardcoded `/wp-json/` kaldırıldı).
 * `register_setting()` çağrıları tip-bazlı sanitize callback’lerle güncellendi (`
   sanitize_text_field`, `sanitize_url`, `absint`, `rest_sanitize_boolean`).
 * JSON-LD çıktısında `</script>` breakout güvenlik açığı kapatıldı — `JSON_UNESCAPED_SLASHES`
   kaldırıldı, `<\/` replace koruması eklendi.

#### 1.0.8

 * Autofix kapsamı 45 check’ten **57 check’e** çıkarıldı — SEOYEN Panel audit’teki
   12 yeni sorun türü artık tek tıkla düzeltilebilir.
 * 5 yeni kayıtlı check handler’ı: `content.meta_description_duplicate`, `content.
   low_word_count`, `content.h1_missing_in_content`, `schema.local_business_missing`,`
   ai_search.llms_full_missing` — panel registry ile plugin handler listesi senkronize
   edildi.
 * 7 yeni spec-gereği check handler’ı: `social_meta.twitter_card_type_missing`, `
   schema.how_to_missing`, `schema.video_missing`, `schema.review_missing`, `hreflang.
   html_lang_missing`, `ai_search.claude_bot_allowed`, `ai_search.perplexity_bot_allowed`.
 * Schema Markup genişlemesi: **4 yeni builder** — `build_howto` (H3/H4 + P regex
   ile adım parse), `build_video` (featured image thumbnail + yazı bilgileri), `
   build_local_business` (site bilgileri + override desteği), `build_review` (rating/
   author override ile).
 * Frontend SEO Output genişlemesi: apple-touch-icon, theme-color, twitter:card (
   site-level default) ve llms-full.txt virtual serving (`/llms-full.txt`) artık
   plugin tarafından rendering priority 1’de emit edilir.
 * HTML lang attribute filter: `language_attributes` WP filter’ı üzerinden kullanıcı
   tarafından seçilen locale uygulanır (BCP 47 kod doğrulaması ile).
 * AI bot allow kuralları: Claude ve Perplexity bot’ları için ayrı `allow` modu —
   önceki allow/block toggle’dan farklı olarak iki bot için de idempotent Allow:/
   yazımı.
 * Düşük kelime sayısı (`content.low_word_count`) için AI tabanlı içerik genişletme
   handler’ı — panel AI `content-expand` promptu ile uzatılmış içeriği yazıya ekler.

#### 1.0.7

 * Autofix kapsamı 14 check’ten **45 check’e** çıkarıldı — SEOYEN Panel audit’in
   tespit ettiği çok daha geniş bir sorun yelpazesi artık tek tıkla düzeltilebilir.
 * Yeni içerik yeniden yazma (rewrite) handler’ları: başlık çok kısa/uzun/duplicate,
   meta açıklama çok kısa/uzun/duplicate, H1 çok uzun/duplicate, alt metni çok kısa/
   uzun — her biri SEOYEN Panel’deki AI ile yeni içerik üretir ve uygular.
 * Schema Markup genişlemesi: **6 yeni builder** — Article, BreadcrumbList, Organization,
   WebSite (SearchAction dahil), Product (WooCommerce entegrasyonlu), FAQPage (içerikten
   Q&A regex + Gutenberg FAQ block parse). Payload yoksa plugin kendisi üretir.
 * Social Meta genişlemesi: og:type, og:url, twitter:title, twitter:description,
   twitter:image için ayrı check_key desteği.
 * Yönlendirme Zinciri (Redirect Chain) çözücü: panel zinciri tespit ettiğinde plugin
   ortadaki tüm redirect’leri pasifleştirip kaynak  son hedef tek 301’e düşürür.
 * Kırık Dış Link düzeltme: `links.broken_outgoing` artık yeni hedef URL geldiğinde
   otomatik 301 yönlendirme oluşturur (kayıt `broken_backlinks` origin ile işaretlenir).
 * AI arama botları yönetimi: `ai_search.gpt_bot_blocked` ve `ai_search.claude_bot_blocked`
   check’leri GPTBot, ClaudeBot, anthropic-ai bot’larını robots.txt extra’ya allow/
   block modunda ekler.
 * Mobil ikon/theme-color eksiklikleri: `mobile.apple_touch_icon_missing` (site 
   ikonu fallback), `mobile.theme_color_missing` (varsayılan #8b5cf6) artık tek 
   tıkla düzeltilebilir.
 * Yanlış noindex kaldırma: `crawlability.noindex_wrong` Yoast/RankMath/SEOPress/
   native tüm seviyelerde noindex bayrağını temizler.
 * Çoklu meta/title/H1 tespiti: `content.multiple_title`, `content.multiple_meta_desc`,`
   content.multiple_h1` — theme düzenlemesi gerektiren check’ler için detection-
   only + Türkçe açıklayıcı hint.
 * Integration base class’ına `set_og_field($post_id, $field, $value)`, `set_twitter_field(
   $post_id, $field, $value)`, `set_title()` (alias), `set_meta_desc()` (alias) 
   metotları eklendi — plugin’lere bağımsız genel OG/Twitter kontrolü sağlar.
 * FileManager’a `update_robots_ai_bots($action, $bots)` eklendi — robots.txt extra
   kısmında AI bot bloklarını idempotent şekilde günceller (eski blok varsa temizlenir,
   yenisi yazılır).
 * RedirectManager’a `deactivate_intermediates($chain_urls)` eklendi — chain resolver
   için ortadaki 301’leri soft-delete (is_active=0) olarak işaretler.
 * SchemaManager builder’ları Google Rich Results Test uyumlu @id + mainEntityOfPage
   yapısı kullanır.

#### 1.0.6

 * Panel: wp_issue_fixed callback endpoint eklendi — plugin düzeltme tamamlandığında
   panel audit_issues tablosunda resolved=1 (veya detection-only skip durumunda 
   muted=1) işaretlenir. Sayfa yenilendiğinde düzeltilen issue’lar listeden kaybolur.
 * JS: Toplu URL düzeltme sonrası her URL satırı “✓ Düzeltildi” olarak görsel güncellenir(
   yeşil arka plan + disable button). Başarısız URL’ler kırmızı ile işaretlenir.
 * URL eşleştirme iyileştirildi: trailing slash, http/https, encoding farklılıkları
   için çoklu varyant deneme (findUrlRow helper).
 * AI hata mesajları iyileştirildi: “Yapay zeka servisi şu anda kullanılamıyor. 
   Birkaç dakika sonra tekrar deneyin.” — HTTP 503 (önceki 500/502 yerine).
 * CSS: .seoyen-audit-urls li.is-fixed / is-failed için görsel stilizasyon.

#### 1.0.5

 * AI-only düzeltme sistemi: Tek Tıkla Düzelt artık gerçek yapay zeka ile içerik
   üretir. Meta açıklama, başlık, H1, alt metin, OG, Twitter Card, schema, robots.
   txt ve llms.txt için tamamen AI tabanlı üretim.
 * Fallback sistemi kaldırıldı: Yazı slug’ından, excerpt’ten veya dosya adından 
   otomatik üretilen eski “akıllı fallback” mantığı artık yok — payload AI’dan gelmek
   zorunda, yoksa “Bu düzeltme yapay zeka ile içerik üretmeyi gerektirir” hatası
   verir.
 * 10 yeni AI prompt şablonu: Her autofix check türü için Türkçe, SEO uyumlu, context-
   aware prompt.
 * Yeni panel endpoint: `wp_generate_fix` — plugin AJAX handler’ı önce panel’den
   AI üretim ister, dönen payload ile düzeltmeyi uygular.
 * Context-aware AI üretim: Her autofix çağrısı WordPress’ten ilgili verileri (post
   başlığı, içerik özeti, attachment meta, featured image, kategoriler, parent post)
   toplar ve AI’a ona göre prompt gönderir.
 * AI kredi sistemi entegrasyonu: Kredi bittiğinde “Yapay Zeka krediniz bitti” modal’ı
   gösterilir, yenilenme tarihi görüntülenir, işlem yapılmaz.
 * Plan gate: Tek Tıkla Düzelt, AI Yayınla, Uygula, yönlendirme yönetimi ve webhook
   oluşturma gibi yazma aksiyonları yalnızca Bireysel, Pro ve Enterprise paketlerinde
   kullanılabilir. Ücretsiz paket eklentiyi kurup panel verilerini görüntüleyebilir
   ama yazma yapamaz.
 * Quick access check endpoint (`wp_quick_access_check`): Plugin boot sırasında 
   kullanıcının plan ve kredi durumunu panel’den sorgular, 12 saat boyunca cache’ler,
   UI’ı buna göre ayarlar.
 * Plan banner: Ücretsiz paket kullanıcıları için Dashboard ve İçerik sayfalarında
   bilgilendirme banner’ı.
 * Credit banner: Kredi bittiğinde tüm ilgili sayfalarda yenilenme tarihi ile uyarı
   banner’ı.
 * Detection-only check’ler korundu: `crawlability.canonical_missing`, `mobile.viewport_missing`,`
   social_meta.og_image_missing` ve `hreflang.missing` AI gerektirmez — WordPress
   verilerinden (permalink, featured image, WPML/Polylang) otomatik uygulanır.

#### 1.0.4

 * Tek Tıkla Düzelt artık gerçekten çalışıyor: audit handler’a 7 akıllı fallback
   eklendi — payload boş gönderildiğinde plugin WordPress verilerinden otomatik 
   meta açıklama, alt metin, OG açıklama, hreflang vb. üretir.
 * Meta ve OG açıklama fallback: yazı excerpt’i varsa onu, yoksa içeriğin ilk 155
   karakteri (HTML strip + kelime sınırından kesim) kullanılır.
 * Alt metin fallback: attachment başlığı  parent post başlığı  dosya adından insanlaştırılmış
   metin.
 * Başlık fallback: payload boşsa yazı slug’ından insanlaştırılmış başlık üretilir.
 * Hreflang akıllı tespit: WPML/Polylang aktifse alternatif URL’ler otomatik çekilir;
   tek dilli siteler için “skipped_no_alternates” (sessiz başarı) döner — hata vermez.
 * URL resolve iyileştirmesi: query string, fragment, trailing slash, http/https
   farklılıkları artık otomatik handle ediliyor (get_page_by_path fallback dahil).
 * Tek Tıkla Düzelt butonu artık issue’daki TÜM affected URL’leri sırayla düzeltir(
   ilk URL yerine). Kart üzerinde canlı sayaç: “Düzeltiliyor (3/8)…”.
 * Kısmi başarı durumu: bazı URL’ler düzeltilip bazıları hata verirse “Kısmen düzeltildi(
   5/8)” mesajı gösterilir.
 * Global audit fix’leri (viewport/robots/llms) URL gerektirmez — panel URL göndermese
   bile çalışır.

#### 1.0.3

 * 403 “Güvenlik doğrulaması başarısız” hatası kalıcı olarak çözüldü: Admin JS dosyaları
   artık footer yerine header’a yükleniyor, wp_localize_script ile emit edilen seoyenAdmin
   objesi inline script bloklarından önce hazır oluyor — nonce artık doğru geçiyor.
 * Inline script’lerde ajaxUrl/nonce değişkenleri artık butona basma anında okunuyor(
   lazy read).
 * Download endpoint (wp_download_plugin) artık X-Seoyen-Key header-auth ile de 
   çalışıyor — WP native güncelleme akışında “Unauthorized” hatası çözüldü.

#### 1.0.2

 * Tek Tıkla Düzelt ve Bunu Düzelt butonları düzeltildi: AJAX handler artık REST
   dispatch yerine doğrudan Seoyen_Audit_Handler::autofix() çağırıyor (X-Seoyen-
   Key header beklentisi bypass edildi, admin nonce yeterli).
 * 403 “Forbidden” hatası düzeltildi: Tüm seoyen_admin ve seoyen_redirects_action
   nonce kontrolleri artık graceful fail veriyor — kullanıcıya “Sayfayı yenileyip
   tekrar deneyin” mesajı gösterilir (wp_die yerine JSON error).
 * “Tümü” sekmesi artık hem Site Denetimi düzeltmelerini hem de AI önerilerini/makalelerini
   yan yana gösteriyor.
 * Plugin güncelleme sonrası panel’e otomatik versiyon sync eklendi: upgrader_process_complete
   sonrası ve admin_init’te plugin_version mismatch varsa panel’e wp_site_status
   ping atılıyor — “Güncelleme mevcut” badge’i artık Check Now gerektirmeden kaybolur.
 * Tüm admin UI tamamen Türkçeleştirildi: menü, sekmeler, kartlar, butonlar, bildirimler.
   ASCII-safe yazımlar (baglan, icin, duzelt, vs.) doğru Türkçe karakterlere (bağlan,
   için, düzelt) çevrildi.
 * Setup wizard “API key required” hatası düzeltildi: key önce option’a yazılmadan
   explicit olarak test edilir.

#### 1.0.1

 * 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.
 * Added AI Articles tab in Content Suggestions page: lists completed AI Writer 
   articles from the panel with Publish-to-WP action.
 * Internal Links page now reads from the live link_opportunities data source; suggestions
   auto-populate whenever the panel internal-links page is visited.
 * Fixed setup wizard “API key required” error by passing the key explicitly on 
   the activation request instead of relying on the option cache.
 * Fixed redirect form: source and target URLs accepted as relative paths (`/eski`,`/
   yeni`) and site-local full URLs; no more `http://yeni` corruption.
 * Suppressed foreign admin notices on SEOYEN admin pages so the page title area
   is not polluted by other plugins.
 * Made Dashboard, Settings, Redirects, and System Status pages use the full content
   width.
 * Added WP native update flow with dual-source detection (WordPress.org if the 
   plugin is listed there, SEOYEN panel otherwise).
 * …

## Meta

 *  Version **2.2.2**
 *  Last updated **3 dydh ago**
 *  Active installations **20+**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/seoyen/)
 * Tags
 * [ai content](https://cor.wordpress.org/plugins/tags/ai-content/)[internal linking](https://cor.wordpress.org/plugins/tags/internal-linking/)
   [redirects](https://cor.wordpress.org/plugins/tags/redirects/)[schema](https://cor.wordpress.org/plugins/tags/schema/)
   [seo](https://cor.wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://cor.wordpress.org/plugins/seoyen/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/seoyen/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/seoyen/reviews/)

## Contributors

 *   [ Tevfik Gülep ](https://profiles.wordpress.org/tevfikgulep/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/seoyen/)