Skip to main content

enerji-mevzuat-takip

Testler Lisans: MIT

Türkiye elektrik ve enerji piyasası mevzuatını takip eden açık kaynak araç. Resmî Gazete'yi (asıl ve mükerrer sayılar) ve EPDK, EPİAŞ, ETKB ve TEİAŞ duyurularını tarar. Enerjiyle ilgili yeni düzenlemeleri bulur, değişen maddeleri ve yürürlük tarihlerini çıkarır, piyasa etkisine göre önem seviyesi verir.

İki şekilde kullanılır:

MCP sunucusu Günlük e-posta
Ne alırsınız Claude, Cursor gibi bir yapay zekâ asistanına "bu hafta hangi enerji mevzuatı çıktı?" diye sorarsınız Her sabah 08:00'de önem sırasına dizilmiş Türkçe rapor e-postası
API anahtarı Gerekmez. Özeti ve yorumu kendi asistanınız yapar Ücretsiz Gemini/Groq anahtarı (isteğe bağlı) + Gmail uygulama şifresi
Kurulum Tek satır yapılandırma GitHub'da "Use this template" + 3 secret
Nerede çalışır Bilgisayarınızda, siz sorduğunuzda GitHub Actions'ta, bilgisayarınız kapalıyken de

Tüm bileşenler ücretsizdir (bkz. Maliyet).

Hukuki görüş veya yatırım tavsiyesi değildir. Bağlayıcı olan, Resmî Gazete'de ve kurum sitelerinde yayımlanan metindir.


Ne yapar

  • Kaynaklar: Resmî Gazete (HTML ve PDF), EPDK duyuruları, EPİAŞ elektrik piyasası duyuruları, ETKB duyuruları, TEİAŞ duyuruları (ETKB RSS adaptörü hazır ama varsayılan olarak kapalı). Ayrıntı: docs/SOURCES.md.
  • Enerji filtresi: Elektrik piyasası (PTF, SMF, GÖP, GİP, dengeleme, uzlaştırma, tarifeler, kapasite mekanizması, depolama), yenilenebilir enerji (YEKDEM, YEKA, lisanssız üretim, YEK-G), doğal gaz, petrol/LPG, karbon/ETS, enerji verimliliği, nükleer. Türkçe eklere dayanıklı kök eşleşmesi kullanır.
  • Rutin karar ayrımı: Resmî Gazete'de her gün çıkan tek şirkete özgü EPDK kararları (lisans tadili, önlisans süre uzatımı vb.) ayrı tutulur. Piyasa genelini etkileyen kararlar (fiyat limitleri, tarifeler, usul ve esaslar) öne çıkar.
  • Kural tabanlı çıkarım: değişiklik türü, değiştirilen mevzuat ve ilk yayımı, değişen maddeler, yürürlük ve uyum tarihleri. Her tarihin dayanağı yazılır: kesin (metinde açık), hesaplanan (metindeki süreden), belirsiz. Tarih tahmin edilmez.
  • Önem seviyesi (KRİTİK / YÜKSEK / ORTA / DÜŞÜK): KRİTİK için iki şart birlikte aranır: piyasa geneline etki ve aciliyet (30 gün içinde yürürlük). Gerekçesi her kayıtta yazar.
  • Güvenilirlik: Taranamayan günler sonraki çalıştırmada telafi edilir; aynı değişiklik iki kez bildirilmez; tarama eksikse açıkça söylenir; robots.txt kurallarına uyulur.

1. MCP sunucusu (anahtarsız)

Gereken tek şey uv. Sunucu, verisini ~/.enerji-mevzuat-takip/ altındaki bir SQLite dosyasında tutar.

Claude Desktop

Ayarlar → Geliştirici → Yapılandırmayı düzenle (claude_desktop_config.json):

{
  "mcpServers": {
    "enerji-mevzuat": {
      "command": "uvx",
      "args": ["--from", "enerji-mevzuat-takip[mcp]", "enerji-mevzuat-mcp"]
    }
  }
}

Claude Code

claude mcp add enerji-mevzuat -- uvx --from "enerji-mevzuat-takip[mcp]" enerji-mevzuat-mcp

