{"id":45345,"date":"2026-10-23T21:00:34","date_gmt":"2026-10-23T18:00:34","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/"},"modified":"2026-10-23T21:00:34","modified_gmt":"2026-10-23T18:00:34","slug":"bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/","title":{"rendered":"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi"},"content":{"rendered":"<h2>Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi<\/h2>\n<p>Bluesky&#8217;de veri \u00e7ekme ihtiyac\u0131n\u0131z m\u0131 var? Belki de pop\u00fcler g\u00f6nderileri analiz etmek, hashtag trendlerini takip etmek veya rakip analizleri yapmak istiyorsunuz. Ancak bu s\u00fcreci nas\u0131l ba\u015flataca\u011f\u0131n\u0131z\u0131 bilmiyor olabilirsiniz. Bu rehber, Bluesky&#8217;nin resmi AT Protocol API&#8217;sini kullanarak g\u00f6nderileri, hashtagleri ve takip\u00e7i listelerini nas\u0131l \u00e7ekece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacak. Teknik terimleri basitle\u015ftirerek, kod \u00f6rnekleriyle destekleyerek ve ger\u00e7ek d\u00fcnya senaryolar\u0131n\u0131 ele alarak bu karma\u015f\u0131k konuyu sizin i\u00e7in anla\u015f\u0131l\u0131r hale getirece\u011fiz. Haz\u0131rsan\u0131z, veri madencili\u011fi yolculu\u011fumuza ba\u015flayal\u0131m!<\/p>\n<h2>Neden Bluesky Verilerini \u00c7ekmeliyiz? Ger\u00e7ek D\u00fcnya Senaryolar\u0131<\/h2>\n<p>Bluesky, son zamanlar\u0131n dikkat \u00e7eken sosyal medya platformlar\u0131ndan biri. Geleneksel platformlara alternatif olarak merkeziyetsiz bir yap\u0131 sunmas\u0131, kullan\u0131c\u0131lar\u0131n verileri \u00fczerinde daha fazla kontrol sahibi olmas\u0131n\u0131 sa\u011flamas\u0131 gibi \u00f6zellikleriyle \u00f6ne \u00e7\u0131k\u0131yor. Peki, bu platformdaki verileri \u00e7ekmek neden bu kadar \u00f6nemli hale geldi? Bunun birka\u00e7 temel nedeni var. \u00d6ncelikle, pazarlama ve marka bilinirli\u011fi a\u00e7\u0131s\u0131ndan Bluesky&#8217;deki trendleri ve kullan\u0131c\u0131 etkile\u015fimlerini anlamak, hedef kitleye daha etkili ula\u015fman\u0131n yollar\u0131n\u0131 a\u00e7abilir. \u00d6rne\u011fin, belirli bir \u00fcr\u00fcn veya hizmetle ilgili konu\u015fulan konular\u0131, kullan\u0131lan hashtagleri ve en etkili kullan\u0131c\u0131lar\u0131 belirleyerek pazarlama stratejilerinizi optimize edebilirsiniz. Bir e-ticaret \u015firketi d\u00fc\u015f\u00fcn\u00fcn; yeni bir \u00fcr\u00fcn lansman\u0131 yapacaklar. Bluesky&#8217;de bu \u00fcr\u00fcn kategorisiyle ilgili hangi hashtaglerin pop\u00fcler oldu\u011funu, hangi influencer&#8217;lar\u0131n bu alanda aktif oldu\u011funu ve kullan\u0131c\u0131lar\u0131n genel olarak ne t\u00fcr yorumlar yapt\u0131klar\u0131n\u0131 bilmek, lansman kampanyalar\u0131n\u0131n ba\u015far\u0131s\u0131n\u0131 do\u011frudan etkileyebilir. Bu verileri \u00e7ekerek, rakip analizleri yapabilir, sekt\u00f6rdeki bo\u015fluklar\u0131 tespit edebilir ve kendi stratejilerinizi bu do\u011frultuda \u015fekillendirebilirsiniz.<\/p>\n<p>Bir di\u011fer \u00f6nemli senaryo ise ara\u015ft\u0131rmac\u0131lar ve geli\u015ftiriciler i\u00e7in. Bluesky&#8217;nin sundu\u011fu merkeziyetsiz yap\u0131, sosyal a\u011f analizleri, duygu analizi (sentiment analysis) veya topluluk dinamiklerini anlamak isteyen ara\u015ft\u0131rmac\u0131lar i\u00e7in e\u015fsiz bir veri kayna\u011f\u0131 sunabilir. \u00d6rne\u011fin, bir akademisyen, belirli bir sosyal veya politik konu hakk\u0131ndaki tart\u0131\u015fmalar\u0131n nas\u0131l yay\u0131ld\u0131\u011f\u0131n\u0131, hangi arg\u00fcmanlar\u0131n daha \u00e7ok ilgi g\u00f6rd\u00fc\u011f\u00fcn\u00fc ve bu tart\u0131\u015fmalara kimlerin \u00f6nc\u00fcl\u00fck etti\u011fini incelemek isteyebilir. AT Protocol API arac\u0131l\u0131\u011f\u0131yla elde edilen ham veriler, bu t\u00fcr derinlemesine analizler i\u00e7in temel olu\u015fturur. Geli\u015ftiriciler ise bu API&#8217;yi kullanarak Bluesky ile entegre \u00e7al\u0131\u015fan yeni uygulamalar veya ara\u00e7lar geli\u015ftirebilirler. \u00d6rne\u011fin, kullan\u0131c\u0131lar\u0131n kendi g\u00f6nderilerini veya belirli hashtagleri takip etmelerini sa\u011flayan bir mobil uygulama veya bir web tabanl\u0131 analiz paneli olu\u015fturulabilir. Bu t\u00fcr projeler, Bluesky ekosistemini zenginle\u015ftirirken ayn\u0131 zamanda platformun daha geni\u015f kitlelere ula\u015fmas\u0131na da yard\u0131mc\u0131 olur. K\u0131sacas\u0131, Bluesky verilerini \u00e7ekmek sadece teknik bir egzersiz de\u011fil, ayn\u0131 zamanda stratejik kararlar almak, yenilik\u00e7i \u00e7\u00f6z\u00fcmler \u00fcretmek ve toplumsal e\u011filimleri anlamak i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h2>AT Protocol API&#8217;nin Temelleri: Bluesky&#8217;nin Arka Plan\u0131<\/h2>\n<p>Bluesky&#8217;nin alt\u0131nda yatan teknoloji, yani AT Protocol (Authenticated Transfer Protocol), \u00f6ncelikle merkeziyetsiz sosyal a\u011flar i\u00e7in tasarlanm\u0131\u015f bir ileti\u015fim protokol\u00fcd\u00fcr. Bu protokol\u00fcn temel amac\u0131, kullan\u0131c\u0131lar\u0131n kendi verileri \u00fczerinde tam kontrol sahibi olmalar\u0131n\u0131 sa\u011flamak ve farkl\u0131 sosyal a\u011f uygulamalar\u0131n\u0131n birbiriyle etkile\u015fim kurabilmesine olanak tan\u0131makt\u0131r. Geleneksel sosyal medya platformlar\u0131nda verileriniz o platformun sunucular\u0131nda saklan\u0131r ve platformun kurallar\u0131na tabidir. AT Protocol ise verilerinizi sizin kontrol\u00fcn\u00fczdeki bir &#8220;data store&#8221;da (veri deposu) saklaman\u0131za imkan tan\u0131r ve bu verileri farkl\u0131 istemciler (client) arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir k\u0131lar. Bluesky, bu protokol\u00fcn ilk ve en bilinen uygulamas\u0131d\u0131r. API (Application Programming Interface &#8211; Uygulama Programlama Aray\u00fcz\u00fc), yaz\u0131l\u0131mlar\u0131n birbirleriyle ileti\u015fim kurmas\u0131n\u0131 sa\u011flayan bir k\u00f6pr\u00fcd\u00fcr. AT Protocol API de Bluesky&#8217;nin verilerine programatik olarak eri\u015fim sa\u011flamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Bu API ile etkile\u015fim kurarken, genellikle HTTP istekleri g\u00f6ndererek ve JSON (JavaScript Object Notation) format\u0131nda yan\u0131tlar alarak \u00e7al\u0131\u015f\u0131r\u0131z. JSON, veriyi yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde temsil etmek i\u00e7in kullan\u0131lan hafif ve yayg\u0131n bir formatt\u0131r. AT Protocol API&#8217;nin temelinde &#8220;Composed&#8221; (bile\u015fen) ad\u0131 verilen bir yap\u0131 bulunur. Bu bile\u015fenler, Bluesky&#8217;deki \u00e7e\u015fitli eylemleri ve veri t\u00fcrlerini temsil eder. \u00d6rne\u011fin, bir g\u00f6nderi olu\u015fturmak, bir g\u00f6nderiyi be\u011fenmek, bir kullan\u0131c\u0131y\u0131 takip etmek veya bir kullan\u0131c\u0131n\u0131n profilini almak gibi eylemler belirli bile\u015fenler arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. API&#8217;yi kullanabilmek i\u00e7in \u00f6ncelikle bir kimlik do\u011frulama (authentication) s\u00fcrecinden ge\u00e7meniz gerekebilir. Bu genellikle bir API anahtar\u0131 (API key) veya bir eri\u015fim jetonu (access token) ile yap\u0131l\u0131r. Bluesky&#8217;nin API&#8217;si, geli\u015ftiricilerin platformun sundu\u011fu zengin veri setine eri\u015fmesini ve bu verileri kendi uygulamalar\u0131nda kullanmas\u0131n\u0131 sa\u011flar. Bu protokol\u00fcn merkeziyetsiz do\u011fas\u0131, API&#8217;nin de daha a\u00e7\u0131k ve eri\u015filebilir olmas\u0131n\u0131 te\u015fvik eder. Yani, bir kez AT Protocol&#8217;\u00fcn \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 anlad\u0131\u011f\u0131n\u0131zda, sadece Bluesky de\u011fil, bu protokol\u00fc kullanan di\u011fer merkeziyetsiz uygulamalar\u0131n verilerine de benzer y\u00f6ntemlerle eri\u015febilirsiniz. Bu, gelecekteki web uygulamalar\u0131 i\u00e7in b\u00fcy\u00fck bir potansiyel ta\u015f\u0131maktad\u0131r.<\/p>\n<h2>Gerekli Ara\u00e7lar ve \u00d6n Haz\u0131rl\u0131klar<\/h2>\n<p>Bluesky API ile \u00e7al\u0131\u015fmaya ba\u015flamadan \u00f6nce, baz\u0131 temel ara\u00e7lara ve bilgilere sahip olman\u0131z gerekmektedir. \u0130lk olarak, programlama bilgisine ihtiyac\u0131n\u0131z olacak. Python, JavaScript (Node.js ile), Ruby veya Go gibi pop\u00fcler programlama dillerinden herhangi birini biliyor olman\u0131z, API isteklerini g\u00f6ndermenizi ve al\u0131nan verileri i\u015flemenizi kolayla\u015ft\u0131racakt\u0131r. \u00d6zellikle Python, veri bilimi ve web scraping i\u00e7in sundu\u011fu zengin k\u00fct\u00fcphaneler (\u00f6rne\u011fin, <code>requests<\/code> ve <code>json<\/code>) nedeniyle bu t\u00fcr g\u00f6revler i\u00e7in s\u0131kl\u0131kla tercih edilir. E\u011fer JavaScript ile daha rahatsan\u0131z, Node.js ortam\u0131nda <code>axios<\/code> veya <code>node-fetch<\/code> gibi k\u00fct\u00fcphanelerle de benzer i\u015flemleri yapabilirsiniz.<\/p>\n<p>\u0130kinci olarak, API&#8217;ye eri\u015fim i\u00e7in gerekli olan kimlik bilgilerini edinmeniz gerekecektir. Bluesky&#8217;nin AT Protocol API&#8217;sine eri\u015fim genellikle bir API anahtar\u0131 veya bir kullan\u0131c\u0131 hesab\u0131 \u00fczerinden ger\u00e7ekle\u015ftirilir. Geli\u015ftirici dok\u00fcmantasyonunu inceleyerek g\u00fcncel kimlik do\u011frulama y\u00f6ntemlerini \u00f6\u011frenmeniz \u00f6nemlidir. Bu kimlik bilgileri, g\u00f6nderdi\u011finiz her istekte kimli\u011finizi do\u011frulamak ve yetkilendirilmi\u015f oldu\u011funuzu kan\u0131tlamak i\u00e7in kullan\u0131l\u0131r. Ayr\u0131ca, API&#8217;nin sundu\u011fu u\u00e7 noktalar\u0131 (endpoints) ve bu u\u00e7 noktalara g\u00f6nderilecek parametreleri bilmeniz gerekmektedir. Bluesky&#8217;nin resmi geli\u015ftirici belgeleri, hangi u\u00e7 noktan\u0131n hangi veriyi \u00e7ekti\u011fini ve bu u\u00e7 noktalara hangi parametrelerin g\u00f6nderilmesi gerekti\u011fini detayl\u0131 bir \u015fekilde a\u00e7\u0131klar. Bu dok\u00fcmantasyonlar\u0131 dikkatlice incelemek, hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r ve s\u00fcreci h\u0131zland\u0131r\u0131r.<\/p>\n<p>Son olarak, veri analizi ve i\u015fleme i\u00e7in baz\u0131 ek ara\u00e7lar faydal\u0131 olabilir. \u00d6rne\u011fin, al\u0131nan JSON verilerini daha okunabilir hale getirmek i\u00e7in bir JSON g\u00f6r\u00fcnt\u00fcleyici veya d\u00fczenleyici kullanabilirsiniz. E\u011fer b\u00fcy\u00fck miktarda veri \u00e7ekiyorsan\u0131z, bu verileri veritaban\u0131nda saklamak (\u00f6rne\u011fin, PostgreSQL, MySQL veya NoSQL veritabanlar\u0131) veya analiz i\u00e7in pandas gibi veri analizi k\u00fct\u00fcphaneleriyle i\u015flemek isteyebilirsiniz. Bu \u00f6n haz\u0131rl\u0131klar, veri \u00e7ekme s\u00fcrecini daha verimli ve sorunsuz hale getirecektir. Unutmay\u0131n, iyi bir haz\u0131rl\u0131k, projenizin yar\u0131s\u0131n\u0131 tamamlamak demektir.<\/p>\n<h2>Bluesky G\u00f6nderilerini \u00c7ekme: Ad\u0131m Ad\u0131m Uygulama<\/h2>\n<p>Bluesky&#8217;deki g\u00f6nderileri \u00e7ekmek, AT Protocol API&#8217;nin en temel kullan\u0131mlar\u0131ndan biridir. Bu i\u015flem i\u00e7in genellikle <code>app.bsky.feed.getPosts<\/code> gibi bir u\u00e7 noktay\u0131 kullan\u0131r\u0131z. Bu u\u00e7 nokta, belirli kriterlere g\u00f6re g\u00f6nderi listesi alman\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, pop\u00fcler g\u00f6nderileri, belirli bir kullan\u0131c\u0131n\u0131n g\u00f6nderilerini veya kronolojik s\u0131raya g\u00f6re g\u00f6nderileri \u00e7ekebilirsiniz. \u0130lk ad\u0131m, bir HTTP iste\u011fi olu\u015fturmakt\u0131r. Bu istek, genellikle bir GET iste\u011fi olur ve hedef u\u00e7 nokta ile birlikte gerekli parametreleri i\u00e7erir.<\/p>\n<p>\u00d6rnek olarak, en pop\u00fcler g\u00f6nderileri \u00e7ekmek istedi\u011fimizi varsayal\u0131m. Bunun i\u00e7in API&#8217;nin sundu\u011fu ilgili u\u00e7 noktay\u0131 ve parametreleri kullanmam\u0131z gerekir. Python dilinde <code>requests<\/code> k\u00fct\u00fcphanesi ile bu i\u015flem \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<div class=\"code-container\">\n<pre><code>\nimport requests\nimport json\n\n# Bluesky API'nin temel URL'si (bu URL de\u011fi\u015febilir, g\u00fcncel dok\u00fcmantasyonu kontrol edin)\nAPI_BASE_URL = \"https:\/\/api.bsky.app\/xrpc\/\"\n\n# Pop\u00fcler g\u00f6nderileri almak i\u00e7in u\u00e7 nokta\nGET_POSTS_ENDPOINT = \"app.bsky.feed.getPosts\"\n\n# \u0130ste\u011fi g\u00f6nderece\u011fimiz tam URL\nurl = f\"{API_BASE_URL}{GET_POSTS_ENDPOINT}\"\n\n# \u0130stek parametreleri (bu parametreler u\u00e7 noktaya g\u00f6re de\u011fi\u015fir)\n# \u00d6rne\u011fin, 'limit' g\u00f6nderi say\u0131s\u0131n\u0131, 'cursor' ise sayfalama i\u00e7in kullan\u0131l\u0131r.\nparams = {\n    \"feed\": \"at:\/\/did:plc:xxxxx\/app.bsky.feed.generator\/yyy\", # \u00d6rnek bir pop\u00fcler ak\u0131\u015f ID'si\n    \"limit\": 25,\n    \"cursor\": None # \u0130lk istekte bo\u015f b\u0131rak\u0131l\u0131r, sonraki isteklerde al\u0131n\u0131r\n}\n\n# API anahtar\u0131n\u0131z veya token'\u0131n\u0131z varsa, headers k\u0131sm\u0131na ekleyebilirsiniz.\n# headers = {\n#     \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n# }\n\ntry:\n    response = requests.get(url, params=params) # headers=headers\n    response.raise_for_status() # Hata durumunda istisna f\u0131rlat\u0131r\n\n    data = response.json()\n\n    # Al\u0131nan verileri i\u015fleme\n    if \"posts\" in data:\n        for post in data[\"posts\"]:\n            author = post[\"author\"][\"handle\"]\n            text = post[\"record\"][\"text\"]\n            created_at = post[\"record\"][\"createdAt\"]\n            print(f\"Yazar: {author}, G\u00f6nderi: {text[:100]}..., Olu\u015fturulma Tarihi: {created_at}\")\n    else:\n        print(\"G\u00f6nderi bulunamad\u0131 veya veri format\u0131 beklenenden farkl\u0131.\")\n\nexcept requests.exceptions.RequestException as e:\n    print(f\"API iste\u011fi s\u0131ras\u0131nda bir hata olu\u015ftu: {e}\")\nexcept json.JSONDecodeError:\n    print(\"API'den gelen yan\u0131t JSON format\u0131nda de\u011fil.\")\n    print(f\"Yan\u0131t i\u00e7eri\u011fi: {response.text}\")\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Yukar\u0131daki kod \u00f6rne\u011finde, <code>requests.get<\/code> fonksiyonu ile API&#8217;ye bir GET iste\u011fi g\u00f6nderiyoruz. <code>params<\/code> s\u00f6zl\u00fc\u011f\u00fc, hangi t\u00fcr g\u00f6nderileri istedi\u011fimizi belirtmek i\u00e7in kullan\u0131l\u0131r. API&#8217;den gelen yan\u0131t, JSON format\u0131nda bir s\u00f6zl\u00fck olacakt\u0131r. Bu s\u00f6zl\u00fckteki &#8220;posts&#8221; anahtar\u0131 alt\u0131nda g\u00f6nderi listesini bulabiliriz. Her bir g\u00f6nderi nesnesi i\u00e7inde yazar bilgisi, g\u00f6nderi metni ve olu\u015fturulma tarihi gibi detaylar yer al\u0131r. Bu verileri daha sonra istedi\u011finiz \u015fekilde i\u015fleyebilir, kaydedebilir veya analiz edebilirsiniz. Unutmamak gerekir ki, <code>feed<\/code> parametresi i\u00e7in kullan\u0131lan &#8220;at:\/\/did:plc:xxxxx\/app.bsky.feed.generator\/yyy&#8221; gibi de\u011ferler, Bluesky&#8217;nin belirli ak\u0131\u015flar\u0131n\u0131 temsil eder ve bu ak\u0131\u015flar\u0131n ID&#8217;leri zamanla de\u011fi\u015febilir veya farkl\u0131 ak\u0131\u015flar tan\u0131mlanabilir. G\u00fcncel ve do\u011fru ak\u0131\u015f ID&#8217;leri i\u00e7in Bluesky geli\u015ftirici dok\u00fcmantasyonunu kontrol etmek \u00f6nemlidir. Bu temel yap\u0131, Bluesky&#8217;deki neredeyse t\u00fcm veri \u00e7ekme i\u015flemlerinin ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2>Hashtag Trendlerini Tespit Etme Y\u00f6ntemleri<\/h2>\n<p>Sosyal medya d\u00fcnyas\u0131nda hashtagler, konu\u015fmalar\u0131 organize etmek ve ke\u015ffedilebilirli\u011fi art\u0131rmak i\u00e7in kritik \u00f6neme sahiptir. Bluesky&#8217;de de durum farkl\u0131 de\u011fil. Belirli hashtaglerle ilgili g\u00f6nderileri \u00e7ekmek veya genel hashtag trendlerini anlamak, platformdaki g\u00fcncel konular\u0131 ve kullan\u0131c\u0131lar\u0131n ilgi alanlar\u0131n\u0131 belirlemek i\u00e7in harika bir yoldur. AT Protocol API, do\u011frudan &#8220;pop\u00fcler hashtagleri listele&#8221; gibi bir u\u00e7 nokta sunmasa da, g\u00f6nderi \u00e7ekme u\u00e7 noktalar\u0131n\u0131 ak\u0131ll\u0131ca kullanarak bu bilgilere ula\u015fabiliriz. En yayg\u0131n y\u00f6ntemlerden biri, belirli bir konuyla ilgili anahtar kelimeler veya olas\u0131 hashtagler kullanarak g\u00f6nderileri \u00e7ekmek ve ard\u0131ndan bu g\u00f6nderilerdeki hashtagleri ayr\u0131\u015ft\u0131rmakt\u0131r.<\/p>\n<p>\u00d6rne\u011fin, &#8220;yapay zeka&#8221; ile ilgili g\u00f6nderileri \u00e7ekmek istiyorsak, <code>app.bsky.feed.searchPosts<\/code> gibi bir arama u\u00e7 noktas\u0131 kullanabiliriz. Bu u\u00e7 nokta, belirli bir metin sorgusuna uyan g\u00f6nderileri d\u00f6nd\u00fcr\u00fcr. Sorgumuza &#8220;#yapayzeka&#8221; veya &#8220;yapay zeka&#8221; gibi terimleri ekleyerek ilgili g\u00f6nderileri elde edebiliriz. Ard\u0131ndan, her bir g\u00f6nderinin <code>record.text<\/code> alan\u0131n\u0131 inceleyerek metin i\u00e7indeki t\u00fcm hashtagleri \u00e7\u0131karmam\u0131z gerekir. Hashtagler genellikle &#8216;#&#8217; karakteriyle ba\u015flar ve bo\u015fluk veya noktalama i\u015faretlerine kadar devam eder. Bu ayr\u0131\u015ft\u0131rma i\u015flemini bir regex (d\u00fczenli ifadeler) kullanarak kolayca yapabiliriz.<\/p>\n<p>Python&#8217;da bu s\u00fcreci \u015f\u00f6yle d\u00fc\u015f\u00fcnebiliriz:<\/p>\n<div class=\"code-container\">\n<pre><code>\nimport requests\nimport json\nimport re # Regex k\u00fct\u00fcphanesi\n\nAPI_BASE_URL = \"https:\/\/api.bsky.app\/xrpc\/\"\nSEARCH_POSTS_ENDPOINT = \"app.bsky.feed.searchPosts\"\nurl = f\"{API_BASE_URL}{SEARCH_POSTS_ENDPOINT}\"\n\nquery = \"#yapayzeka\" # Aranacak terim\nparams = {\n    \"query\": query,\n    \"limit\": 50,\n    \"cursor\": None\n}\n\nall_hashtags = set() # Benzersiz hashtagleri saklamak i\u00e7in set\n\ntry:\n    response = requests.get(url, params=params)\n    response.raise_for_status()\n    data = response.json()\n\n    if \"posts\" in data:\n        for post in data[\"posts\"]:\n            text = post[\"record\"][\"text\"]\n            # Metin i\u00e7indeki t\u00fcm hashtagleri bulmak i\u00e7in regex\n            # '#' ile ba\u015flay\u0131p harf, rakam veya alt \u00e7izgi i\u00e7eren kelimeleri bulur\n            hashtags_in_post = re.findall(r\"#(\\w+)\", text)\n            for tag in hashtags_in_post:\n                all_hashtags.add(tag.lower()) # K\u00fc\u00e7\u00fck harfe \u00e7evirerek ekle\n\n        print(f\"'{query}' ile ilgili g\u00f6nderilerde bulunan benzersiz hashtagler:\")\n        for hashtag in sorted(list(all_hashtags)):\n            print(f\"#{hashtag}\")\n    else:\n        print(\"G\u00f6nderi bulunamad\u0131.\")\n\nexcept requests.exceptions.RequestException as e:\n    print(f\"API iste\u011fi s\u0131ras\u0131nda bir hata olu\u015ftu: {e}\")\nexcept json.JSONDecodeError:\n    print(\"API'den gelen yan\u0131t JSON format\u0131nda de\u011fil.\")\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Bu kod par\u00e7as\u0131, belirli bir sorguyla g\u00f6nderileri \u00e7eker ve her g\u00f6nderinin metnindeki hashtagleri bulur. Bulunan t\u00fcm hashtagler bir <code>set<\/code> i\u00e7inde toplanarak tekrarlar\u0131n \u00f6n\u00fcne ge\u00e7ilir. Sonu\u00e7 olarak, sorgumuzla ili\u015fkili pop\u00fcler hashtaglerin bir listesini elde etmi\u015f oluruz. Bu y\u00f6ntem, &#8220;trend olan&#8221; hashtagleri do\u011frudan almasa da, belirli bir konu etraf\u0131ndaki konu\u015fmalar\u0131 ve kullan\u0131lan etiketleri anlamak i\u00e7in olduk\u00e7a etkilidir. Daha kapsaml\u0131 bir trend analizi i\u00e7in, farkl\u0131 sorgularla d\u00fczenli olarak veri \u00e7ekip bu hashtaglerin zaman i\u00e7indeki kullan\u0131m s\u0131kl\u0131\u011f\u0131n\u0131 takip edebilirsiniz.<\/p>\n<h2>Kullan\u0131c\u0131 Takip\u00e7i Listelerini \u00c7ekme Rehberi<\/h2>\n<p>Bir kullan\u0131c\u0131n\u0131n takip\u00e7i listesini \u00e7ekmek, sosyal a\u011f analizlerinin \u00f6nemli bir par\u00e7as\u0131d\u0131r. Bluesky API&#8217;si, belirli bir kullan\u0131c\u0131n\u0131n kimlik bilgisini (DID &#8211; Decentralized Identifier) kullanarak o kullan\u0131c\u0131n\u0131n takip\u00e7ilerini listeleyen u\u00e7 noktalar sunar. Bu i\u015flem genellikle <code>app.bsky.graph.getFollowers<\/code> gibi bir u\u00e7 nokta arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r. Bu u\u00e7 noktaya, takip\u00e7ilerini \u00f6\u011frenmek istedi\u011finiz kullan\u0131c\u0131n\u0131n DID&#8217;ini parametre olarak g\u00f6ndermeniz gerekir.<\/p>\n<p>Kullan\u0131c\u0131lar\u0131n DID&#8217;lerini bilmek \u00f6nemlidir. E\u011fer bir kullan\u0131c\u0131n\u0131n handle&#8217;\u0131n\u0131 (\u00f6rne\u011fin, @kullaniciadi.bsky.social) biliyorsan\u0131z, \u00f6ncelikle bu handle&#8217;\u0131 kullanarak kullan\u0131c\u0131n\u0131n DID&#8217;ini sorgulaman\u0131z gerekebilir. Bu i\u015flem i\u00e7in <code>app.bsky.actor.getProfile<\/code> gibi bir u\u00e7 nokta kullan\u0131labilir. Bu u\u00e7 noktaya kullan\u0131c\u0131n\u0131n handle&#8217;\u0131n\u0131 g\u00f6ndererek profil bilgilerini al\u0131rs\u0131n\u0131z ve bu bilgiler i\u00e7inde kullan\u0131c\u0131n\u0131n DID&#8217;i de bulunur.<\/p>\n<p>Takip\u00e7i listesini \u00e7ekme s\u00fcreci \u015fu ad\u0131mlar\u0131 izler:<\/p>\n<ol>\n<li>Takip\u00e7ilerini \u00f6\u011frenmek istedi\u011finiz kullan\u0131c\u0131n\u0131n handle&#8217;\u0131n\u0131 al\u0131n.<\/li>\n<li>Bu handle&#8217;\u0131 kullanarak kullan\u0131c\u0131n\u0131n DID&#8217;ini <code>app.bsky.actor.getProfile<\/code> u\u00e7 noktas\u0131 ile sorgulay\u0131n.<\/li>\n<li>Elde etti\u011finiz DID&#8217;i kullanarak <code>app.bsky.graph.getFollowers<\/code> u\u00e7 noktas\u0131na istek g\u00f6nderin.<\/li>\n<li>API&#8217;den gelen yan\u0131tta, kullan\u0131c\u0131n\u0131n takip\u00e7ilerinin bir listesini bulacaks\u0131n\u0131z. Bu liste genellikle her bir takip\u00e7inin profil bilgilerini (handle, display name, DID vb.) i\u00e7erir.<\/li>\n<\/ol>\n<p>Python ile \u00f6rnek bir kod:<\/p>\n<div class=\"code-container\">\n<pre><code>\nimport requests\nimport json\n\nAPI_BASE_URL = \"https:\/\/api.bsky.app\/xrpc\/\"\n\n# Kullan\u0131c\u0131n\u0131n profilini alma u\u00e7 noktas\u0131 (DID'i \u00f6\u011frenmek i\u00e7in)\nGET_PROFILE_ENDPOINT = \"app.bsky.actor.getProfile\"\n\n# Takip\u00e7i listesini alma u\u00e7 noktas\u0131\nGET_FOLLOWERS_ENDPOINT = \"app.bsky.graph.getFollowers\"\n\ndef get_user_did(handle):\n    \"\"\"Verilen handle'a ait kullan\u0131c\u0131n\u0131n DID'ini d\u00f6nd\u00fcr\u00fcr.\"\"\"\n    url = f\"{API_BASE_URL}{GET_PROFILE_ENDPOINT}\"\n    params = {\"actor\": handle}\n    try:\n        response = requests.get(url, params=params)\n        response.raise_for_status()\n        data = response.json()\n        if \"handle\" in data and data[\"handle\"] == handle and \"did\" in data:\n            return data[\"did\"]\n        else:\n            print(f\"'{handle}' kullan\u0131c\u0131s\u0131n\u0131n DID'i bulunamad\u0131.\")\n            return None\n    except requests.exceptions.RequestException as e:\n        print(f\"Profil sorgusu s\u0131ras\u0131nda hata: {e}\")\n        return None\n    except json.JSONDecodeError:\n        print(\"Profil yan\u0131t\u0131 JSON format\u0131nda de\u011fil.\")\n        return None\n\ndef get_followers(user_did):\n    \"\"\"Verilen DID'e sahip kullan\u0131c\u0131n\u0131n takip\u00e7ilerini d\u00f6nd\u00fcr\u00fcr.\"\"\"\n    if not user_did:\n        return []\n\n    url = f\"{API_BASE_URL}{GET_FOLLOWERS_ENDPOINT}\"\n    params = {\n        \"actor\": user_did,\n        \"limit\": 100, # Tek seferde \u00e7ekilecek maksimum takip\u00e7i say\u0131s\u0131\n        \"cursor\": None # Sayfalama i\u00e7in kullan\u0131l\u0131r\n    }\n\n    followers_list = []\n    try:\n        response = requests.get(url, params=params)\n        response.raise_for_status()\n        data = response.json()\n\n        if \"followers\" in data:\n            for follower in data[\"followers\"]:\n                followers_list.append({\n                    \"handle\": follower[\"handle\"],\n                    \"displayName\": follower.get(\"displayName\", \"N\/A\"), # displayName olmayabilir\n                    \"did\": follower[\"did\"]\n                })\n            print(f\"Toplam {len(followers_list)} takip\u00e7i bulundu.\")\n            return followers_list\n        else:\n            print(\"Takip\u00e7i bilgisi bulunamad\u0131.\")\n            return []\n\n    except requests.exceptions.RequestException as e:\n        print(f\"Takip\u00e7i sorgusu s\u0131ras\u0131nda hata: {e}\")\n        return []\n    except json.JSONDecodeError:\n        print(\"Takip\u00e7i yan\u0131t\u0131 JSON format\u0131nda de\u011fil.\")\n        return []\n\n# \u00d6rnek kullan\u0131m:\ntarget_handle = \"exampleuser.bsky.social\" # Buraya ilgilendi\u011finiz kullan\u0131c\u0131n\u0131n handle'\u0131n\u0131 yaz\u0131n\nuser_did = get_user_did(target_handle)\n\nif user_did:\n    followers = get_followers(user_did)\n    if followers:\n        print(f\"\\n'{target_handle}' kullan\u0131c\u0131s\u0131n\u0131n ilk takip\u00e7ileri:\")\n        for follower in followers[:5]: # \u0130lk 5 takip\u00e7iyi g\u00f6ster\n            print(f\"- Handle: {follower['handle']}, \u0130sim: {follower['displayName']}\")\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Bu fonksiyonlar, \u00f6ncelikle kullan\u0131c\u0131n\u0131n DID&#8217;ini al\u0131r, ard\u0131ndan bu DID ile takip\u00e7i listesini \u00e7eker. Elde edilen takip\u00e7i listesi, her bir takip\u00e7inin handle&#8217;\u0131n\u0131, g\u00f6r\u00fcnen ad\u0131n\u0131 ve DID&#8217;ini i\u00e7erir. Bu bilgileri, rakip analizi, topluluk olu\u015fturma veya influencer ke\u015ffi gibi ama\u00e7larla kullanabilirsiniz. Sayfalama (pagination) mekanizmas\u0131, \u00f6zellikle \u00e7ok say\u0131da takip\u00e7isi olan kullan\u0131c\u0131lar i\u00e7in \u00f6nemlidir. API&#8217;den gelen yan\u0131tta bir <code>cursor<\/code> de\u011feri varsa, bu de\u011fer bir sonraki iste\u011fe eklenerek daha fazla takip\u00e7i \u00e7ekilebilir.<\/p>\n<h2>\u0130leri D\u00fczey Teknikler ve \u0130pu\u00e7lar\u0131<\/h2>\n<p>Bluesky API ile \u00e7al\u0131\u015f\u0131rken daha verimli ve etkili sonu\u00e7lar elde etmek i\u00e7in baz\u0131 ileri d\u00fczey tekniklerden faydalanabilirsiniz. Bunlardan ilki, <strong>sayfalama (pagination)<\/strong> mekanizmas\u0131n\u0131 do\u011fru kullanmakt\u0131r. \u00c7o\u011fu API, performans nedenleriyle verileri k\u00fc\u00e7\u00fck gruplar halinde (sayfalar) sunar. <code>app.bsky.feed.getPosts<\/code> veya <code>app.bsky.graph.getFollowers<\/code> gibi u\u00e7 noktalar genellikle bir <code>limit<\/code> (tek seferde al\u0131nacak \u00f6\u011fe say\u0131s\u0131) ve bir <code>cursor<\/code> (bir sonraki veri grubunun ba\u015flang\u0131\u00e7 noktas\u0131n\u0131 belirten i\u015faret\u00e7i) parametresi sunar. \u0130lk iste\u011finizde <code>cursor<\/code> bo\u015f b\u0131rak\u0131l\u0131r. API&#8217;den gelen yan\u0131tta bir <code>nextCursor<\/code> de\u011feri varsa, bu de\u011feri bir sonraki iste\u011finizin <code>cursor<\/code> parametresine ekleyerek t\u00fcm veri setini \u00e7ekebilirsiniz. Bu i\u015flemi, yan\u0131tta <code>nextCursor<\/code> de\u011feri gelmeyene kadar tekrarlaman\u0131z gerekir.<\/p>\n<p>\u0130kinci \u00f6nemli teknik, <strong>hata y\u00f6netimi (error handling)<\/strong> ve <strong>yeniden deneme mekanizmalar\u0131 (retry mechanisms)<\/strong> kurmakt\u0131r. A\u011f sorunlar\u0131, API sunucu yo\u011funlu\u011fu veya ge\u00e7ici hatalar nedeniyle istekleriniz ba\u015far\u0131s\u0131z olabilir. Bu durumlarla ba\u015fa \u00e7\u0131kmak i\u00e7in, isteklerinizde bir <code>try-except<\/code> blo\u011fu kullanarak olas\u0131 hatalar\u0131 yakalamal\u0131 ve belirli bir s\u00fcre bekledikten sonra iste\u011fi yeniden denemelisiniz. \u00dcstel geri \u00e7ekilme (exponential backoff) gibi stratejiler, API&#8217;ye a\u015f\u0131r\u0131 y\u00fcklenmeden tekrar deneme \u015fans\u0131n\u0131 art\u0131r\u0131r. \u00d6rne\u011fin, ilk deneme ba\u015far\u0131s\u0131z olursa 1 saniye, sonraki 2 saniye, sonra 4 saniye gibi artan aral\u0131klarla tekrar deneyebilirsiniz.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fcs\u00fc, <strong>verimli veri depolama ve i\u015fleme<\/strong> y\u00f6ntemleridir. B\u00fcy\u00fck miktarda veri \u00e7ekti\u011finizde, bu verileri bellekte tutmak yerine bir veritaban\u0131na kaydetmek daha mant\u0131kl\u0131d\u0131r. PostgreSQL, MySQL gibi ili\u015fkisel veritabanlar\u0131 veya MongoDB gibi NoSQL veritabanlar\u0131, verilerinizi yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde saklaman\u0131za yard\u0131mc\u0131 olur. Verileri i\u015flerken, pandas gibi k\u00fct\u00fcphanelerle veri \u00e7er\u00e7eveleri olu\u015fturarak analizleri daha kolay hale getirebilirsiniz. \u00d6rne\u011fin, en \u00e7ok etkile\u015fim alan g\u00f6nderileri bulmak, en pop\u00fcler hashtagleri belirlemek veya kullan\u0131c\u0131 etkile\u015fim \u00f6r\u00fcnt\u00fclerini analiz etmek i\u00e7in bu t\u00fcr veri i\u015fleme ara\u00e7lar\u0131 vazge\u00e7ilmezdir.<\/p>\n<p>Son olarak, <strong>API limitlerini ve kullan\u0131m ko\u015fullar\u0131n\u0131<\/strong> g\u00f6z \u00f6n\u00fcnde bulundurun. Her API&#8217;nin belirli bir istek limiti (rate limit) vard\u0131r. Bu limitleri a\u015fmak, ge\u00e7ici veya kal\u0131c\u0131 olarak IP adresinizin engellenmesine neden olabilir. Geli\u015ftirici dok\u00fcmantasyonunu dikkatlice okuyarak bu limitleri \u00f6\u011frenin ve kodunuzu bu limitlere uyacak \u015fekilde tasarlay\u0131n. Ayr\u0131ca, Bluesky&#8217;nin kullan\u0131m ko\u015fullar\u0131na ve gizlilik politikalar\u0131na uygun hareket etmek, etik ve yasal a\u00e7\u0131dan \u00f6nemlidir.<\/p>\n<h2>Vaka Analizi: Bir E-ticaret Markas\u0131n\u0131n Bluesky&#8217;deki Rakip Analizi<\/h2>\n<p>Diyelim ki &#8220;ModaX&#8221; ad\u0131nda bir online giyim ma\u011fazan\u0131z var ve Bluesky&#8217;de rakiplerinizin ne yapt\u0131\u011f\u0131n\u0131 anlamak istiyorsunuz. Bu analiz i\u00e7in AT Protocol API&#8217;yi nas\u0131l kullanabilece\u011finizi inceleyelim. \u00d6ncelikle, ModaX&#8217;in ana rakiplerini belirleyelim: &#8220;StilVip&#8221; ve &#8220;TrendSepeti&#8221;. Hedefimiz, bu markalar\u0131n Bluesky&#8217;deki varl\u0131\u011f\u0131n\u0131, kullan\u0131c\u0131 etkile\u015fimlerini ve \u00f6ne \u00e7\u0131kan kampanyalar\u0131n\u0131 anlamak.<\/p>\n<p><strong>Ad\u0131m 1: Rakip Markalar\u0131n G\u00f6nderilerini \u00c7ekme<\/strong><\/p>\n<p>Her iki rakip markan\u0131n da Bluesky&#8217;deki profillerini tespit ettikten sonra, <code>app.bsky.actor.getProfile<\/code> u\u00e7 noktas\u0131n\u0131 kullanarak onlar\u0131n DID&#8217;lerini \u00f6\u011freniriz. Ard\u0131ndan, her bir rakibin DID&#8217;i ile <code>app.bsky.feed.getPosts<\/code> u\u00e7 noktas\u0131n\u0131 kullanarak kendi g\u00f6nderilerini \u00e7ekeriz. Bu g\u00f6nderileri bir veritaban\u0131na kaydederek, markalar\u0131n ne s\u0131kl\u0131kla payla\u015ft\u0131\u011f\u0131n\u0131, hangi \u00fcr\u00fcnleri tan\u0131tt\u0131\u011f\u0131n\u0131 ve ne t\u00fcr i\u00e7erikler \u00fcretti\u011fini analiz edebiliriz. \u00d6rne\u011fin, StilVip&#8217;in son bir ayda 50 g\u00f6nderi payla\u015ft\u0131\u011f\u0131n\u0131, TrendSepeti&#8217;nin ise 30 g\u00f6nderi payla\u015ft\u0131\u011f\u0131n\u0131 g\u00f6zlemleyebiliriz. Bu, StilVip&#8217;in Bluesky&#8217;yi daha aktif kulland\u0131\u011f\u0131na i\u015faret edebilir.<\/p>\n<p><strong>Ad\u0131m 2: Rakip Markalarla \u0130lgili Hashtagleri Analiz Etme<\/strong><\/p>\n<p>Rakip markalar\u0131n kulland\u0131\u011f\u0131 hashtagleri anlamak i\u00e7in, genel moda ve giyimle ilgili pop\u00fcler hashtagleri belirleyip (<code>#modatasar\u0131m<\/code>, <code>#yenikoleksiyon<\/code>, <code>#giyimku\u015fam<\/code> vb.) <code>app.bsky.feed.searchPosts<\/code> u\u00e7 noktas\u0131n\u0131 kullanarak bu hashtaglerle ilgili g\u00f6nderileri \u00e7ekeriz. Ard\u0131ndan, bu g\u00f6nderiler i\u00e7inden StilVip ve TrendSepeti&#8217;nin g\u00f6nderilerini filtreleyip, bu g\u00f6nderilerde hangi hashtaglerin daha s\u0131k kullan\u0131ld\u0131\u011f\u0131n\u0131 analiz ederiz. Belki de TrendSepeti, <code>#indirim<\/code> ve <code>#kampanya<\/code> gibi hashtagleri daha s\u0131k kullan\u0131rken, StilVip daha \u00e7ok <code>#stil\u00f6nerileri<\/code> ve <code>#modaak\u0131mlar\u0131<\/code> gibi hashtaglere odaklan\u0131yordur. Bu, markalar\u0131n pazarlama stratejileri hakk\u0131nda fikir verir.<\/p>\n<p><strong>Ad\u0131m 3: Rakip Markalar\u0131n Takip\u00e7i Kitlelerini Anlama<\/strong><\/p>\n<p>Rakip markalar\u0131n DID&#8217;lerini kullanarak <code>app.bsky.graph.getFollowers<\/code> u\u00e7 noktas\u0131ndan takip\u00e7i listelerini \u00e7ekeriz. Bu takip\u00e7i listelerindeki handle&#8217;lar\u0131 ve profilleri analiz ederek, rakip markalar\u0131n hangi t\u00fcr kullan\u0131c\u0131lar taraf\u0131ndan takip edildi\u011fini anlamaya \u00e7al\u0131\u015f\u0131r\u0131z. \u00d6rne\u011fin, TrendSepeti&#8217;nin takip\u00e7ilerinin \u00e7o\u011funlukla indirim avc\u0131lar\u0131 oldu\u011fu, StilVip&#8217;in takip\u00e7ilerinin ise daha \u00e7ok moda tutkunlar\u0131 oldu\u011fu ortaya \u00e7\u0131kabilir. Bu bilgiler, ModaX&#8217;in kendi hedef kitlesini daha iyi tan\u0131mlamas\u0131na ve onlara y\u00f6nelik stratejiler geli\u015ftirmesine yard\u0131mc\u0131 olur. Ayr\u0131ca, rakip markalar\u0131n takip\u00e7ilerinin etkile\u015fim oranlar\u0131n\u0131 (be\u011feni, yorum say\u0131lar\u0131) da analiz ederek, hangi t\u00fcr i\u00e7eriklerin daha \u00e7ok ilgi g\u00f6rd\u00fc\u011f\u00fcn\u00fc anlayabiliriz.<\/p>\n<p>Bu vaka analizi, Bluesky AT Protocol API&#8217;sinin sadece teknik bir ara\u00e7 olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda stratejik i\u015f kararlar\u0131 almak i\u00e7in g\u00fc\u00e7l\u00fc bir veri kayna\u011f\u0131 sundu\u011funu g\u00f6stermektedir. ModaX, bu analizler sonucunda kendi Bluesky stratejisini belirleyebilir; \u00f6rne\u011fin, daha \u00e7ok stil \u00f6nerileri ve ak\u0131mlar\u0131yla ilgili i\u00e7erikler \u00fcreterek StilVip&#8217;in hedef kitlesine yakla\u015fabilir veya indirim kampanyalar\u0131n\u0131 daha agresif tan\u0131tarak TrendSepeti&#8217;nin pazar pay\u0131n\u0131 hedefleyebilir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bluesky&#8217;nin resmi AT Protocol API&#8217;sini kullanarak g\u00f6nderileri, hashtagleri ve takip\u00e7i listelerini \u00e7ekmek, platformdaki verileri anlamak ve bu verilerden stratejik i\u00e7g\u00f6r\u00fcler elde etmek i\u00e7in g\u00fc\u00e7l\u00fc bir y\u00f6ntemdir. Bu rehberde, API&#8217;nin temel kavramlar\u0131ndan ba\u015flayarak, g\u00f6nderi \u00e7ekme, hashtag analizi ve takip\u00e7i listelerini elde etme gibi temel i\u015flemleri ad\u0131m ad\u0131m ele ald\u0131k. \u0130leri d\u00fczey teknikler ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu s\u00fcreci daha da derinle\u015ftirdik. Unutmay\u0131n ki, API&#8217;ler ve protokoller zamanla g\u00fcncellenebilir, bu nedenle Bluesky&#8217;nin resmi geli\u015ftirici dok\u00fcmantasyonunu d\u00fczenli olarak kontrol etmek en do\u011frusudur. Bu bilgilerle donanm\u0131\u015f olarak, Bluesky&#8217;deki verilerinizi etkili bir \u015fekilde \u00e7ekebilir ve analiz edebilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n            <strong>Bluesky API&#8217;sini kullanmak i\u00e7in bir API anahtar\u0131 almam gerekiyor mu?<\/strong><\/p>\n<p>Genellikle Bluesky API&#8217;sine eri\u015fim, do\u011frudan bir API anahtar\u0131 gerektirmeyebilir. Kimlik do\u011frulama, kullan\u0131c\u0131 hesab\u0131 veya OAuth gibi mekanizmalarla sa\u011flanabilir. Ancak, g\u00fcncel gereksinimler i\u00e7in Bluesky&#8217;nin resmi geli\u015ftirici dok\u00fcmantasyonunu kontrol etmeniz \u00f6nemlidir.<\/p>\n<\/li>\n<li>\n            <strong>API&#8217;den gelen verilerde sayfalama (pagination) nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/strong><\/p>\n<p>\u00c7o\u011fu API, verileri k\u00fc\u00e7\u00fck gruplar halinde sunar. Yan\u0131tta genellikle bir <code>limit<\/code> ve bir <code>cursor<\/code> (veya <code>nextCursor<\/code>) parametresi bulunur. \u0130lk istekte <code>cursor<\/code> bo\u015f b\u0131rak\u0131l\u0131r. Gelen yan\u0131tta <code>nextCursor<\/code> varsa, bu de\u011feri bir sonraki iste\u011fin <code>cursor<\/code> parametresine ekleyerek t\u00fcm veri setini \u00e7ekene kadar bu i\u015flemi tekrarlars\u0131n\u0131z.<\/p>\n<\/li>\n<li>\n            <strong>Bluesky API&#8217;si ile ne kadar veri \u00e7ekebilirim? G\u00fcnl\u00fck limit var m\u0131?<\/strong><\/p>\n<p>Evet, \u00e7o\u011fu API&#8217;nin belirli istek limitleri (rate limits) vard\u0131r. Bu limitler genellikle belirli bir zaman diliminde (\u00f6rne\u011fin, dakikada veya saatte) yapabilece\u011finiz istek say\u0131s\u0131d\u0131r. Bu limitleri a\u015fmak, ge\u00e7ici olarak engellenmenize neden olabilir. G\u00fcncel limitler i\u00e7in Bluesky&#8217;nin geli\u015ftirici dok\u00fcmantasyonunu kontrol etmeniz \u00f6nerilir.<\/p>\n<\/li>\n<li>\n            <strong>\u00c7ekti\u011fim verileri ticari ama\u00e7la kullanabilir miyim?<\/strong><\/p>\n<p>Bu, Bluesky&#8217;nin kullan\u0131m ko\u015fullar\u0131na ve API&#8217;nin lisans\u0131na ba\u011fl\u0131d\u0131r. Genellikle, API&#8217;den \u00e7ekilen verilerin ticari kullan\u0131m\u0131yla ilgili belirli k\u0131s\u0131tlamalar olabilir. Verileri kullanmadan \u00f6nce Bluesky&#8217;nin resmi kullan\u0131m ko\u015fullar\u0131n\u0131 ve gizlilik politikas\u0131n\u0131 dikkatlice incelemeniz \u00f6nemlidir.<\/p>\n<\/li>\n<li>\n            <strong>AT Protocol API, sadece Bluesky i\u00e7in mi ge\u00e7erli?<\/strong><\/p>\n<p>Hay\u0131r, AT Protocol, Bluesky&#8217;nin temelini olu\u015fturan merkeziyetsiz bir sosyal a\u011f protokol\u00fcd\u00fcr. Bu protokol\u00fc kullanan farkl\u0131 uygulamalar da olabilir. Dolay\u0131s\u0131yla, AT Protocol API&#8217;sini anlamak, sadece Bluesky de\u011fil, bu protokol\u00fc kullanan di\u011fer platformlardaki verilere de eri\u015fim potansiyeli sunar.<\/p>\n<\/li>\n<\/ul>\n<p>#Bluesky #ATProtocol #WebScraping #APIDev #SosyalMedyaAnalizi<\/p>\n","protected":false},"excerpt":{"rendered":"Bluesky&#8217;de veri \u00e7ekme ihtiyac\u0131n\u0131z m\u0131 var? Belki de pop\u00fcler g\u00f6nderileri analiz etmek, hashtag trendlerini takip etmek veya rakip analizleri yapmak istiyorsunuz.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-45345","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi\" \/>\n<meta property=\"og:description\" content=\"Bluesky&#039;de veri \u00e7ekme ihtiyac\u0131n\u0131z m\u0131 var? Belki de pop\u00fcler g\u00f6nderileri analiz etmek, hashtag trendlerini takip etmek veya rakip analizleri yapmak istiyorsunuz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-23T18:00:34+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi\",\"datePublished\":\"2026-10-23T18:00:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\"},\"wordCount\":3598,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\",\"name\":\"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-10-23T18:00:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi","og_description":"Bluesky'de veri \u00e7ekme ihtiyac\u0131n\u0131z m\u0131 var? Belki de pop\u00fcler g\u00f6nderileri analiz etmek, hashtag trendlerini takip etmek veya rakip analizleri yapmak istiyorsunuz.","og_url":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-10-23T18:00:34+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi","datePublished":"2026-10-23T18:00:34+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/"},"wordCount":3598,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/","name":"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-10-23T18:00:34+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/bluesky-gonderilerini-hashtaglerini-ve-takipcilerini-resmi-at-protocol-api-ile-cekme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Bluesky G\u00f6nderilerini, Hashtaglerini ve Takip\u00e7ilerini Resmi AT Protocol API ile \u00c7ekme Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/45345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=45345"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/45345\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=45345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=45345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=45345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}