{"id":35485,"date":"2025-11-30T08:01:16","date_gmt":"2025-11-30T05:01:16","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/"},"modified":"2025-11-30T08:01:16","modified_gmt":"2025-11-30T05:01:16","slug":"github-profilinizi-otomatiklestirin-adim-adim-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/","title":{"rendered":"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber"},"content":{"rendered":"<p><body><\/p>\n<p>GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!<\/p>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, bir geli\u015ftiricinin GitHub profili, onun dijital kartviziti haline gelmi\u015ftir. Potansiyel i\u015fverenlerden meslekta\u015flara, hatta a\u00e7\u0131k kaynak toplulu\u011funa kadar bir\u00e7ok ki\u015fi, yeteneklerinizi ve projelerinizi anlamak i\u00e7in ilk olarak profilinize g\u00f6z atar. Ancak bu vitrini s\u00fcrekli g\u00fcncel ve \u00e7ekici tutmak, \u00f6zellikle birden fazla proje \u00fczerinde \u00e7al\u0131\u015f\u0131yorsan\u0131z veya s\u0131k s\u0131k yeni teknolojiler deniyorsan\u0131z, olduk\u00e7a zahmetli bir s\u00fcre\u00e7 olabilir. Elinizle her k\u00fc\u00e7\u00fck de\u011fi\u015fikli\u011fi, yeni projeyi veya son blog yaz\u0131s\u0131n\u0131 profile eklemek, hem zaman al\u0131c\u0131 hem de s\u0131k\u0131c\u0131d\u0131r. \u0130\u015fte tam da bu noktada GitHub profil otomasyonu devreye giriyor ve bu s\u00fcreci k\u00f6kten de\u011fi\u015ftirerek hayat\u0131n\u0131z\u0131 kolayla\u015ft\u0131r\u0131yor.<\/p>\n<p>Otomasyon, sadece zaman kazand\u0131rmakla kalmaz, ayn\u0131 zamanda profilinizin tutarl\u0131l\u0131\u011f\u0131n\u0131 ve profesyonelli\u011fini de art\u0131r\u0131r. Profiliniz her zaman en yeni projelerinizi, en g\u00fcncel istatistiklerinizi veya en son katk\u0131lar\u0131n\u0131z\u0131 yans\u0131tt\u0131\u011f\u0131nda, d\u0131\u015far\u0131dan bakan biri i\u00e7in \u00e7ok daha dinamik ve ilgi \u00e7ekici g\u00f6r\u00fcn\u00fcr. D\u00fc\u015f\u00fcn\u00fcn ki, her yeni repoya y\u0131ld\u0131z att\u0131\u011f\u0131n\u0131zda, bir projeye katk\u0131da bulundu\u011funuzda veya ki\u015fisel blogunuza yeni bir yaz\u0131 ekledi\u011finizde, profiliniz bu bilgileri otomatik olarak g\u00fcncelliyor. Bu, sadece sizin i\u00e7in bir kolayl\u0131k de\u011fil, ayn\u0131 zamanda potansiyel i\u015fverenler veya i\u015fbirlik\u00e7ileri i\u00e7in de yeteneklerinizi an\u0131nda g\u00f6rmelerini sa\u011flayan de\u011ferli bir ara\u00e7t\u0131r. Otomatikle\u015ftirilmi\u015f bir GitHub profili, s\u00fcrekli aktif ve \u00fcretken oldu\u011funuz izlenimini peki\u015ftirir; bu da rekabet\u00e7i teknoloji sekt\u00f6r\u00fcnde size belirgin bir avantaj sa\u011flar.<\/p>\n<div class=\"tip-box\">\n        <strong>Uzman \u0130pucu:<\/strong> Profil otomasyonu sadece g\u00f6r\u00fcnt\u00fc i\u00e7in de\u011fil, ayn\u0131 zamanda projelerinizdeki tutarl\u0131l\u0131\u011f\u0131 ve veri entegrasyonunu sa\u011flamak i\u00e7in de g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. GitHub Actions&#8217;\u0131n esnekli\u011fi, neredeyse her t\u00fcrl\u00fc senaryoya uyum sa\u011flayabilir.\n    <\/div>\n<p>Peki, bu otomasyon nas\u0131l i\u015fliyor? Temelde, GitHub&#8217;\u0131n kendi otomasyon arac\u0131 olan GitHub Actions&#8217;\u0131 kullanarak, belirli olaylar (\u00f6rne\u011fin, zamanlanm\u0131\u015f aral\u0131klar veya bir depoya yap\u0131lan push i\u015flemleri) tetiklendi\u011finde \u00e7al\u0131\u015fan komut dosyalar\u0131 olu\u015fturuyoruz. Bu komut dosyalar\u0131, genellikle GitHub API&#8217;si, harici API&#8217;ler veya RSS beslemeleri gibi farkl\u0131 veri kaynaklar\u0131ndan bilgi \u00e7eker ve bu bilgiyi profilinizin ana sayfas\u0131 olan \u00f6zel README.md dosyan\u0131za otomatik olarak yazar. Bu, profilinizdeki &#8220;en son projelerim&#8221;, &#8220;son blog yaz\u0131lar\u0131m&#8221; veya &#8220;en \u00e7ok kullan\u0131lan dillerim&#8221; gibi dinamik b\u00f6l\u00fcmler olu\u015fturman\u0131za olanak tan\u0131r. Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, bu, ki\u015fisel portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fcncel tutman\u0131n ve profesyonel geli\u015fiminizi s\u00fcrekli olarak sergilemenin en etkili yollar\u0131ndan biridir.<\/p>\n<p>\u00d6rne\u011fin, bir geli\u015ftiricinin d\u00fczenli olarak blog yaz\u0131lar\u0131 yay\u0131nlad\u0131\u011f\u0131n\u0131 varsayal\u0131m. Her yeni yaz\u0131 yazd\u0131\u011f\u0131nda, GitHub profiline manuel olarak eklemek yerine, bir GitHub Action&#8217;\u0131 bu blogun RSS beslemesini periyodik olarak kontrol edebilir ve en son yaz\u0131lar\u0131 otomatik olarak profil README&#8217;sine ekleyebilir. Bu, sadece geli\u015ftiricinin zaman\u0131n\u0131 kurtarmakla kalmaz, ayn\u0131 zamanda profilini ziyaret edenlerin her zaman en g\u00fcncel i\u00e7eriklere eri\u015febilmesini sa\u011flar. Bu t\u00fcr bir otomasyon, a\u00e7\u0131k kaynak projelere katk\u0131da bulunanlar, d\u00fczenli olarak yeni projeler ba\u015flatanlar veya teknik makaleler yazanlar i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. K\u0131sacas\u0131, GitHub profil otomasyonu, dijital varl\u0131\u011f\u0131n\u0131z\u0131 pasif bir kartvizitten, s\u00fcrekli g\u00fcncellenen ve etkile\u015fimli bir portf\u00f6ye d\u00f6n\u00fc\u015ft\u00fcrmenin anahtar\u0131d\u0131r.<\/p>\n<h2>Otomatik GitHub Profilinin Temel Ta\u015flar\u0131 Nelerdir?<\/h2>\n<p>Otomatik bir GitHub profilini in\u015fa etmenin arkas\u0131nda yatan temel kavramlar\u0131 anlamak, bu s\u00fcreci ba\u015far\u0131yla tamamlaman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu sistemin kalbinde \u00fc\u00e7 ana bile\u015fen yer al\u0131r: \u00f6zel GitHub README.md dosyas\u0131, otomasyon motoru olarak GitHub Actions ve dinamik i\u00e7eri\u011fi besleyecek veri kaynaklar\u0131. Bu bile\u015fenlerin her biri, profilinizin canl\u0131 ve g\u00fcncel kalmas\u0131n\u0131 sa\u011flamak i\u00e7in kritik bir role sahiptir.<\/p>\n<h3>1. \u00d6zel GitHub Profil README.md Dosyas\u0131<\/h3>\n<p>GitHub&#8217;da \u00f6zel bir profil sayfas\u0131 olu\u015fturman\u0131n yolu, kullan\u0131c\u0131 ad\u0131n\u0131zla ayn\u0131 isme sahip bir depo (repository) olu\u015fturmaktan ge\u00e7er. \u00d6rne\u011fin, kullan\u0131c\u0131 ad\u0131n\u0131z &#8220;denizdev&#8221; ise, &#8220;denizdev\/denizdev&#8221; ad\u0131nda bir depo olu\u015fturman\u0131z gerekir. Bu depo \u00f6zel bir depodur ve i\u00e7erisine ekleyece\u011finiz <code>README.md<\/code> dosyas\u0131, GitHub profilinizin ana sayfas\u0131nda \u00f6zel bir b\u00f6l\u00fcm olarak g\u00f6r\u00fcnecektir. Bu, statik bir bilgi sayfas\u0131 olabilece\u011fi gibi, otomasyon sayesinde dinamik i\u00e7erik bar\u0131nd\u0131ran canl\u0131 bir vitrin de olabilir. Bu README dosyas\u0131, Markdown format\u0131n\u0131 destekler ve ba\u015fl\u0131klar, listeler, resimler, kod bloklar\u0131 gibi zengin i\u00e7erik t\u00fcrlerini bar\u0131nd\u0131rabilir. Otomasyonumuzun hedefi, bu <code>README.md<\/code> dosyas\u0131n\u0131 belirli aral\u0131klarla veya olaylar sonucunda g\u00fcncellemek olacakt\u0131r. Ba\u015flang\u0131\u00e7 olarak, profil deposu olu\u015fturdu\u011funuzda GitHub size temel bir <code>README.md<\/code> \u015fablonu sunacakt\u0131r. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code>\n# Merhaba, Ben [Kullan\u0131c\u0131 Ad\u0131n\u0131z]! \ud83d\udc4b\n\nYaz\u0131l\u0131m geli\u015ftirme ve a\u00e7\u0131k kaynak projeler konusunda tutkulu biriyim.\n\u00c7e\u015fitli teknolojilerle projeler geli\u015ftirmeyi ve yeni \u015feyler \u00f6\u011frenmeyi seviyorum.\n\n<strong>Hakk\u0131mda<\/strong>\n- \ud83d\ude80 Son projem: [Link to your latest project]\n- \ud83d\udca1 \u015eu an \u00f6\u011freniyorum: [Teknoloji Ad\u0131]\n- \ud83d\udcdd Blog yaz\u0131lar\u0131m\u0131 okuyun: [Link to your blog]\n\n<strong>\u0130leti\u015fim<\/strong>\n[![Twitter](https:\/\/img.shields.io\/badge\/Twitter-%231DA1F2.svg?&style=for-the-badge&logo=twitter&logoColor=white)](https:\/\/twitter.com\/your_twitter)\n[![LinkedIn](https:\/\/img.shields.io\/badge\/LinkedIn-%230077B5.svg?&style=for-the-badge&logo=linkedin&logoColor=white)](https:\/\/linkedin.com\/in\/your_linkedin)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu temel yap\u0131 \u00fczerine, GitHub Actions ile dinamik i\u00e7erikler ekleyerek profilinizi \u00e7ok daha etkile\u015fimli hale getirebiliriz. \u00d6rne\u011fin, \"Son Projelerim\" b\u00f6l\u00fcm\u00fcn\u00fc otomatik olarak g\u00fcncelleyebiliriz.<\/p>\n<h3>2. GitHub Actions: Otomasyonun Beyni<\/h3>\n<p>GitHub Actions, depo i\u015f ak\u0131\u015flar\u0131n\u0131 do\u011frudan GitHub \u00fczerinde otomatikle\u015ftiren bir CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) arac\u0131d\u0131r. Ancak sadece CI\/CD i\u00e7in de\u011fil, profil otomasyonu gibi \u00e7e\u015fitli g\u00f6revleri otomatikle\u015ftirmek i\u00e7in de harika bir ara\u00e7t\u0131r. Actions, temelde bir dizi i\u015f (job) ve ad\u0131m (step) tan\u0131mlad\u0131\u011f\u0131n\u0131z YAML dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015f\u0131r. Bu YAML dosyalar\u0131n\u0131, deponuzun <code>.github\/workflows\/<\/code> dizinine yerle\u015ftirirsiniz. Bir olay tetiklendi\u011finde (\u00f6rne\u011fin, belirli bir zaman aral\u0131\u011f\u0131, bir push i\u015flemi, bir pull request), ilgili Action \u00e7al\u0131\u015f\u0131r ve tan\u0131mlanan ad\u0131mlar\u0131 s\u0131ras\u0131yla y\u00fcr\u00fct\u00fcr.<\/p>\n<p>Profil otomasyonunda GitHub Actions'\u0131 kullanmam\u0131z\u0131n temel nedeni, GitHub'\u0131n kendi altyap\u0131s\u0131nda \u00e7al\u0131\u015fmas\u0131 ve d\u0131\u015far\u0131dan bir sunucuya veya hizmete ihtiya\u00e7 duymamas\u0131d\u0131r. Bu sayede, profilinizi g\u00fcncelleyecek bir script'i \u00e7al\u0131\u015ft\u0131rmak i\u00e7in ekstra bir kurulum yapman\u0131za gerek kalmaz. Action'lar, sanal makinelerde \u00e7al\u0131\u015f\u0131r ve \u00e7e\u015fitli programlama dillerini ve ara\u00e7lar\u0131n\u0131 destekler. Bu da bize Python, Node.js veya Bash gibi dillerle script yazma esnekli\u011fi sunar. Her Action \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, profil README.md dosyan\u0131z\u0131 otomatik olarak g\u00fcncelleyebilir ve b\u00f6ylece ziyaret\u00e7ilerinize her zaman en taze bilgileri sunabilirsiniz.<\/p>\n<h3>3. Veri Kaynaklar\u0131 ve Markdown<\/h3>\n<p>Dinamik i\u00e7erik olu\u015fturman\u0131n anahtar\u0131, bilgiyi \u00e7ekece\u011fimiz veri kaynaklar\u0131d\u0131r. Bunlar genellikle \u015funlar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li><strong>GitHub API:<\/strong> En pop\u00fcler depolay\u0131c\u0131lar\u0131n\u0131z\u0131, son aktivitelerinizi, katk\u0131lar\u0131n\u0131z\u0131 veya y\u0131ld\u0131z say\u0131n\u0131z\u0131 \u00e7ekmek i\u00e7in idealdir.<\/li>\n<li><strong>RSS Beslemeleri:<\/strong> Ki\u015fisel blogunuzdan, Medium, Dev.to veya di\u011fer platformlardan en son yaz\u0131lar\u0131n\u0131z\u0131 otomatik olarak getirebilir.<\/li>\n<li><strong>Harici API'ler:<\/strong> Stack Overflow istatistikleriniz, Wakatime gibi zaman takip ara\u00e7lar\u0131ndan al\u0131nan veriler veya di\u011fer \u00fc\u00e7\u00fcnc\u00fc taraf hizmetler.<\/li>\n<li><strong>Web Scraping (Dikkatli Kullan\u0131lmal\u0131):<\/strong> E\u011fer bir API yoksa, baz\u0131 durumlarda web sitelerinden bilgi \u00e7ekmek i\u00e7in kullan\u0131labilir, ancak yasal ve etik s\u0131n\u0131rlamalar\u0131 vard\u0131r.<\/li>\n<\/ul>\n<p>\u00c7ekti\u011fimiz bu verileri, <code>README.md<\/code> dosyas\u0131na uygun Markdown format\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek gerekir. Bu, genellikle Python veya Node.js gibi bir betik diliyle yap\u0131l\u0131r. Betik, veriyi i\u015fler, onu Markdown ba\u015fl\u0131klar\u0131, listeleri, tablolar\u0131 veya hatta resimleri \u015feklinde bi\u00e7imlendirir ve ard\u0131ndan <code>README.md<\/code> dosyas\u0131n\u0131 bu yeni i\u00e7erikle g\u00fcnceller. Bu sayede, profiliniz sadece statik metinlerden ibaret olmaz, ayn\u0131 zamanda s\u00fcrekli evrim ge\u00e7iren, canl\u0131 bir bilgi panosu haline gelir. Bir sonraki b\u00f6l\u00fcmde, GitHub Actions ile nas\u0131l ad\u0131m ad\u0131m bir otomasyon ak\u0131\u015f\u0131 olu\u015fturaca\u011f\u0131m\u0131z\u0131 ve bu veri kaynaklar\u0131n\u0131 nas\u0131l entegre edece\u011fimizi detayl\u0131ca inceleyece\u011fiz.<\/p>\n<h2>GitHub Actions ile \u0130lk Ad\u0131m: Otomasyon \u00c7al\u0131\u015fma Mant\u0131\u011f\u0131<\/h2>\n<p>GitHub profilinizi otomatikle\u015ftirme yolculu\u011funuzda en kritik bile\u015fenlerden biri, otomasyonun beyni olan GitHub Actions't\u0131r. GitHub Actions, belirli olaylar tetiklendi\u011finde otomatik olarak \u00e7al\u0131\u015fan i\u015f ak\u0131\u015flar\u0131 olu\u015fturman\u0131za olanak tan\u0131r. Bu b\u00f6l\u00fcmde, GitHub Actions'\u0131n temel yap\u0131s\u0131n\u0131, bir i\u015f ak\u0131\u015f\u0131n\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve profilinizi otomatik olarak g\u00fcncellemek i\u00e7in ilk ad\u0131mlar\u0131 nas\u0131l ataca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Unutmay\u0131n, bu ad\u0131mlar, otomasyonun temelini olu\u015fturur ve ilerleyen seviyelerde daha karma\u015f\u0131k senaryolar i\u00e7in size sa\u011flam bir zemin haz\u0131rlar.<\/p>\n<h3>1. <code>.github\/workflows<\/code> Dizini Olu\u015fturma<\/h3>\n<p>Her GitHub Action i\u015f ak\u0131\u015f\u0131, deponuzun k\u00f6k dizininde bulunan <code>.github\/workflows\/<\/code> adl\u0131 \u00f6zel bir dizin i\u00e7inde yer alan YAML (YAML Ain't Markup Language) dosyalar\u0131yla tan\u0131mlan\u0131r. Bu dizini profil deponuzda (kullan\u0131c\u0131 ad\u0131n\u0131zla ayn\u0131 isme sahip olan repo) olu\u015fturman\u0131z gerekmektedir. \u00d6rne\u011fin, <code>denizdev\/denizdev<\/code> deponuz varsa, i\u00e7erisine <code>.github\/workflows\/main.yml<\/code> gibi bir dosya ekleyeceksiniz. Bu dosya, otomasyonunuzun ne zaman \u00e7al\u0131\u015faca\u011f\u0131n\u0131 ve hangi ad\u0131mlar\u0131 uygulayaca\u011f\u0131n\u0131 belirler.<\/p>\n<p>YAML dosyalar\u0131, okunmas\u0131 ve yazmas\u0131 kolay, hiyerar\u015fik bir veri serile\u015ftirme format\u0131d\u0131r. GitHub Actions, bu YAML dosyalar\u0131n\u0131 ayr\u0131\u015ft\u0131rarak i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 anlar ve y\u00fcr\u00fct\u00fcr. \u0130\u00e7eri\u011fin do\u011fru girintilenmesi (bo\u015fluklarla, tab tu\u015fu ile de\u011fil) YAML'\u0131n do\u011fru \u00e7al\u0131\u015fmas\u0131 i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h3>2. YAML Dosyas\u0131n\u0131n Yap\u0131s\u0131: <code>name<\/code>, <code>on<\/code>, <code>jobs<\/code><\/h3>\n<p>Bir GitHub Actions YAML dosyas\u0131 genellikle \u00fc\u00e7 ana b\u00f6l\u00fcmden olu\u015fur:<\/p>\n<ul>\n<li><strong><code>name<\/code>:<\/strong> \u0130\u015f ak\u0131\u015f\u0131n\u0131z\u0131n ad\u0131d\u0131r. GitHub Actions aray\u00fcz\u00fcnde g\u00f6r\u00fcnen bu ad, i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n ne yapt\u0131\u011f\u0131n\u0131 k\u0131saca \u00f6zetler.<\/li>\n<li><strong><code>on<\/code>:<\/strong> \u0130\u015f ak\u0131\u015f\u0131n\u0131n ne zaman tetiklenece\u011fini belirler. Bu, belirli bir olay (\u00f6rne\u011fin, bir <code>push<\/code>, bir <code>pull_request<\/code>) veya bir zamanlama (<code>schedule<\/code>) olabilir.<\/li>\n<li><strong><code>jobs<\/code>:<\/strong> \u0130\u015f ak\u0131\u015f\u0131n\u0131zda \u00e7al\u0131\u015facak bir veya daha fazla i\u015f grubunu tan\u0131mlar. Her i\u015fin kendine ait bir ad\u0131, \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131 bir sanal ortam (<code>runs-on<\/code>) ve bir dizi ad\u0131m\u0131 (<code>steps<\/code>) bulunur.<\/li>\n<\/ul>\n<p>\u0130\u015fte basit bir \u00f6rnek <code>main.yml<\/code> dosyas\u0131:<\/p>\n<pre><code>\nname: GitHub Profilini G\u00fcncelle\n\non:\n  schedule:\n    - cron: '0 0 * * *' # Her g\u00fcn gece yar\u0131s\u0131 UTC'de \u00e7al\u0131\u015f\u0131r\n  workflow_dispatch: # Manuel olarak tetiklemeye izin verir\n\njobs:\n  update-profile:\n    runs-on: ubuntu-latest # \u0130\u015fin Ubuntu \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar\n    steps:\n    - name: Depoyu \u00c7ek\n      uses: actions\/checkout@v3 # Depoyu sanal ortama klonlar\n\n    - name: Python Ortam\u0131n\u0131 Kur\n      uses: actions\/setup-python@v4\n      with:\n        python-version: '3.x' # Python 3.x s\u00fcr\u00fcm\u00fcn\u00fc kullan\n\n    - name: Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckle\n      run: pip install requests beautifulsoup4 # Gerekli Python k\u00fct\u00fcphanelerini y\u00fckle\n\n    - name: Profil G\u00fcncelleme Scriptini \u00c7al\u0131\u015ft\u0131r\n      run: python generate_readme.py # Kendi Python scriptimizi \u00e7al\u0131\u015ft\u0131r\n\n    - name: De\u011fi\u015fiklikleri Kaydet\n      uses: stefanzweifel\/git-auto-commit-action@v4\n      with:\n        commit_message: 'Otomatik profil g\u00fcncelleme' # Otomatik commit mesaj\u0131\n        branch: main # De\u011fi\u015fikliklerin g\u00f6nderilece\u011fi dal (branch)\n    <\/pre>\n<p><\/code><\/p>\n<h3>3. Tetikleyiciler (<code>on<\/code>): <code>push<\/code> ve <code>schedule<\/code><\/h3>\n<p>Yukar\u0131daki \u00f6rnekte iki ana tetikleyici bulunmaktad\u0131r:<\/p>\n<ul>\n<li><strong><code>schedule<\/code> (Zamanlama):<\/strong> Bu, i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n belirli aral\u0131klarla otomatik olarak \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. <code>cron<\/code> format\u0131 kullan\u0131larak belirlenir. \u00d6rnekteki <code>&#039;0 0 * * *&#039;<\/code>, her g\u00fcn gece yar\u0131s\u0131 (UTC) anlam\u0131na gelir. Farkl\u0131 zamanlamalar i\u00e7in \u00e7e\u015fitli cron ifadeleri kullanabilirsiniz. \u00d6rne\u011fin, her Pazartesi sabah 9 i\u00e7in <code>0 9 * * 1<\/code> veya her saat ba\u015f\u0131 i\u00e7in <code>0 * * * *<\/code> kullanabilirsiniz.<\/li>\n<li><strong><code>workflow_dispatch<\/code> (Manuel Tetikleme):<\/strong> Bu tetikleyici, GitHub UI \u00fczerinden i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 manuel olarak ba\u015flatman\u0131za olanak tan\u0131r. Bu, \u00f6zellikle geli\u015ftirme ve hata ay\u0131klama s\u0131ras\u0131nda \u00e7ok kullan\u0131\u015fl\u0131d\u0131r, \u00e7\u00fcnk\u00fc her de\u011fi\u015fiklik i\u00e7in bir push yapman\u0131za gerek kalmaz.<\/li>\n<\/ul>\n<p>Bunlara ek olarak, bir deponuza yap\u0131lan her <code>push<\/code> i\u015flemi sonras\u0131 tetiklemek i\u00e7in <code>on: [push]<\/code> veya bir <code>pull_request<\/code> a\u00e7\u0131ld\u0131\u011f\u0131nda tetiklemek i\u00e7in <code>on: [pull_request]<\/code> kullanabilirsiniz. Profil otomasyonu i\u00e7in genellikle <code>schedule<\/code> tetikleyicisi tercih edilir, b\u00f6ylece profiliniz d\u00fczenli olarak g\u00fcncel kal\u0131r.<\/p>\n<h3>4. Ad\u0131mlar (<code>steps<\/code>): <code>uses<\/code> ve <code>run<\/code><\/h3>\n<p>Her i\u015f (job) bir dizi ad\u0131mdan (step) olu\u015fur. Ad\u0131mlar, i\u015fin ger\u00e7ekle\u015ftirece\u011fi belirli eylemleri tan\u0131mlar:<\/p>\n<ul>\n<li><strong><code>uses<\/code>:<\/strong> Bu anahtar kelime, \u00f6nceden tan\u0131mlanm\u0131\u015f bir Action'\u0131 (GitHub taraf\u0131ndan sa\u011flanan veya topluluk taraf\u0131ndan geli\u015ftirilen) kullanman\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, <code>actions\/checkout@v3<\/code> deponuzu klonlamak i\u00e7in kullan\u0131l\u0131rken, <code>actions\/setup-python@v4<\/code> Python ortam\u0131n\u0131 kurmak i\u00e7in kullan\u0131l\u0131r. Bu haz\u0131r Action'lar, s\u0131k\u00e7a kullan\u0131lan g\u00f6revleri h\u0131zl\u0131ca entegre etmenizi sa\u011flar.<\/li>\n<li><strong><code>run<\/code>:<\/strong> Bu anahtar kelime, sanal ortamda \u00e7al\u0131\u015ft\u0131r\u0131lacak tek bir komut sat\u0131r\u0131 komutunu veya bir dizi komutu tan\u0131mlar. Yukar\u0131daki \u00f6rnekte, <code>pip install<\/code> ile Python ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fckledik ve ard\u0131ndan kendi <code>python generate_readme.py<\/code> scriptimizi \u00e7al\u0131\u015ft\u0131rd\u0131k. Bu <code>run<\/code> ad\u0131mlar\u0131 sayesinde, profilinizi g\u00fcncelleyecek \u00f6zel mant\u0131\u011f\u0131n\u0131z\u0131 uygulayabilirsiniz.<\/li>\n<\/ul>\n<p><strong>G\u00f6rsel Betimleme: Bir GitHub Action'\u0131n Ak\u0131\u015f\u0131<\/strong><\/p>\n<p>Bir i\u015f ak\u0131\u015f\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, ad\u0131mlar yukar\u0131dan a\u015fa\u011f\u0131ya do\u011fru s\u0131rayla y\u00fcr\u00fct\u00fcl\u00fcr. Her ad\u0131m\u0131n kendine \u00f6zg\u00fc bir \u00e7\u0131kt\u0131s\u0131 ve durumu (ba\u015far\u0131l\u0131, ba\u015far\u0131s\u0131z) vard\u0131r. GitHub Actions aray\u00fcz\u00fcnde bu ak\u0131\u015f\u0131 g\u00f6rsel olarak takip edebilirsiniz:<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>Ad\u0131m #<\/th>\n<th>Ad\u0131m Ad\u0131<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>Durum<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>Depoyu \u00c7ek<\/td>\n<td>Profil deponuzun sanal ortama kopyalanmas\u0131.<\/td>\n<td>\u2705 Ba\u015far\u0131l\u0131<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>Python Ortam\u0131n\u0131 Kur<\/td>\n<td>Gerekli Python s\u00fcr\u00fcm\u00fcn\u00fcn haz\u0131rlanmas\u0131.<\/td>\n<td>\u2705 Ba\u015far\u0131l\u0131<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckle<\/td>\n<td><code>requests<\/code>, <code>BeautifulSoup<\/code> gibi k\u00fct\u00fcphanelerin kurulumu.<\/td>\n<td>\u2705 Ba\u015far\u0131l\u0131<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>Profil G\u00fcncelleme Scriptini \u00c7al\u0131\u015ft\u0131r<\/td>\n<td><code>generate_readme.py<\/code> scriptinin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131. Bu script <code>README.md<\/code> dosyas\u0131n\u0131 g\u00fcnceller.<\/td>\n<td>\u2705 Ba\u015far\u0131l\u0131<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>De\u011fi\u015fiklikleri Kaydet<\/td>\n<td>G\u00fcncellenmi\u015f <code>README.md<\/code> dosyas\u0131n\u0131n depoya geri commit edilmesi.<\/td>\n<td>\u2705 Ba\u015far\u0131l\u0131<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu temel ak\u0131\u015f\u0131 anlamak, kendi profil otomasyonunuzu ba\u015far\u0131yla kurman\u0131z i\u00e7in kritik \u00f6neme sahiptir. Bir sonraki b\u00f6l\u00fcmde, dinamik i\u00e7erik olu\u015fturmak i\u00e7in GitHub API's\u0131ndan nas\u0131l veri \u00e7ekece\u011fimizi ve bu veriyi README.md'ye nas\u0131l yazaca\u011f\u0131m\u0131z\u0131 inceleyece\u011fiz.<\/p>\n<h3>Dinamik \u0130\u00e7erik \u00dcretimi: GitHub API's\u0131ndan Veri \u00c7ekme<\/h3>\n<p>GitHub profilinizi ger\u00e7ekten dinamik hale getirmenin yollar\u0131ndan biri, GitHub'\u0131n kendi API's\u0131n\u0131 kullanarak programatik olarak bilgi \u00e7ekmektir. Bu sayede, en \u00e7ok y\u0131ld\u0131z alan depolar\u0131n\u0131z\u0131, son katk\u0131lar\u0131n\u0131z\u0131, favori dillerinizi veya di\u011fer ilgi \u00e7ekici istatistiklerinizi otomatik olarak profilinize ekleyebilirsiniz. GitHub API'si, RESTful bir yap\u0131ya sahiptir ve hem kimlik do\u011frulamal\u0131 (authenticated) hem de kimlik do\u011frulamas\u0131 yap\u0131lmam\u0131\u015f (unauthenticated) istekleri destekler. Profil otomasyonumuz i\u00e7in genellikle kimlik do\u011frulamal\u0131 isteklere ihtiyac\u0131m\u0131z olacakt\u0131r, \u00e7\u00fcnk\u00fc \u00f6zel depolara veya kullan\u0131c\u0131ya \u00f6zel verilere eri\u015fim gerekebilir.<\/p>\n<h3>1. GitHub API'sine Eri\u015fim ve Kimlik Do\u011frulama (<code>GITHUB_TOKEN<\/code>)<\/h3>\n<p>GitHub API'sine eri\u015fim i\u00e7in bir ki\u015fisel eri\u015fim belirteci (Personal Access Token - PAT) veya GitHub Actions'\u0131n sa\u011flad\u0131\u011f\u0131 dahili <code>GITHUB_TOKEN<\/code> kullanabiliriz. GitHub Actions i\u00e7inde \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z i\u00e7in, <code>GITHUB_TOKEN<\/code> kullanmak en g\u00fcvenli ve \u00f6nerilen y\u00f6ntemdir. Bu belirte\u00e7, Action \u00e7al\u0131\u015ft\u0131\u011f\u0131nda otomatik olarak kullan\u0131labilir hale gelir ve depo i\u00e7eri\u011fini okuma\/yazma gibi belirli izinlere sahiptir. Bu izinler, Action'\u0131n YAML dosyas\u0131nda (<code>permissions<\/code> anahtar kelimesiyle) ayarlanabilir. Genellikle, <code>contents: write<\/code> izni, <code>README.md<\/code> dosyas\u0131n\u0131 g\u00fcncellemek i\u00e7in yeterlidir.<\/p>\n<p>API isteklerini g\u00f6ndermek i\u00e7in Python'da <code>requests<\/code> k\u00fct\u00fcphanesi veya Node.js'te <code>octokit<\/code> gibi \u00f6zel k\u00fct\u00fcphaneler kullanabiliriz. Bu k\u00fct\u00fcphaneler, API etkile\u015fimini basitle\u015ftirir ve hata y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code>\n# .github\/workflows\/main.yml dosyas\u0131ndaki permissions \u00f6rne\u011fi\njobs:\n  update-profile:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write # README.md dosyas\u0131n\u0131 g\u00fcncellemek i\u00e7in yazma izni\n    steps:\n      # ... di\u011fer ad\u0131mlar\n    <\/pre>\n<p><\/code><\/p>\n<h3>2. Python ile Script Yazma: Pop\u00fcler Depolar\u0131 \u00c7ekme<\/h3>\n<p>\u015eimdi, GitHub API's\u0131ndan en \u00e7ok y\u0131ld\u0131z alan (pop\u00fcler) depolar\u0131n\u0131z\u0131 \u00e7eken basit bir Python scripti olu\u015ftural\u0131m. Bu script, profil deponuzun k\u00f6k dizininde <code>generate_readme.py<\/code> ad\u0131yla yer alabilir.<\/p>\n<pre><code>\nimport os\nimport requests\n\nUSERNAME = \"sizin_github_kullanici_adiniz\" # Kendi GitHub kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 buraya yaz\u0131n\nREADME_PATH = \"README.md\"\nTOKEN = os.getenv(\"GITHUB_TOKEN\") # GITHUB_TOKEN'\u0131 ortam de\u011fi\u015fkeninden al\n\ndef get_starred_repos(username, token):\n    headers = {\"Authorization\": f\"token {token}\"} if token else {}\n    url = f\"https:\/\/api.github.com\/users\/{username}\/repos?sort=stars&per_page=5\"\n    response = requests.get(url, headers=headers)\n    response.raise_for_status() # HTTP hatalar\u0131n\u0131 kontrol et\n    return response.json()\n\ndef update_readme(repos):\n    with open(README_PATH, \"r\", encoding=\"utf-8\") as f:\n        content = f.read()\n\n    # <!-- STARRED_REPOS_START --> ve <!-- STARRED_REPOS_END --> aras\u0131na i\u00e7erik ekleyece\u011fiz\n    start_marker = \"<!-- STARRED_REPOS_START -->\"\n    end_marker = \"<!-- STARRED_REPOS_END -->\"\n\n    before_content = content.split(start_marker)[0]\n    after_content = content.split(end_marker)[1]\n\n    new_repo_list = []\n    for repo in repos:\n        name = repo[\"name\"]\n        description = repo[\"description\"] or \"A\u00e7\u0131klama yok.\"\n        stars = repo[\"stargazers_count\"]\n        html_url = repo[\"html_url\"]\n        new_repo_list.append(f\"- [{name}]({html_url}) ({stars} \u2b50\ufe0f) - {description}\")\n\n    new_content = \"\\n\".join(new_repo_list)\n    final_readme_content = f\"{before_content}{start_marker}\\n{new_content}\\n{end_marker}{after_content}\"\n\n    with open(README_PATH, \"w\", encoding=\"utf-8\") as f:\n        f.write(final_readme_content)\n\nif __name__ == \"__main__\":\n    try:\n        starred_repos = get_starred_repos(USERNAME, TOKEN)\n        update_readme(starred_repos)\n        print(\"README.md ba\u015far\u0131yla g\u00fcncellendi!\")\n    except Exception as e:\n        print(f\"Hata olu\u015ftu: {e}\")\n\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu script, GitHub API'sine bir GET iste\u011fi g\u00f6ndererek kullan\u0131c\u0131n\u0131n en \u00e7ok y\u0131ld\u0131z alan 5 deposunu \u00e7eker. Ard\u0131ndan, bu depolar\u0131 bir Markdown listesi format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. <code>README.md<\/code> dosyan\u0131zda, bu listenin eklenece\u011fi yeri belirten \u00f6zel yorum i\u015faretleyicileri (<code><!-- STARRED_REPOS_START --><\/code> ve <code><!-- STARRED_REPOS_END --><\/code>) kullanman\u0131z gerekir. Script, bu i\u015faretleyiciler aras\u0131ndaki i\u00e7eri\u011fi yeni liste ile de\u011fi\u015ftirecektir.<\/p>\n<div class=\"tip-box\">\n        <strong>Uzman \u0130pucu:<\/strong> API isteklerinde h\u0131z limitlerine (rate limits) dikkat edin. GitHub API'si, kimlik do\u011frulamas\u0131 yap\u0131lmam\u0131\u015f istekler i\u00e7in daha kat\u0131 limitlere sahiptir. Kimlik do\u011frulama kullanarak bu limitleri art\u0131rabilir ve daha sorunsuz bir deneyim ya\u015fayabilirsiniz.\n    <\/div>\n<h3>3. Markdown'a D\u00f6n\u00fc\u015ft\u00fcrme ve G\u00fcncelleme<\/h3>\n<p>Yukar\u0131daki script, \u00e7ekilen JSON verisini okunakl\u0131 bir Markdown listesine d\u00f6n\u00fc\u015ft\u00fcrme mant\u0131\u011f\u0131n\u0131 i\u00e7eriyor. Anahtar nokta, <code>README.md<\/code> dosyas\u0131n\u0131 okuyup, \u00f6zel i\u015faretleyicileri kullanarak dinamik i\u00e7eri\u011fi yerle\u015ftirmek ve sonra dosyay\u0131 geri yazmakt\u0131r. Bu i\u015flem, Action \u00e7al\u0131\u015ft\u0131\u011f\u0131nda otomatik olarak ger\u00e7ekle\u015fir ve <code>git-auto-commit-action<\/code> Action'\u0131 taraf\u0131ndan deponuza geri g\u00f6nderilir.<\/p>\n<p><strong>Vaka Analizi: En \u00c7ok Kullan\u0131lan Dillerin Otomatik Listelenmesi<\/strong><\/p>\n<p>Benzer bir yakla\u015f\u0131mla, GitHub profilinizdeki en \u00e7ok kullan\u0131lan programlama dillerini de otomatik olarak listeleyebilirsiniz. Bunun i\u00e7in yine GitHub API'sini kullanarak her bir deponun dil kullan\u0131m istatistiklerini \u00e7ekebilir, bu verileri toplay\u0131p en pop\u00fcler dilleri y\u00fczde oranlar\u0131yla birlikte profilinize ekleyebilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre><code>\n# generate_readme.py i\u00e7inde ba\u015fka bir fonksiyon (\u00f6rnek)\ndef get_language_stats(username, token):\n    headers = {\"Authorization\": f\"token {token}\"} if token else {}\n    repos_url = f\"https:\/\/api.github.com\/users\/{username}\/repos?per_page=100\"\n    repos_response = requests.get(repos_url, headers=headers)\n    repos_response.raise_for_status()\n    repos = repos_response.json()\n\n    language_counts = {}\n    for repo in repos:\n        if repo[\"private\"] or repo[\"fork\"]: # \u00d6zel veya fork edilmi\u015f depolar\u0131 atla\n            continue\n        lang_url = repo[\"languages_url\"]\n        lang_response = requests.get(lang_url, headers=headers)\n        lang_response.raise_for_status()\n        languages = lang_response.json()\n        for lang, bytes_count in languages.items():\n            language_counts[lang] = language_counts.get(lang, 0) + bytes_count\n\n    total_bytes = sum(language_counts.values())\n    \n    # Y\u00fczde oranlar\u0131n\u0131 hesapla ve s\u0131rala\n    sorted_languages = sorted(language_counts.items(), key=lambda item: item[1], reverse=True)\n    \n    language_list = []\n    for lang, bytes_count in sorted_languages[:5]: # En pop\u00fcler 5 dil\n        percentage = (bytes_count \/ total_bytes) * 100 if total_bytes > 0 else 0\n        language_list.append(f\"- {lang}: {percentage:.2f}%\")\n    return language_list\n\n# update_readme fonksiyonunda bu yeni i\u00e7eri\u011fi de eklemek i\u00e7in de\u011fi\u015fiklikler yapmal\u0131s\u0131n\u0131z\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu t\u00fcr scriptler, profilinizin sadece bir kartvizit olmaktan \u00f6te, aktif bir geli\u015ftirici portf\u00f6y\u00fc haline gelmesini sa\u011flar. Bir sonraki ad\u0131mda, harici veri kaynaklar\u0131n\u0131 nas\u0131l entegre edece\u011fimizi ve profilimize g\u00f6rsel zenginlik katacak \u00f6\u011feleri nas\u0131l ekleyece\u011fimizi ke\u015ffedece\u011fiz.<\/p>\n<h2>Harici Veri Kaynaklar\u0131n\u0131 Entegre Etme ve G\u00f6rselle\u015ftirme<\/h2>\n<p>GitHub profilinizin otomasyon potansiyeli, sadece GitHub API'si ile s\u0131n\u0131rl\u0131 de\u011fildir. Ki\u015fisel blogunuzdan, Dev.to veya Medium gibi platformlardaki yaz\u0131lar\u0131n\u0131zdan, Twitter etkile\u015fimlerinizden veya hatta kodlama istatistiklerinizden gelen verileri entegre ederek profilinizi daha da zenginle\u015ftirebilirsiniz. Bu b\u00f6l\u00fcmde, harici veri kaynaklar\u0131n\u0131 nas\u0131l \u00e7ekece\u011finizi ve bu verileri profilinizde nas\u0131l g\u00f6rselle\u015ftirece\u011finizi ele alaca\u011f\u0131z, b\u00f6ylece ziyaret\u00e7ileriniz i\u00e7in daha kapsaml\u0131 ve etkileyici bir deneyim sunabilirsiniz.<\/p>\n<h3>1. RSS Ak\u0131\u015flar\u0131 (Blog Yaz\u0131lar\u0131, Medium, Dev.to)<\/h3>\n<p>Blog yaz\u0131lar\u0131, geli\u015ftiricilerin bilgi payla\u015f\u0131m\u0131 ve ki\u015fisel markala\u015fmas\u0131 i\u00e7in vazge\u00e7ilmezdir. RSS (Really Simple Syndication) beslemeleri, blogunuzdaki en son yay\u0131nlar\u0131 otomatik olarak \u00e7ekmek ve profilinize eklemek i\u00e7in m\u00fckemmel bir y\u00f6ntemdir. \u00c7o\u011fu blog platformu, RSS beslemesini otomatik olarak sa\u011flar. \u00d6rne\u011fin, bir Medium kullan\u0131c\u0131s\u0131n\u0131n RSS beslemesi genellikle <code>https:\/\/medium.com\/feed\/@kullaniciadi<\/code> \u015feklindedir.<\/p>\n<p>Python'da, <code>feedparser<\/code> gibi k\u00fct\u00fcphaneler RSS beslemelerini ayr\u0131\u015ft\u0131rmak i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r. \u0130\u015fte bir RSS feed'den son 3 yaz\u0131y\u0131 \u00e7eken ve bunlar\u0131 Markdown'a d\u00f6n\u00fc\u015ft\u00fcren bir script \u00f6rne\u011fi:<\/p>\n<pre><code>\nimport feedparser\nimport os\n\nBLOG_RSS_URL = \"https:\/\/medium.com\/feed\/@sizin_medium_kullanici_adiniz\" # Kendi blogunuzun RSS URL'si\nREADME_PATH = \"README.md\"\n\ndef get_latest_blog_posts(rss_url, num_posts=3):\n    feed = feedparser.parse(rss_url)\n    posts = []\n    for entry in feed.entries[:num_posts]:\n        posts.append({\n            \"title\": entry.title,\n            \"link\": entry.link,\n            \"published\": entry.published_parsed\n        })\n    return posts\n\ndef update_readme_with_blog_posts(posts):\n    with open(README_PATH, \"r\", encoding=\"utf-8\") as f:\n        content = f.read()\n\n    start_marker = \"<!-- BLOG_POSTS_START -->\"\n    end_marker = \"<!-- BLOG_POSTS_END -->\"\n\n    before_content = content.split(start_marker)[0]\n    after_content = content.split(end_marker)[1]\n\n    new_post_list = []\n    for post in posts:\n        new_post_list.append(f\"- [{post['title']}]({post['link']})\")\n\n    new_content = \"\\n\".join(new_post_list)\n    final_readme_content = f\"{before_content}{start_marker}\\n{new_content}\\n{end_marker}{after_content}\"\n\n    with open(README_PATH, \"w\", encoding=\"utf-8\") as f:\n        f.write(final_readme_content)\n\nif __name__ == \"__main__\":\n    try:\n        latest_posts = get_latest_blog_posts(BLOG_RSS_URL)\n        update_readme_with_blog_posts(latest_posts)\n        print(\"README.md blog yaz\u0131lar\u0131yla ba\u015far\u0131yla g\u00fcncellendi!\")\n    except Exception as e:\n        print(f\"Hata olu\u015ftu: {e}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu script'i <code>generate_readme.py<\/code> dosyan\u0131z\u0131n bir par\u00e7as\u0131 olarak entegre edebilir veya ayr\u0131 bir script olarak \u00e7al\u0131\u015ft\u0131rabilirsiniz. Unutmay\u0131n, <code>README.md<\/code> dosyan\u0131zda yine <code><!-- BLOG_POSTS_START --><\/code> ve <code><!-- BLOG_POSTS_END --><\/code> gibi yorum i\u015faretleyicilerine ihtiyac\u0131n\u0131z olacak.<\/p>\n<h3>2. \u0130statistik Kartlar\u0131 (GitHub Stats, Wakatime)<\/h3>\n<p>GitHub profilinizde sadece metin de\u011fil, g\u00f6rsel istatistikler de sergilemek, profilinizi \u00e7ok daha \u00e7ekici hale getirebilir. <code>github-readme-stats<\/code> ve <code>wakatime-readme-stats<\/code> gibi projeler, GitHub istatistiklerinizi veya kodlama zaman\u0131 \u00f6l\u00e7\u00fcmlerinizi dinamik olarak olu\u015fturulan SVG resimler \u015feklinde sunar. Bu kartlar\u0131 profilinize eklemek son derece basittir:<\/p>\n<pre><code>\n<!-- GitHub \u0130statistikleri -->\n<img decoding=\"async\" align=\"center\" src=\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&#038;show_icons=true&#038;locale=tr\" alt=\"Sizin Github \u0130statistikleriniz\" \/>\n\n<!-- En \u00c7ok Kullan\u0131lan Diller -->\n<img decoding=\"async\" align=\"center\" src=\"https:\/\/github-readme-stats.vercel.app\/api\/top-langs\/?username=sizin_github_kullanici_adiniz&#038;layout=compact&#038;locale=tr\" alt=\"En \u00c7ok Kullan\u0131lan Diller\" \/>\n\n<!-- WakaTime \u0130statistikleri -->\n<img decoding=\"async\" src=\"https:\/\/github-readme-stats.vercel.app\/api\/wakatime?username=sizin_wakatime_kullanici_adiniz&#038;layout=compact&#038;hide_title=true&#038;locale=tr\" alt=\"Sizin WakaTime \u0130statistikleriniz\" \/>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu SVG resimleri, her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda g\u00fcncel verilerle yeniden olu\u015fturulur, b\u00f6ylece profiliniz her zaman en yeni istatistiklerinizi g\u00f6sterir. Bu, otomatik olarak g\u00fcncellenen statik g\u00f6r\u00fcnt\u00fcler gibi d\u00fc\u015f\u00fcnebilirsiniz. G\u00f6rselle\u015ftirmeyi g\u00fc\u00e7lendiren bu kartlar, profilinize an\u0131nda profesyonellik ve derinlik katar.<\/p>\n<h3>3. Shields.io Rozetleri<\/h3>\n<p>Shields.io, projelerinizin veya profilinizin durumunu g\u00f6steren k\u00fc\u00e7\u00fck, dinamik rozetler olu\u015fturmak i\u00e7in harika bir hizmettir. \u00c7e\u015fitli entegrasyonlar (npm s\u00fcr\u00fcm\u00fc, GitHub Actions durumu, lisans bilgisi vb.) i\u00e7in kullan\u0131labilir. Bunlar\u0131 README.md dosyan\u0131za do\u011frudan Markdown olarak ekleyebilirsiniz:<\/p>\n<pre><code>\n[![GitHub Actions durumu](https:\/\/github.com\/sizin_github_kullanici_adiniz\/sizin_repo_adiniz\/actions\/workflows\/main.yml\/badge.svg)](https:\/\/github.com\/sizin_github_kullanici_adiniz\/sizin_repo_adiniz\/actions\/workflows\/main.yml)\n[![Lisans](https:\/\/img.shields.io\/badge\/Lisans-MIT-blue.svg)](https:\/\/github.com\/sizin_github_kullanici_adiniz\/sizin_repo_adiniz\/blob\/main\/LICENSE)\n[![Takip\u00e7i Say\u0131s\u0131](https:\/\/img.shields.io\/github\/followers\/sizin_github_kullanici_adiniz?style=social)](https:\/\/github.com\/sizin_github_kullanici_adiniz)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu rozetler, projenizin veya profilinizin anl\u0131k durumunu yans\u0131t\u0131r ve genellikle otomatik olarak g\u00fcncellenir. \u00d6zellikle projelerinizin CI\/CD durumunu g\u00f6stermek veya bir projenin g\u00fcncel s\u00fcr\u00fcm numaras\u0131n\u0131 belirtmek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131rlar. Estetik bir g\u00f6r\u00fcn\u00fcm sunmalar\u0131n\u0131n yan\u0131 s\u0131ra, tek bak\u0131\u015fta \u00f6nemli bilgiler sa\u011flar.<\/p>\n<p><strong>G\u00f6rsel Betimleme: Bir \u0130statistik Kart\u0131n\u0131n HTML \u00c7\u0131kt\u0131s\u0131 (ve Markdown Render Edili\u015fi)<\/strong><\/p>\n<p>Asl\u0131nda do\u011frudan HTML \u00e7\u0131kt\u0131s\u0131 olmasa da, GitHub README'niz Markdown'dan HTML'e d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcrken bu <code><img><\/code> etiketleri bir resim olarak i\u015flenir. Bu, modern taray\u0131c\u0131lar\u0131n SVG'leri do\u011frudan g\u00f6r\u00fcnt\u00fclemesi sayesinde m\u00fcmk\u00fcn olur.<\/p>\n<p>\u00d6rne\u011fin, yukar\u0131daki GitHub \u0130statistik kart\u0131, taray\u0131c\u0131n\u0131zda \u015fu \u015fekilde g\u00f6r\u00fcnecektir:<\/p>\n<pre><code>\n<div>\n  <img decoding=\"async\" src=\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&#038;show_icons=true&#038;locale=tr\" alt=\"Sizin Github \u0130statistikleriniz\" style=\"max-width: 100%; height: auto;\">\n<\/div>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu, Markdown'\u0131n esnekli\u011fini ve harici servislerle entegrasyon yetene\u011fini g\u00f6sterir. Bu t\u00fcr g\u00f6rsel \u00f6\u011feleri entegre ederek, profilinizi sadece bir metin belgesi olmaktan \u00e7\u0131kar\u0131p, dinamik ve g\u00f6rsel a\u00e7\u0131dan zengin bir dijital portf\u00f6y haline getirebilirsiniz. Bir sonraki b\u00f6l\u00fcmde, otomasyonunuzu daha verimli hale getirmek ve olas\u0131 sorunlar\u0131 gidermek i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h2>Otomasyonunuzu Optimize Etme ve Hata Ay\u0131klama \u0130pu\u00e7lar\u0131<\/h2>\n<p>GitHub profil otomasyonunuzu kurduktan sonra, onu daha verimli hale getirmek ve olas\u0131 sorunlar\u0131 gidermek i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131 bilmek faydal\u0131 olacakt\u0131r. Her ne kadar otomasyon hayat\u0131 kolayla\u015ft\u0131rsa da, bazen beklenmedik davran\u0131\u015flar sergileyebilir veya daha iyi performans g\u00f6sterebilir. Bu b\u00f6l\u00fcm, otomasyonunuzu optimize etmenize, hatalar\u0131 ay\u0131klaman\u0131za ve genel deneyiminizi geli\u015ftirmenize yard\u0131mc\u0131 olacak pratik bilgiler sunmaktad\u0131r.<\/p>\n<h3>1. Performans \u0130yile\u015ftirmeleri ve Zamanlama Optimizasyonu<\/h3>\n<p>Otomasyonunuzun ne kadar s\u0131kl\u0131kla \u00e7al\u0131\u015faca\u011f\u0131, performans\u0131 ve GitHub Actions dakikalar\u0131n\u0131z\u0131n t\u00fcketimi a\u00e7\u0131s\u0131ndan \u00f6nemlidir. E\u011fer dinamik i\u00e7eri\u011finiz \u00e7ok s\u0131k de\u011fi\u015fmiyorsa, i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n her saat veya her 30 dakikada bir \u00e7al\u0131\u015fmas\u0131na gerek olmayabilir. Bunun yerine, g\u00fcnde bir kez (<code>0 0 * * *<\/code>) veya haftada bir kez (<code>0 0 * * 1<\/code>) \u00e7al\u0131\u015ft\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<p><strong>Cacheleme:<\/strong> Baz\u0131 durumlarda, scriptiniz uzun s\u00fcren API istekleri veya veri i\u015fleme s\u00fcre\u00e7leri gerektirebilir. E\u011fer \u00e7ekti\u011finiz veri hemen de\u011fi\u015fmiyorsa, bu verileri \u00f6nbelle\u011fe alarak (cache) Action \u00e7al\u0131\u015fma s\u00fcresini k\u0131saltabilirsiniz. GitHub Actions, i\u015f ak\u0131\u015flar\u0131 aras\u0131nda dosyalar\u0131 \u00f6nbelle\u011fe almak i\u00e7in <code>actions\/cache<\/code> adl\u0131 bir Action sunar. \u00d6rne\u011fin, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklerken veya b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken bu olduk\u00e7a faydal\u0131 olabilir.<\/p>\n<pre><code>\n# .github\/workflows\/main.yml i\u00e7inde bir cache \u00f6rne\u011fi\n    - name: pip cache\n      uses: actions\/cache@v3\n      with:\n        path: ~\/.cache\/pip\n        key: ${{ runner.os }}-pip-${{ hashFiles('**\/requirements.txt') }}\n        restore-keys: |\n          ${{ runner.os }}-pip-\n\n    - name: Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckle (cache ile)\n      run: pip install -r requirements.txt # requirements.txt dosyas\u0131n\u0131 kullanmak daha iyidir\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu, \u00f6zellikle Python veya Node.js ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131z\u0131n her \u00e7al\u0131\u015ft\u0131rmada yeniden y\u00fcklenmesini \u00f6nleyerek zaman tasarrufu sa\u011flar.<\/p>\n<h3>2. Hata Y\u00f6netimi ve Log'lar\u0131 Okuma<\/h3>\n<p>Her otomasyon s\u00fcrecinde hatalar meydana gelebilir. Scriptinizdeki bir hata, API iste\u011finde bir sorun veya a\u011f ba\u011flant\u0131 kesintisi, Action'\u0131n\u0131z\u0131n ba\u015far\u0131s\u0131z olmas\u0131na neden olabilir. Bu durumda, GitHub Actions aray\u00fcz\u00fcndeki \"Actions\" sekmesine giderek ba\u015far\u0131s\u0131z olan \u00e7al\u0131\u015ft\u0131rmay\u0131 incelemeli ve log'lar\u0131 dikkatlice okumal\u0131s\u0131n\u0131z. Log'lar, hatan\u0131n nerede ve neden olu\u015ftu\u011funa dair de\u011ferli bilgiler sa\u011flar.<\/p>\n<p>Scriptinizde kapsaml\u0131 hata yakalama (<code>try-except<\/code> bloklar\u0131 Python'da) kullanmak, beklenmeyen durumlar\u0131 daha zarif bir \u015fekilde y\u00f6netmenize yard\u0131mc\u0131 olur ve Action log'lar\u0131nda daha anlaml\u0131 hata mesajlar\u0131 g\u00f6rmenizi sa\u011flar.<\/p>\n<pre><code>\n# Python scriptinizde hata y\u00f6netimi\ntry:\n    # API iste\u011fi veya dosya i\u015flemleri\n    response = requests.get(url)\n    response.raise_for_status()\nexcept requests.exceptions.RequestException as e:\n    print(f\"API iste\u011fi hatas\u0131: {e}\")\n    exit(1) # Action'\u0131 ba\u015far\u0131s\u0131z olarak i\u015faretle\nexcept Exception as e:\n    print(f\"Genel hata: {e}\")\n    exit(1)\n    <\/pre>\n<p><\/code><\/p>\n<p>Ayr\u0131ca, Action ad\u0131mlar\u0131n\u0131zda <code>if<\/code> ko\u015fullar\u0131 kullanarak belirli durumlarda ad\u0131mlar\u0131 atlayabilir veya farkl\u0131 eylemler ger\u00e7ekle\u015ftirebilirsiniz. \u00d6rne\u011fin, e\u011fer hi\u00e7bir de\u011fi\u015fiklik yoksa <code>git-auto-commit-action<\/code>'\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 engelleyebilirsiniz.<\/p>\n<h3>3. G\u00fcvenlik \u0130pu\u00e7lar\u0131: Token'lar\u0131n Do\u011fru Kullan\u0131m\u0131<\/h3>\n<p>Hassas bilgiler, \u00f6zellikle API anahtarlar\u0131 veya ki\u015fisel eri\u015fim belirte\u00e7leri (PAT), do\u011frudan script i\u00e7ine veya YAML dosyas\u0131na yaz\u0131lmamal\u0131d\u0131r. GitHub Actions, bu t\u00fcr bilgileri g\u00fcvenli bir \u015fekilde depolamak i\u00e7in \"Secrets\" \u00f6zelli\u011fini sunar. Deponuzun Ayarlar -> Secrets -> Actions b\u00f6l\u00fcm\u00fcnden yeni s\u0131rlar ekleyebilirsiniz. Bu s\u0131rlar, Action'\u0131n\u0131zda ortam de\u011fi\u015fkenleri olarak kullan\u0131labilir ve log'larda asla a\u00e7\u0131k\u00e7a g\u00f6r\u00fcnmezler.<\/p>\n<pre><code>\n# .github\/workflows\/main.yml dosyas\u0131nda s\u0131r kullan\u0131m\u0131\n    - name: Harici API'yi \u00c7a\u011f\u0131r\n      run: python my_external_api_script.py\n      env:\n        EXTERNAL_API_KEY: ${{ secrets.MY_EXTERNAL_API_SECRET }}\n    <\/pre>\n<p><\/code><\/p>\n<p>Kulland\u0131\u011f\u0131n\u0131z <code>GITHUB_TOKEN<\/code>'\u0131n izinlerini minimumda tutmak da iyi bir g\u00fcvenlik uygulamas\u0131d\u0131r. Yaln\u0131zca ihtiyac\u0131n\u0131z olan izinleri (\u00f6rne\u011fin, <code>contents: write<\/code>) verin.<\/p>\n<h3>4. Mobil Uyumluluk ve README \u0130\u00e7eri\u011fi<\/h3>\n<p>README.md dosyan\u0131z\u0131n, farkl\u0131 cihazlarda (masa\u00fcst\u00fc, tablet, mobil) iyi g\u00f6r\u00fcnmesi \u00f6nemlidir. Markdown, do\u011fal olarak duyarl\u0131 (responsive) bir yap\u0131ya sahip de\u011fildir, ancak i\u00e7erik d\u00fczenlemesiyle mobil deneyimi iyile\u015ftirebilirsiniz:<\/p>\n<ul>\n<li><strong>G\u00f6rsel Boyutlar\u0131:<\/strong> A\u015f\u0131r\u0131 b\u00fcy\u00fck g\u00f6rsellerden ka\u00e7\u0131n\u0131n. <code>github-readme-stats<\/code> gibi ara\u00e7lar\u0131n olu\u015fturdu\u011fu SVG'ler genellikle iyi \u00f6l\u00e7eklenir. Sabit boyutlu resimler i\u00e7in geni\u015fli\u011fi s\u0131n\u0131rlayarak (<code><img width=\"X\"><\/code> veya CSS ile) ta\u015fmay\u0131 \u00f6nleyebilirsiniz.<\/li>\n<li><strong>Basit Tablolar:<\/strong> Karma\u015f\u0131k ve \u00e7ok s\u00fctunlu tablolar, mobil cihazlarda okunmas\u0131 zor olabilir. M\u00fcmk\u00fcnse, tablolar\u0131 daha basit listelere d\u00f6n\u00fc\u015ft\u00fcrmeyi d\u00fc\u015f\u00fcn\u00fcn.<\/li>\n<li><strong>K\u0131sa Paragraflar ve Listeler:<\/strong> Mobil ekranlarda uzun metin bloklar\u0131 yerine k\u0131sa paragraflar, madde i\u015faretli listeler veya numaraland\u0131r\u0131lm\u0131\u015f listeler kullanmak daha iyi bir okunabilirlik sa\u011flar.<\/li>\n<\/ul>\n<p>Markdown i\u00e7inde do\u011frudan media query kullan\u0131m\u0131 olmasa da, olu\u015fturdu\u011funuz i\u00e7eriklerin mobil dostu olmas\u0131 i\u00e7in basit ve temiz bir yap\u0131ya sahip olmas\u0131 esast\u0131r. \u00d6rne\u011fin, istatistik kartlar\u0131 ve rozetler gibi g\u00f6rselleri yan yana yerine alt alta s\u0131ralamak, mobil cihazlarda daha iyi bir g\u00f6r\u00fcn\u00fcm sunabilir.<\/p>\n<pre><code>\n<!-- Mobil dostu g\u00f6rsel d\u00fczeni -->\n<div>\n  <img decoding=\"async\" src=\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&#038;show_icons=true\" alt=\"Github Stats\" \/>\n<\/div>\n<div>\n  <img decoding=\"async\" src=\"https:\/\/github-readme-stats.vercel.app\/api\/top-langs\/?username=sizin_github_kullanici_adiniz&#038;layout=compact\" alt=\"Top Langs\" \/>\n<\/div>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu ipu\u00e7lar\u0131, GitHub profil otomasyonunuzu daha sa\u011flam, g\u00fcvenli ve kullan\u0131c\u0131 dostu hale getirmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n, otomasyon s\u00fcrekli bir s\u00fcre\u00e7tir ve zaman zaman ince ayarlar gerektirebilir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>GitHub profilinizi otomatikle\u015ftirme yolculu\u011fumuzun sonuna geldik. Bu rehber boyunca, otomasyonun neden \u00f6nemli oldu\u011fundan ba\u015flayarak, GitHub Actions ile ilk i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, GitHub API's\u0131ndan ve harici kaynaklardan nas\u0131l veri \u00e7ekece\u011finizi ve bu verileri profilinizde nas\u0131l g\u00f6rselle\u015ftirece\u011finizi ad\u0131m ad\u0131m \u00f6\u011frendik. Ayr\u0131ca, otomasyonunuzu optimize etmek ve olas\u0131 hatalar\u0131 ay\u0131klamak i\u00e7in pratik ipu\u00e7lar\u0131n\u0131 da ele ald\u0131k. Art\u0131k, manuel g\u00fcncelleme zahmetinden kurtulup, her zaman g\u00fcncel, profesyonel ve etkileyici bir GitHub profiline sahip olman\u0131n s\u0131rr\u0131n\u0131 biliyorsunuz.<\/p>\n<p>Otomatikle\u015ftirilmi\u015f bir GitHub profili, sadece zamandan tasarruf etmenizi sa\u011flamakla kalmaz, ayn\u0131 zamanda dijital varl\u0131\u011f\u0131n\u0131z\u0131 da g\u00fc\u00e7lendirir. Projeleriniz, katk\u0131lar\u0131n\u0131z, blog yaz\u0131lar\u0131n\u0131z ve istatistikleriniz s\u00fcrekli olarak g\u00fcncellendi\u011finde, profiliniz canl\u0131 bir portf\u00f6ye d\u00f6n\u00fc\u015f\u00fcr. Bu, hem ki\u015fisel markala\u015fman\u0131z i\u00e7in hem de potansiyel i\u015fverenler veya i\u015fbirlik\u00e7ileri \u00fczerinde olumlu bir izlenim b\u0131rakmak i\u00e7in kritik \u00f6neme sahiptir. Unutmay\u0131n, g\u00f6steri\u015fli ve g\u00fcncel bir profil, yeteneklerinizi sergilemenin en etkili yollar\u0131ndan biridir ve otomasyon, bu hedefe ula\u015fman\u0131n en ak\u0131ll\u0131 yoludur.<\/p>\n<p>Bu rehberde \u00f6\u011frendiklerinizle, kendi yarat\u0131c\u0131l\u0131\u011f\u0131n\u0131z\u0131 ve teknik bilginizi birle\u015ftirerek GitHub profilinizi ki\u015fiselle\u015ftirebilir ve benzersiz bir hale getirebilirsiniz. Unutmay\u0131n, her ne kadar temel bir \u015fablon sunulsa da, otomasyonun ger\u00e7ek g\u00fcc\u00fc, onu kendi ihtiya\u00e7lar\u0131n\u0131za ve tercihlerinize g\u00f6re uyarlaman\u0131zda yatar. Kendi scriptlerinizi yazmaktan, farkl\u0131 API'leri entegre etmeye kadar pek \u00e7ok yolu deneyebilirsiniz. Ba\u015far\u0131lar dileriz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>1. GitHub Actions'\u0131 kullanmak maliyetli mi?<\/h4>\n<p><strong>Cevap:<\/strong> Hay\u0131r, GitHub Actions, halka a\u00e7\u0131k depolar i\u00e7in \u00fccretsizdir ve \u00f6zel depolar i\u00e7in de belirli bir \u00fccretsiz kullan\u0131m s\u0131n\u0131r\u0131 sunar. Bu s\u0131n\u0131rlar, \u00e7o\u011fu ki\u015fisel profil otomasyonu senaryosu i\u00e7in olduk\u00e7a c\u00f6merttir. Genellikle, ayda binlerce dakika \u00fccretsiz \u00e7al\u0131\u015fma s\u00fcresi elde edersiniz ve bu, profilinizi g\u00fcnde birka\u00e7 kez g\u00fcncellemek i\u00e7in fazlas\u0131yla yeterlidir. \u00dccretli planlara ge\u00e7i\u015f, ancak \u00e7ok yo\u011fun ve b\u00fcy\u00fck \u00f6l\u00e7ekli kurumsal kullan\u0131mlar i\u00e7in gerekli olur.<\/p>\n<h4>2. Otomasyon i\u00e7in hangi programlama dillerini kullanabilirim?<\/h4>\n<p><strong>Cevap:<\/strong> GitHub Actions, sanal makinelerde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in neredeyse t\u00fcm programlama dillerini destekler. En yayg\u0131n kullan\u0131lan diller Python ve Node.js'dir \u00e7\u00fcnk\u00fc bu dillerin zengin k\u00fct\u00fcphane ekosistemleri (API etkile\u015fimi, dosya i\u015flemleri vb.) vard\u0131r ve GitHub Actions i\u00e7inde kolayca kurulabilirler. Ancak Bash, Ruby, Go gibi dilleri de kullanabilirsiniz. \u00d6nemli olan, se\u00e7ti\u011finiz dilin, veri \u00e7ekme, i\u015fleme ve Markdown dosyas\u0131n\u0131 g\u00fcncelleme g\u00f6revlerini verimli bir \u015fekilde yerine getirebilmesidir.<\/p>\n<h4>3. Profilimi g\u00fcncellemek i\u00e7in ne s\u0131kl\u0131kla Action \u00e7al\u0131\u015ft\u0131rmal\u0131y\u0131m?<\/h4>\n<p><strong>Cevap:<\/strong> Bu, profilinizdeki dinamik i\u00e7eri\u011fin ne kadar s\u0131k g\u00fcncellendi\u011fine ba\u011fl\u0131d\u0131r. E\u011fer blog yaz\u0131lar\u0131n\u0131z veya yeni projeleriniz gibi i\u00e7erikleriniz g\u00fcnde bir veya daha az s\u0131kl\u0131kta de\u011fi\u015fiyorsa, Action'\u0131 g\u00fcnde bir kez (<code>cron: &#039;0 0 * * *&#039;<\/code>) \u00e7al\u0131\u015ft\u0131rmak yeterli olacakt\u0131r. E\u011fer daha s\u0131k g\u00fcncellenen verileriniz varsa (\u00f6rne\u011fin, ger\u00e7ek zamanl\u0131 bir istatistik), Action'\u0131 daha s\u0131k \u00e7al\u0131\u015ft\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz (\u00f6rne\u011fin, her saat ba\u015f\u0131 <code>cron: &#039;0 * * * *&#039;<\/code>). Ancak, gereksiz \u00e7al\u0131\u015ft\u0131rmalardan ka\u00e7\u0131nmak hem kaynaklar\u0131 optimize eder hem de olas\u0131 h\u0131z limitlerine tak\u0131lmay\u0131 \u00f6nler.<\/p>\n<h4>4. README.md dosyas\u0131nda \u00f6zel bir b\u00f6l\u00fcme nas\u0131l i\u00e7erik eklerim?<\/h4>\n<p><strong>Cevap:<\/strong> README.md dosyan\u0131zda \u00f6zel yorum i\u015faretleyicileri kullanabilirsiniz. \u00d6rne\u011fin, <code><!-- BA\u015eLANGI\u00c7_MARKER --><\/code> ve <code><!-- B\u0130T\u0130\u015e_MARKER --><\/code> gibi etiketler aras\u0131na dinamik i\u00e7eri\u011fi yerle\u015ftirecek bir script yazarak, dosyan\u0131n di\u011fer b\u00f6l\u00fcmlerine dokunmadan sadece bu aral\u0131\u011f\u0131 g\u00fcncelleyebilirsiniz. Script, bu i\u015faretleyiciler aras\u0131ndaki mevcut i\u00e7eri\u011fi siler ve yerine yeni i\u00e7eri\u011fi ekler.<\/p>\n<h4>5. Otomasyonumda bir hata olu\u015fursa nas\u0131l anlar\u0131m?<\/h4>\n<p><strong>Cevap:<\/strong> Bir GitHub Action i\u015f ak\u0131\u015f\u0131 ba\u015far\u0131s\u0131z oldu\u011funda, GitHub genellikle size bir e-posta bildirimi g\u00f6nderir (deponuzun ayarlar\u0131nda bildirimleri etkinle\u015ftirdiyseniz). Ayr\u0131ca, deponuzdaki \"Actions\" sekmesine giderek t\u00fcm ge\u00e7mi\u015f \u00e7al\u0131\u015ft\u0131rmalar\u0131 g\u00f6rebilirsiniz. Ba\u015far\u0131s\u0131z olan \u00e7al\u0131\u015ft\u0131rman\u0131n \u00fczerine t\u0131klayarak, her bir ad\u0131m\u0131n log'lar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyebilir ve hatan\u0131n nedenini tespit edebilirsiniz. Scriptinizdeki <code>print()<\/code> ifadeleri veya daha geli\u015fmi\u015f loglama k\u00fct\u00fcphaneleri, hata ay\u0131klama s\u00fcrecini kolayla\u015ft\u0131racakt\u0131r.<\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve&hellip;","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":[1401],"tags":[],"class_list":{"0":"post-35485","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","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>GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber<\/title>\n<meta name=\"description\" content=\"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!\" \/>\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\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta property=\"og:description\" content=\"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-30T05:01:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr\" \/>\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=\"30 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber\",\"datePublished\":\"2025-11-30T05:01:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\"},\"wordCount\":4891,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr\",\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\",\"name\":\"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr\",\"datePublished\":\"2025-11-30T05:01:16+00:00\",\"description\":\"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage\",\"url\":\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr\",\"contentUrl\":\"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber\"}]},{\"@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":"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber","description":"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!","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\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber","og_description":"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!","og_url":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-30T05:01:16+00:00","og_image":[{"url":"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr","type":"","width":"","height":""}],"author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"30 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber","datePublished":"2025-11-30T05:01:16+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/"},"wordCount":4891,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage"},"thumbnailUrl":"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr","articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/","name":"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage"},"thumbnailUrl":"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr","datePublished":"2025-11-30T05:01:16+00:00","description":"GitHub profilinizi manuel g\u00fcncellemelerle bo\u015fa harcamaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Otomasyonla zamandan tasarruf edin, profilinizi her zaman g\u00fcncel tutun ve projelerinizi \u00f6ne \u00e7\u0131kar\u0131n. Bu rehberle kendi otomatik profilinizi olu\u015fturun!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#primaryimage","url":"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr","contentUrl":"https:\/\/github-readme-stats.vercel.app\/api?username=sizin_github_kullanici_adiniz&show_icons=true&locale=tr"},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/github-profilinizi-otomatiklestirin-adim-adim-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GitHub Profilinizi Otomatikle\u015ftirin: Ad\u0131m Ad\u0131m Rehber"}]},{"@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\/35485","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=35485"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35485\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}