Diğer istemciler (Cursor, VS Code, Windsurf…)

Aynı komutu stdio sunucusu olarak ekleyin: komut uvx, argümanlar --from enerji-mevzuat-takip[mcp] enerji-mevzuat-mcp.

Paket henüz PyPI'de değilse doğrudan GitHub'dan çalıştırın:

uvx --from "git+https://github.com/karahanOS/enerji-mevzuat-takip" --with "mcp>=2,<3" enerji-mevzuat-mcp

İsteğe bağlı ortam değişkenleri ("env": {...}): HTTP_USER_AGENT (kaynak sitelere kendinizi tanıtmak için, ör. iletişim adresinizle), ENERJI_TAKIP_HOME (veri dizini). uvx bulunamadı hatası alırsanız command alanına tam yolu yazın (which uvx / where uvx).

Araçlar

Araç Ne yapar
guncelle(zorla, gecmis_gun) Kaynakları tarar, yeni değişiklikleri döndürür. 30 dakikada bir sınırlıdır. İlk kullanımda gecmis_gun=7 ile son haftayı alın (en fazla 14).
son_degisiklikler(gun, onem, kategori, rutin_dahil, limit) Son N günün değişiklikleri, önem sırasıyla
ara(sorgu, gun, limit) Başlık ve tam metinde arama ("YEKDEM", "azami uzlaştırma fiyatı")
degisiklik_detayi(degisiklik_id) Değiştirilen mevzuat, maddeler, yürürlük tarihleri ve dayanakları, önem gerekçesi
mevzuat_metni(degisiklik_id, baslangic, uzunluk) Tam metin, parça parça
kaynak_durumu() Her kaynağın erişim durumu ve son hatası
yururluk_tarihlerini_cikar(metin, yayim_tarihi) Herhangi bir metinden yürürlük/uyum tarihlerini kural tabanlı çıkarır

Hazır istemler (prompts): gunluk_enerji_ozeti, mevzuat_analizi(degisiklik_id). Bu istemler, asistanın yalnızca metne dayanmasını, hükümleri alıntıyla vermesini ve tarih tahmin etmemesini ister.

Örnek sorular: "Enerji mevzuatını güncelle ve bu haftanın önemli değişikliklerini özetle." · "YEKDEM'le ilgili son 3 ayda ne çıktı?" · "Dengeleme ve Uzlaştırma Yönetmeliği değişikliği ne zaman yürürlüğe giriyor?"

Beceri (skill): skill/enerji-mevzuat/SKILL.md, araçların hangi sırayla kullanılacağını ve analiz kurallarını asistana öğretir. Claude'da beceri olarak yükleyebilir veya projenizin talimatlarına ekleyebilirsiniz.


2. Günlük e-posta (GitHub şablonu)

Bilgisayarınız kapalıyken de her sabah rapor gelir.

  1. Bu depoda Use this template → Create a new repository deyin ve deponuzu Private seçin. Özel depo önerilir: GitHub, 60 gün etkinlik olmayan herkese açık depolarda zamanlanmış işleri durdurur; özel depoda ise ayda 2.000 ücretsiz dakika vardır, bu iş ayda ~100–200 dakika kullanır.

  2. Gmail uygulama şifresi alın: Google Hesabı → Güvenlik → 2 Adımlı Doğrulama'yı açın → "Uygulama şifreleri" bölümünden 16 haneli şifre oluşturun.

  3. (İsteğe bağlı) ücretsiz AI anahtarı: Gemini için https://aistudio.google.com → "Get API key" (kredi kartı istemez). Yedek olarak Groq: https://console.groq.com/keys. Anahtar yoksa rapor AI özeti olmadan, kural tabanlı bilgilerle gelir.

  4. Settings → Secrets and variables → Actions → New repository secret:

    Secret Değer
    SMTP_USERNAME Gmail adresiniz
    SMTP_PASSWORD 16 haneli uygulama şifresi
    EMAIL_TO Raporun gideceği adres(ler), virgülle
    GEMINI_API_KEY, GROQ_API_KEY (isteğe bağlı) AI anahtarları
    EMAIL_CC, ADMIN_EMAIL (isteğe bağlı)

    "Variables" sekmesine HTTP_USER_AGENT ekleyin, ör. enerji-mevzuat-takip/0.1 (iletisim: adresiniz@ornek.com).

  5. Actions → "Enerji mevzuatı – günlük tarama" → Run workflow. İlk denemede "E-posta gönderilsin mi?" kutusunu kapatabilirsiniz. Günlükte her kaynağın sonucunu görürsünüz.

  6. Bundan sonra iş her gün 08:00'de (05:00 UTC) çalışır. Veri tabanı veri dalında tek commit olarak saklanır; depo büyümez.

