ertunc23 adlı üyeden alıntı:
mesajı görüntüle
İpucu: yapay zeka hidden watermark tuzagina dusmeyin.
33
●2.376
- 25-11-2025, 11:58:53burada bahsettigim seo ile alakali bir konu degil. siralama almak, index aldirmak vs konulari tamamen farkli. benim ozellikle vurguladigim konu, watermark karakterleri sebebiyle ai tarafindan yazilan, genel blog iceriklerinin index alamama veya indexlerin silinmesi konusundaki etki.ertunc23 adlı üyeden alıntı: mesajı görüntüle
- 25-11-2025, 11:59:06Benim siteler kopya konular yüzünden index silinmişti.O zaman ai bu kadar canlı değildi.2018 - 2023 arası her kelimede 1.sayfa 2,3. sıradaydı.Helpful content güncellemesi sonrası 6 ayda indexler sıfırlandı.O günden beri düzelmiyordu bende ai ile tekrardan konuları yeni yeni düzenlemeye başladım.index almayan konular index almaya başladı.obisa adlı üyeden alıntı: mesajı görüntüle
- 25-11-2025, 14:55:05hepsinde var. burada ve burada non-unicode karakterlerin bir kismi listelenmis. basit bir apostrof (') karakterinin bile birden fazla yazilisi var. insan gozuyle hepsi ayni olsa da, bilgisayar dilinde hepsi farkli, buradan yakaliyor google.Sceptre adlı üyeden alıntı: mesajı görüntüle
yazinizi test etmek farkli toollar kullanin. her tool, her karakteri yakalayamayabilir. asagida bu isi yapan birkac siteyi listeledim.
https://www.soscisurvey.de/tools/view-chars.php
https://originality.ai/blog/invisibl...tector-remover
https://invisiblecharacterviewer.com/
https://cleanpaste.site/
https://www.agenticworkers.com/hidde...acter-detector
https://www.gptwatermark.com/ - 25-11-2025, 15:24:01+1Sceptre adlı üyeden alıntı: mesajı görüntüle
konu sahibi arkadaş güzel bir şeyler yakalamaya çalışmış ama;
benim aldığım çıktılarda da unicode olmayan karakter yok.... Evet ' karakteri farklı şekilde gösterilebilir ama ben metin içine ' araması yapıyorum ve buluyor o zaman sorun yok demektir - 25-11-2025, 15:35:55
import { normalize } from "unicode-normalizer"; const charMap = { 'A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G','H':'H','I':'I','J':'J','K':'K','L':'L','M':'M','N':'N','O':'O','P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V','W':'W','X':'X','Y':'Y','Z':'Z', 'a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g','h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o','p':'p','q':'q','r':'r','s':'s','t':'t','u':'u','v':'v','w':'w','x':'x','y':'y','z':'z', '𝐀':'A','𝐁':'B','𝐂':'C','𝐃':'D','𝐄':'E','𝐅':'F','𝐆':'G','𝐇':'H','𝐈':'I','𝐉':'J','𝐊':'K','𝐋':'L','𝐌':'M','𝐍':'N','𝐎':'O','𝐏':'P','𝐐':'Q','𝐑':'R','𝐒':'S','𝐓':'T','𝐔':'U','𝐕':'V','𝐖':'W','𝐗':'X','𝐘':'Y','𝐙':'Z', '𝐚':'a','𝐛':'b','𝐜':'c','𝐝':'d','𝐞':'e','𝐟':'f','𝐠':'g','𝐡':'h','𝐢':'i','𝐣':'j','𝐤':'k','𝐥':'l','𝐦':'m','𝐧':'n','𝐨':'o','𝐩':'p','𝐪':'q','𝐫':'r','𝐬':'s','𝐭':'t','𝐮':'u','𝐯':'v','𝐰':'w','𝐱':'x','𝐲':'y','𝐳':'z' }; export function sanitize(text) { text = normalize(text, "NFKC"); // CharMap dönüşümü text = text.split('').map(c => charMap[c] || c).join(''); // Zero-width / invisible text = text.replace(/[\u200B-\u200F\uFEFF]/g, ''); text = text.replace(/[\u2000-\u200A\u202F]/g, ' '); // Kontrol karakterleri text = text.replace(/[\x00-\x1F\x7F]/g, ''); // Fazla boşluk text = text.replace(/\s+/g, ' ').trim(); return text; }node.js de tüm sitede yer alan içerikleri temizletebilirsiniz böyle db de yer alan, php versiyonuda başka arkadaş yapabilir,
- Yalnızca standart ASCII ve temel UTF-8 karakterleri kullan.
- Matematiksel, italik, kalın Unicode veya fullwidth karakterler kullanma.
- Zero-width, hair space, thin space veya standart olmayan boşlukları kaldır.
- Her karakter temiz olmalı ve NFKC ile tamamen normalleştirilebilir olmalı.
- Çıktı okunabilir, sansasyonel ve tabloid gazete gibi çarpıcı olmalı.
- Şiirsel, akademik veya aşırı resmi üsluptan kaçın.
- İçerik konusu : r10.net nasıl bir site bana detaylı anlatır mısın?
bu promptla bir deneyin bakalım halen veriyor mu birlikte test edelim - 25-11-2025, 16:07:11ben biraz daha takintili davrandim, daha detayli bir class yazdim laravel icin.
<?php namespace App\Services; use Illuminate\Support\Facades\Log; class ContentSanitizer { /** * ana temizleme metodu - agresif yaklasim */ public static function sanitize(string $content): string { // control karakterleri temizle (newline/tab/space haric) $content = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/u', '', $content); // kapsamli zero-width ve gorunmez karakter temizligi $content = self::removeInvisibleCharacters($content); // format karakterleri (direction marks, vb.) $content = self::removeFormatCharacters($content); // mathematical alphanumeric variants (A vs 𝐀 vs 𝐴 vs 𝑨) $content = self::normalizeMathematicalAlphanumerics($content); // fullwidth/halfwidth karakter normalizasyonu (A → A) $content = self::normalizeFullwidthCharacters($content); // exotic bosluklari temizle $content = self::normalizeSpaces($content); // em-dash ve en-dash temizligi $content = str_replace(['', ''], '-', $content); // fancy quoteslari normal quotesa cevir $content = str_replace(['\'', '\'', '"', '"'], ["'", "'", '"', '"'], $content); // ardisik bosluklari temizle $content = preg_replace('/[ \t]+/', ' ', $content); $content = preg_replace('/\n{3,}/', "\n\n", $content); // basta ve sonda bosluk kalmasin $content = trim($content); return $content; } /** * xero-width ve gorunmez karakterleri temizle. unicode ranges: U+200B - U+200F, U+202A - U+202E, U+FEFF, vs. */ private static function removeInvisibleCharacters(string $content): string { // zero-width characters $patterns = [ '/\x{200B}/u', // zero-width space '/\x{200C}/u', // zero-width non-joiner '/\x{200D}/u', // zero-width joiner '/\x{200E}/u', // left-to-right mark '/\x{200F}/u', // right-to-left mark '/\x{202A}/u', // left-to-right embedding '/\x{202B}/u', // right-to-left embedding '/\x{202C}/u', // Pop directional formatting '/\x{202D}/u', // left-to-right override '/\x{202E}/u', // right-to-left override '/\x{2060}/u', // word joiner '/\x{2061}/u', // function application '/\x{2062}/u', // invisible times '/\x{2063}/u', // invisible separator '/\x{2064}/u', // invisible plus '/\x{206A}/u', // inhibit symmetric swapping '/\x{206B}/u', // activate symmetric swapping '/\x{206C}/u', // inhibit arabic form shaping '/\x{206D}/u', // activate arabic form shaping '/\x{206E}/u', // national digit shapes '/\x{206F}/u', // nominal digit shapes '/\x{FEFF}/u', // zero-width no-break space (BOM) '/\x{FFF9}/u', // interlinear annotation anchor '/\x{FFFA}/u', // interlinear annotation separator '/\x{FFFB}/u', // interlinear annotation terminator '/\x{180E}/u', // mongolian vowel separator '/\x{061C}/u', // arabic letter mark '/\x{17B4}/u', // khmer vowel inherent Aq '/\x{17B5}/u', // khmer vowel inherent Aa ]; foreach ($patterns as $pattern) { $content = preg_replace($pattern, '', $content); } return $content; } /** * format karakterlerinide temizle */ private static function removeFormatCharacters(string $content): string { // unicode category: Cf (format characters) $content = preg_replace('/\p{Cf}/u', '', $content); return $content; } /** * mathematical alphanumeric symbols normalize et */ private static function normalizeMathematicalAlphanumerics(string $content): string { // mathematical bold (𝐀-𝐙, 𝐚-𝐳, 𝟎-𝟗) $content = preg_replace('/[\x{1D400}-\x{1D7FF}]/u', '', $content); // Circled, squared, parenthesized variants $content = preg_replace('/[\x{2460}-\x{24FF}]/u', '', $content); // enclosed alphanumerics $content = preg_replace('/[\x{1F100}-\x{1F1FF}]/u', '', $content); // enclosed alphanumeric supplement return $content; } /** * fullwidth ve halfwidth karakterleri normalize et */ private static function normalizeFullwidthCharacters(string $content): string { // fullwidth ascii variants (U+FF00 - U+FFEF). bunlari normal ascii'ye cevirmek yerine kaldiralim (potansiyel watermark) $content = preg_replace('/[\x{FF00}-\x{FFEF}]/u', '', $content); return $content; } /** * exotic space karakteleri normal space cevir */ private static function normalizeSpaces(string $content): string { $exoticSpaces = [ '\x{00A0}', // non-breaking space '\x{1680}', // ogham space mark '\x{2000}', // nn quad '\x{2001}', // mm quad '\x{2002}', // nn space '\x{2003}', // mm space '\x{2004}', // three-per-em space '\x{2005}', // four-per-em space '\x{2006}', // six-per-em space '\x{2007}', // figure space '\x{2008}', // punctuation space '\x{2009}', // thin space '\x{200A}', // hair space '\x{202F}', // narrow no-break space '\x{205F}', // medium mathematical space '\x{3000}', // ideographic space ]; foreach ($exoticSpaces as $space) { $content = preg_replace('/' . $space . '/u', ' ', $content); } return $content; } /** * icerik kalite kontrolu */ public static function validate(string $content): array { $issues = []; // kelime sayisi kontrolu $wordCount = str_word_count($content); if ($wordCount < 100) { $issues[] = "Content too short: {$wordCount} words (minimum 150 expected)"; } elseif ($wordCount > 250) { $issues[] = "Content too long: {$wordCount} words (maximum 200 expected)"; } // em-dash kontrolu $emDashCount = substr_count($content, '') + substr_count($content, ''); if ($emDashCount > 2) { $issues[] = "Too many em-dashes: {$emDashCount} (maximum 2 allowed)"; } // cumle uzunlugu kontrolu $sentences = preg_split('/[.!?]+/', $content, -1, PREG_SPLIT_NO_EMPTY); foreach ($sentences as $index => $sentence) { $words = str_word_count(trim($sentence)); if ($words > 25) { $preview = substr(trim($sentence), 0, 50) . '...'; $issues[] = "Sentence #{$index} too long: {$words} words - \"{$preview}\""; } } // generic llm pattern kontrolu $genericPatterns = [ 'it is important to note', 'it\'s important to note', 'furthermore', 'moreover', 'in conclusion', 'to summarize', 'in summary', 'as previously mentioned', 'it should be noted', 'one should consider', 'it\'s worth noting', ]; $contentLower = strtolower($content); foreach ($genericPatterns as $pattern) { if (stripos($contentLower, $pattern) !== false) { $issues[] = "Generic AI phrase detected: \"{$pattern}\""; } } // ellipsis kontrolu $ellipsisCount = substr_count($content, ' ') + substr_count($content, '...'); if ($ellipsisCount > 2) { $issues[] = "Too many ellipsis: {$ellipsisCount} (use sparingly)"; } return $issues; } /** * sanitize ve validate'i birlikte calistir */ public static function sanitizeAndValidate(string $content, ?string $entityId = null): array { $original = $content; $sanitized = self::sanitize($content); $issues = self::validate($sanitized); // karakter degisikliklerini logla. bak bakalim ne kadar degisiklik yapmisiz. $removedChars = strlen($original) - strlen($sanitized); if ($removedChars > 0) { Log::info('Hidden characters removed from content', [ 'entity_id' => $entityId, 'removed_char_count' => $removedChars, 'original_length' => strlen($original), 'sanitized_length' => strlen($sanitized), ]); } if (!empty($issues)) { Log::warning('Content quality issues detected', [ 'entity_id' => $entityId, 'issues' => $issues, 'word_count' => str_word_count($sanitized), ]); } return [ 'content' => $sanitized, 'issues' => $issues, 'word_count' => str_word_count($sanitized), 'removed_chars' => $removedChars, ]; } } // kullanmak icin $sanitized = ContentSanitizer::sanitizeAndValidate($trim_content, $entity->id); $content = $sanitized['content'];artik tertemiz bir content var elimizde. - 25-11-2025, 17:39:10Analog adlı üyeden alıntı: mesajı görüntüle
Verdiğiniz araçların hiçbirinde gizli karakter görünmüyor