Secret'lar tanımlı değilse iş ağa çıkmadan "atlandı" notuyla biter. Bu yüzden şablonun kendisinde veya kurulumu bitmemiş bir kopyada hata e-postası gelmez.

Kişiselleştirme: Yerelde enerji-takip init-config çalıştırın, oluşan config/ klasörünü düzenleyip deponuza ekleyin. config/profile.yaml, AI'nın "benim açımdan önemi" bölümünü sizin ilgi alanlarınıza göre yazmasını sağlar. config/ varsa varsayılanların yerine o dosyalar kullanılır.


3. Kendi bilgisayarınızda (CLI)

pip install "enerji-mevzuat-takip[mcp]"      # veya: pipx install / uv tool install
enerji-takip init-config                     # ~/.enerji-mevzuat-takip/{config/,.env} oluşturur
# .env içine Gmail ve (isteğe bağlı) AI anahtarlarını yazın
enerji-takip check-config
enerji-takip check-llm                       # her ücretsiz sağlayıcıya 1 test isteği
enerji-takip check-sources --all             # kaynaklara erişim ve ayrıştırma
enerji-takip test-email
enerji-takip run --no-send                   # rapor ~/.enerji-mevzuat-takip/data/raporlar/ altına yazılır
enerji-takip scheduler                       # her gün 08:00 (bilgisayar açık kalmalı)

Uygulama dizini sırasıyla şöyle belirlenir: ENERJI_TAKIP_HOME ortam değişkeni → içinde config/ veya .env bulunan çalışma dizini → ~/.enerji-mevzuat-takip.

Sürekli açık bir zamanlayıcı yerine işletim sisteminin zamanlayıcısını kullanabilirsiniz: Linux/macOS'ta crontab ile 0 8 * * * enerji-takip run, Windows'ta Görev Zamanlayıcı ile her gün 08:00'de enerji-takip run.

Komut İşlev
init-config [--force] Varsayılan sources.yaml, taxonomy.yaml, profile.yaml ve .env dosyalarını uygulama dizinine kopyalar
check-config Eksik yapılandırmayı listeler (sırları göstermez)
check-llm Zincirdeki her ücretsiz sağlayıcıya küçük bir test isteği atar
check-sources [--all] Kaynaklara erişilip ayrıştırılabildiğini gösterir
run [--no-send] [--since YYYY-AA-GG] [--type gunluk|tarama] Tek seferlik tarama ve rapor; tarama yalnızca tarar
test-email Test e-postası
scheduler Yerel sürekli zamanlayıcı (08:00, açılışta telafi, saatlik sağlık kontrolü)
healthcheck Son günlük çalıştırma 26 saatten eskiyse çıkış kodu 1

Yerel Ollama ile tamamen çevrimdışı AI: ollama pull <model> ile bir model indirin, .env içinde LLM_ANALYSIS_CHAIN=ollama:<model> ve LLM_TRIAGE_CHAIN=ollama:<model> yazın.

Yapılandırma

Tüm değişkenler .env.example dosyasında açıklamalı olarak durur. Öne çıkanlar:

Değişken Açıklama
LLM_ANALYSIS_CHAIN Sıralı yedek zincir. Varsayılan: gemini:gemini-3.8-flash,gemini:gemini-3.5-flash-lite,groq:openai/gpt-oss-120b. Anahtarı olmayan sağlayıcı atlanır; none AI'yı kapatır.
LLM_TRIAGE_CHAIN Belirsiz belgelerin ucuz ön elemesi. Varsayılan: gemini:gemini-3.5-flash-lite,groq:openai/gpt-oss-20b.
LLM_DAILY_MAX_CALLS Günlük AI çağrı tavanı (varsayılan 40).
DAILY_REPORT_TIME Yerel zamanlayıcı saati. GitHub Actions'ta saat iş akışındaki cron satırından ayarlanır.
SEND_EMPTY_REPORTS Değişiklik olmayan günlerde de "değişiklik yok" e-postası gelsin mi (varsayılan evet).
ENERJI_TAKIP_HOME Uygulama dizini (veri, rapor, config/).

Model adları sağlayıcıların 23.10.2026 tarihli listelerinden alındı. Sağlayıcılar modelleri zamanla değiştirir; check-llm hata verirse güncel adı zincire yazın.


Maliyet — her bileşen ücretsiz

Bileşen Ne için Maliyet / lisans Dikkat edilecekler
MCP sunucusu Asistan entegrasyonu Ücretsiz; API anahtarı yok Analizi kullandığınız asistan yapar; onun kendi kullanım koşulları geçerlidir.
GitHub Actions Günlük çalıştırma Özel depoda ayda 2.000 dk ücretsiz Bu iş günde birkaç dakika sürer.
Gemini API AI özeti (isteğe bağlı) Ücretsiz katman, kredi kartı gerekmez Ücretsiz katmanda Flash ve Flash-Lite modelleri var. Gönderilen içerik Google ürünlerini geliştirmek için kullanılabilir; buradaki içerik zaten kamuya açık mevzuat metni.
Groq API Yedek AI (isteğe bağlı) Ücretsiz plan Dakikalık token sınırı nedeniyle Groq'a giden metin 12.000 karakterle sınırlanır.
Ollama Yerel AI (isteğe bağlı) Açık kaynak (MIT) Bilgisayarınız açık olmalı.
Gmail SMTP E-posta Ücretsiz 2 Adımlı Doğrulama ve uygulama şifresi gerekir.
SQLite + Python kütüphaneleri Veri, ayrıştırma Kamu malı / MIT / BSD / Apache / PSF Bağımlılıkların yalnızca açık kaynak olduğunu bir test denetler.

Kodda ücretli bir API çağrısı yoktur (bunu da bir test denetler). Sağlayıcı kotası dolarsa sıradaki ücretsiz sağlayıcıya geçilir; hepsi doluysa rapor AI olmadan gider ve analiz ertesi gün yeniden denenir.


Bilinen kısıtlamalar

  1. Kaynak siteleri değişebilir. Ayrıştırıcılar gerçek sayfa yapısını taklit eden test verisiyle test edildi. Bir sitenin yapısı değişirse sistem sessizce boş dönmez, "EKSİK TARAMA" uyarısı verir. check-sources --all ile kontrol edin; sorun görürseniz issue açın.
  2. Resmî Gazete robots.txt: Sistem her taramada robots.txt iznini kendi kimliğiyle kontrol eder; izin yoksa taramaz ve bunu raporlar.
  3. GitHub Actions IP'leri yurt dışındadır. Bazı kamu siteleri yurt dışı erişimi kısıtlayabilir. Böyle bir kaynak Actions'ta sürekli "erişilemedi" görünürse yerelde çalıştırın.
  4. İzlenmeyen kaynaklar: EPDK kurul kararları listesi ve mevzuat.gov.tr JavaScript gerektiriyor (EPDK kararları Resmî Gazete'den izleniyor). EPİAŞ doğal gaz ve çevresel piyasa duyuruları varsayılan olarak kapalı; check-sources --all ile doğrulayıp açabilirsiniz.
  5. Rutin karar ayrımı ve önem seviyesi kural tabanlıdır. Rutin listesi her zaman bağlantılarıyla verilir.
  6. Eski–yeni metin karşılaştırması yok. Değişen maddeler değişiklik metninden çıkarılır.

Geliştirme

git clone https://github.com/karahanOS/enerji-mevzuat-takip && cd enerji-mevzuat-takip
pip install -e ".[dev]"
python -m pytest tests -q          # ağa çıkmaz; kaynaklar "TEST VERİSİ" etiketli fixture'larla taklit edilir
python -m enerji_takip.mcp_server  # MCP sunucusunu kaynak koddan çalıştırma

Mimari: docs/ARCHITECTURE.md · Veri tabanı: docs/DATABASE_SCHEMA.md · Testler: docs/TEST_RESULTS.md.

PyPI'ye yayımlama: pypi.org'da "Trusted Publisher" olarak bu depoyu ve publish.yml iş akışını tanımlayın (ortam adı pypi). Sonra GitHub'da bir Release yayımlamanız yeterli; şifre gerekmez.

enerji-mevzuat-takip/
├── enerji_takip/
│   ├── mcp_server.py       MCP sunucusu (anahtarsız)
│   ├── varsayilan/         sources.yaml · taxonomy.yaml · profile.yaml · env.example
│   ├── sources/            resmi_gazete.py · listing.py · rss.py · registry.py
│   ├── detection/          relevance.py (enerji filtresi, rutin ayrımı) · extract.py · engine.py
│   ├── analysis/           llm.py (ücretsiz sağlayıcı zinciri) · prompts.py · schema.py · analyzer.py
│   ├── reporting/          builder.py · mailer.py · templates/
│   └── classification.py · pipeline.py · scheduler.py · models.py · db.py · config.py · __main__.py
├── skill/enerji-mevzuat/SKILL.md
├── tests/
├── docs/
└── .github/workflows/      enerji-mevzuat-takip.yml (günlük) · tests.yml · publish.yml

English summary

enerji-mevzuat-takip tracks Turkish energy and electricity market regulation (Official Gazette, EPDK, EPİAŞ, ETKB, TEİAŞ). It finds new energy-related legislation, extracts amended articles and effective dates (never guessed: each date is marked exact, computed or unknown), and ranks items by market impact.

  • MCP server, no API key: uvx --from "enerji-mevzuat-takip[mcp]" enerji-mevzuat-mcp. Your own assistant (Claude, Cursor…) reads the texts and writes the summary. Tools: guncelle (scan), son_degisiklikler (recent changes), ara (search), degisiklik_detayi (details), mevzuat_metni (full text), kaynak_durumu (source status), yururluk_tarihlerini_cikar (effective-date extraction).
  • Daily email: click "Use this template", make the repo private, add SMTP_USERNAME, SMTP_PASSWORD, EMAIL_TO (optionally a free GEMINI_API_KEY) as secrets. GitHub Actions emails a Turkish report every day at 08:00 Istanbul time.
  • Everything is free; the code calls no paid APIs. Not legal or investment advice.

Lisans

MIT

Metadata

Release files for enerji-mevzuat-takip 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for enerji-mevzuat-takip 0.1.3
File Size Uploaded Provenance
enerji_mevzuat_takip-0.1.3.tar.gz 111.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for enerji-mevzuat-takip 0.1.3
File Interpreter ABI Platform
enerji_mevzuat_takip-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 220.7 kB

Release files / enerji_mevzuat_takip-0.1.3.tar.gz

Download URL enerji_mevzuat_takip-0.1.3.tar.gz
Size 111.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a3daeefe23e7858e958c5ffdc5c8ae992baba33ee2a4505b93cecec4f05a25e8
BLAKE2b-256 checksum
How to use checksums
acd7e8434e26168291eb43f26f1baa97892fd11faa42a93a43103b7be16961aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / enerji_mevzuat_takip-0.1.3-py3-none-any.whl

Download URL enerji_mevzuat_takip-0.1.3-py3-none-any.whl
Size 109.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c37aa33e4175357d891e0b755ae00caf69045de889c2b377e99093f899f37d20
BLAKE2b-256 checksum
How to use checksums
c2f3ca22d634973e17399cff1255821438d4733ae13ca3b2ba7bf7cd2142d82c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for enerji-mevzuat-takip 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for enerji_mevzuat_takip-0.1.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page