fix(newsletter): elimină jobul APScheduler intern duplicat și bugged

Jobul intern rula pe zile greșite (vineri/sâmbătă/marți în loc de
joi/vineri/luni) din cauza convenției diferite de day-of-week dintre
APScheduler și crontab standard. Scriptul standalone via OS crontab
e mecanismul corect și funcțional — rămâne singura sursă.

chore: sync stare working-tree — cron, KB notes, anaf-monitor snapshots
This commit is contained in:
2026-07-09 14:54:15 +00:00
parent d175d5ba5a
commit 7b44749e5a
22 changed files with 724 additions and 212 deletions

View File

@@ -60,11 +60,6 @@
"git": 14400
}
},
"newsletter_cercetasi": {
"enabled": true,
"cron": "0 17 * * 4,5,1",
"channel": "echo-core"
},
"allowed_tools": [
"Read",
"Edit",
@@ -109,7 +104,7 @@
"949388626146517022"
],
"user_name": "Marius",
"default_voice": "F1",
"default_voice": "M1",
"auto_leave_minutes": 5,
"stt_model": "/home/moltbot/echo-core/models/whisper-small-ro-cv11-int8"
},

View File

@@ -11,9 +11,9 @@
"report_on": "changes",
"timeout": 120,
"enabled": true,
"last_run": "2026-06-27T16:00:00.001505+00:00",
"last_run": "2026-07-09T10:00:00.001988+00:00",
"last_status": "ok",
"next_run": "2026-06-30T10:00:00+00:00"
"next_run": "2026-07-09T16:00:00+00:00"
},
{
"name": "security-audit-daily",
@@ -43,9 +43,9 @@
"report_on": "never",
"timeout": 120,
"enabled": true,
"last_run": "2026-06-27T03:30:00.002414+00:00",
"last_run": "2026-07-09T03:30:00.002154+00:00",
"last_status": "ok",
"next_run": "2026-06-28T03:30:00+00:00"
"next_run": "2026-07-10T03:30:00+00:00"
},
{
"name": "archive-tasks-daily",
@@ -59,9 +59,9 @@
"report_on": "changes",
"timeout": 60,
"enabled": true,
"last_run": "2026-06-27T03:00:00.001794+00:00",
"last_run": "2026-07-09T03:00:00.001431+00:00",
"last_status": "ok",
"next_run": "2026-06-28T03:00:00+00:00"
"next_run": "2026-07-10T03:00:00+00:00"
},
{
"name": "backup-config",
@@ -75,9 +75,9 @@
"report_on": "never",
"timeout": 120,
"enabled": true,
"last_run": "2026-06-27T02:00:00.001781+00:00",
"last_run": "2026-07-09T02:00:00.001391+00:00",
"last_status": "ok",
"next_run": "2026-06-28T02:00:00+00:00"
"next_run": "2026-07-10T02:00:00+00:00"
},
{
"name": "insights-extract",
@@ -243,9 +243,9 @@
"prompt": "Heartbeat check. Rulează src/heartbeat.py printr-un scurt raport de status.\nDacă nu e nimic de raportat (email=0, calendar nu are evenimente <2h, kb ok), răspunde doar cu HEARTBEAT_OK și oprește-te — nu trimite mesaj.\nDacă e ceva: raport scurt pe Discord #echo-work.",
"allowed_tools": [],
"enabled": true,
"last_run": "2026-06-27T18:00:00.001107+00:00",
"last_run": "2026-07-09T14:00:00.001126+00:00",
"last_status": "ok",
"next_run": "2026-06-28T06:00:00+00:00"
"next_run": "2026-07-09T18:00:00+00:00"
},
{
"name": "night-execute",

View File

@@ -1,5 +1,5 @@
{
"last_sent": 24,
"last_sent": 25,
"year": 2026,
"last_sent_at": "2026-06-25T17:01:48.783259+00:00"
"last_sent_at": "2026-07-02T19:00:58.783724+00:00"
}

View File

@@ -0,0 +1,60 @@
# Cele 6 Nevoi Fundamentale — Tony Robbins
**Sursa:** https://www.facebook.com/share/v/18up5bw3Co/
**Data:** 2026-06-29
**Tags:** @coaching @growth @psychology
---
## TL;DR
Tony Robbins explica cele 6 nevoi fundamentale ale omului si cum primele doua (top two needs) iti guverneaza toate deciziile. Exercitiu practic: identifica-ti top 2 nevoi actuale, costul lor, si ce nevoi ti-ar trebui pentru a trece la urmatorul nivel.
---
## Cele 6 Nevoi Fundamentale (Human Needs Psychology)
1. **Certainty** (siguranta, confort, predictibilitate)
2. **Uncertainty / Variety** (noutate, surpriza, adrenalina)
3. **Significance** (a fi unic, important, special, remarcat)
4. **Love & Connection** (iubire, apartenta, legatura cu ceilalti)
5. **Growth** (crestere, evolutie, progres)
6. **Contribution** (a contribui la ceva mai mare decat tine)
---
## Povestea ilustrativa — fata goth de 13 ani
Tony vede o fata cu look goth (13 cercelusi, machiaj intens) care urmareste un baiat. Conversatie rapida dezvaluie:
- **Nevoie #1: Significance** — 13 cercelusi, "nu sunt ca ceilalti, sunt unica, speciala, diferita"
- **Nevoie #2: Certainty / Comfort** — breloc Tigger de la tata, cearceafuri Tigger, tapet Tigger — confortul copilariei ca ancora
Observatie: toata "duritatea" exterioara era o strategie de significance. Sub ea, nevoia de confort era la fel de puternica.
---
## Exercitiu practic (din video)
### Intrebarea 1 — Nevoi actuale (cum ai trait pana acum)
- Care sunt top 2 nevoi **dupa care ai trait** (nu ce ai vrut, ci cum ai functionat)?
- Ce te-a costat sa ai aceste nevoi in top? Ce ai pierdut? Ce relatii/sanatate/energie a suferit?
### Intrebarea 2 — Nevoi pentru urmatorul nivel
- Care ar trebui sa fie top 2 nevoi pentru a merge la urmatorul nivel al vietii?
- Daca ai face schimbarea, cum s-ar schimba viata in bine?
---
## Insight-uri cheie
- **Nu ce vrei, ci cum traiesti** — toata lumea "vrea" iubire, dar multi pun certainty sau significance inaintea ei, deci de fapt iubirea nu e prima nevoie operationala.
- **Top 2 nevoi iti ghideaza toate deciziile** — cand stii ale tale si ale celorlalti, stii ce probleme vor aparea.
- **Schimbarea de nevoi = schimbare de identitate** — nu e mintala, e somatica ("inside your body, not just your mind").
---
## Idei acționabile
- [ ] Scrie top 2 nevoi dupa care ai trait pana acum — fii sincer, nu ce vrei sa fie @coaching
- [ ] Scrie costul concret: ce ai ratat/stricat avand acele nevoi in top @growth
- [ ] Decide top 2 nevoi pentru urmatorul nivel si descrie cum s-ar schimba viata @growth

View File

@@ -1,6 +1,6 @@
# Index — facebook/
> 10 note. Citește acest index întâi; deschide doar fișierele relevante.
> 11 note. Citește acest index întâi; deschide doar fișierele relevante.
- **[Love Yourself Even If They Don't](2026-04-29_julien-blanc-love-yourself.md)** `#self-love #self-esteem #social-approval #mindset`
Julien Blanc face un exercițiu pe stradă: îl întreabă pe un trecător care e artistul lui preferat. Răspunsul: Glenn Gould. Nimeni din grup n
@@ -22,3 +22,5 @@
Creierul tău poate schimba starea în 15 secunde fără să-ți schimbi viața. Trei trucuri: (1) **Face feedback** — relaxează fața ușor 15 sec,
- **[7 Micro Habits That Rewire Your Happiness](2026-06-07_7-micro-habits-rewire-happiness.md)**
7 micro-obiceiuri bazate pe psihologie pentru a reprograma creierul spre fericire: zâmbetul de 3 secunde (declanșează dopamină/serotonină),
- **[Cele 6 Nevoi Fundamentale — Tony Robbins](2026-06-29_tony-robbins-top-two-needs.md)** `@growth`
Tony Robbins explica cele 6 nevoi fundamentale ale omului si cum primele doua (top two needs) iti guverneaza toate deciziile. Exercitiu prac

View File

@@ -1,5 +1,106 @@
{
"notes": [
{
"file": "notes-data/youtube/2026-07-08_fine-tune-modele-mari-kimi-k27.md",
"title": "Fine-Tune the biggest open-source models (even with a bad PC)",
"date": "2026-07-08",
"tags": [],
"domains": [
"work",
"growth"
],
"types": [],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Tutorial complet despre cum se fine-tunează modele AI masive (ex: Kimi K2.7 — 1 trilion parametri) pe date proprii, fără hardware de sute de mii de dolari, folosind platforma **Fireworks AI** și tehni..."
},
{
"file": "notes-data/youtube/2026-07-04_anti-aging-mitochondria-martin-picard.md",
"title": "Anti-Aging Expert: This Reverses Gray Hairs, Restores Your Youth & Boosts Your Energy!",
"date": "2026-07-04",
"tags": [],
"domains": [
"health",
"growth"
],
"types": [],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Dr. Martin Picard explică de ce mitochondriile — nu genele — determina cat de repede imbatranesti. Secretul anti-aging nu e o suplimentare sau dieta, ci **alocarea eficienta a energiei**. Stresul cron..."
},
{
"file": "notes-data/youtube/2026-07-04_multi-millionaire-10x-income-side-hustles.md",
"title": "Multi-Millionaire: Cele mai bune side hustles pentru 10x Income",
"date": "2026-07-04",
"tags": [],
"domains": [
"growth"
],
"types": [],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Chris Koerner explică cum pornești o afacere cu $1k-$5k și ce principii l-au dus la succes cu 35+ proprietăți RV și multiple business-uri. Esența: alege unsexy, caută unfair advantage personal, evită ..."
},
{
"file": "notes-data/youtube/2026-07-04_hiking-food-250g-protein-endurance.md",
"title": "Hiking Food: 250g Protein Secret for Endurance",
"date": "2026-07-04",
"tags": [],
"domains": [
"health",
"growth"
],
"types": [],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Un hiker cu 20.000 de mile pe trasee explică sistemul lui de nutriție optimizat pentru endurance: proteina ridicată (1.3-1.5g/kg corp), grăsimi ca sursă primară de energie, carbohidrați naturali doar ..."
},
{
"file": "notes-data/facebook/2026-06-29_tony-robbins-top-two-needs.md",
"title": "Cele 6 Nevoi Fundamentale — Tony Robbins",
"date": "2026-06-29",
"tags": [],
"domains": [
"growth"
],
"types": [
"coaching"
],
"category": "facebook",
"project": null,
"subdir": null,
"video": "",
"tldr": "Tony Robbins explica cele 6 nevoi fundamentale ale omului si cum primele doua (top two needs) iti guverneaza toate deciziile. Exercitiu practic: identifica-ti top 2 nevoi actuale, costul lor, si ce ne..."
},
{
"file": "notes-data/youtube/2026-06-29_launch-million-dollar-startup-ai.md",
"title": "Watch me launch a million dollar startup with AI (live)",
"date": "2026-06-29",
"tags": [
"antreprenoriat",
"ai-marketing",
"validare",
"startup"
],
"domains": [
"work",
"growth"
],
"types": [],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Un playbook de 9 prompts copy-paste care duce de la idee la landing page live cu reclame Meta, în sub 30 de minute. Cheia: \"vibe marketing\" (nu coding) + validare pre-vânzare ÎNAINTE să construiești p..."
},
{
"file": "notes-data/youtube/2026-06-27_jeremy-grantham-ai-bubble-warning.md",
"title": "Billionaire's WARNING: I'm SELLING. The Crash Is Already Here! — Jeremy Grantham",
@@ -22,7 +123,38 @@
"project": null,
"subdir": null,
"video": "https://www.youtube.com/watch?v=32u5T6lO8qk",
"tldr": "*Notă: Sumarizarea va fi adăugată de Echo.*"
"tldr": "Jeremy Grantham — 87 ani, 60 ani experiență, 165 miliarde $ gestionați — avertizează că suntem în cea mai mare bulă investițională din istoria SUA, generată de AI. Sfatul său: vinde actiunile US tech ..."
},
{
"file": "notes-data/youtube/2026-06-27_djokovic-discipline-changes-everything.md",
"title": "Discipline Changes Everything | Novak Djokovic",
"date": "2026-06-27",
"tags": [],
"domains": [
"growth",
"health"
],
"types": [
"coaching"
],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Djokovic vorbeste despre transformarea sa prin disciplina, nutritie si mentalitate. Punctul central: limitele sunt constructe mentale, nu realitate. Mediul inconjurator face sau desface un obicei. Rel..."
},
{
"file": "notes-data/youtube/2026-06-27_cody-sanchez-unwanted-land.md",
"title": "Why I'm Buying UNWANTED Land (And You Should Too) | Cody Sanchez",
"date": "2026-06-27",
"tags": [],
"domains": [],
"types": [],
"category": "youtube",
"project": null,
"subdir": null,
"video": "",
"tldr": "Cody Sanchez cumpara 10 acri in West Texas pentru sub $10,000 in mai putin de o saptamana — ca experiment sa vada daca visul american e inca accesibil la pret mic. Concluzia: poti cumpara teren fara m..."
},
{
"file": "notes-data/youtube/2026-06-27_google-open-knowledge-format.md",
@@ -10060,11 +10192,11 @@
}
],
"stats": {
"total": 581,
"total": 589,
"by_domain": {
"work": 199,
"health": 101,
"growth": 267,
"work": 201,
"health": 104,
"growth": 274,
"sprijin": 39,
"scout": 9
},
@@ -10074,14 +10206,14 @@
"conversations": 0,
"emails": 22,
"exercitii": 4,
"facebook": 10,
"facebook": 11,
"health": 6,
"insights": 46,
"projects": 234,
"reflectii": 3,
"retete": 1,
"tools": 7,
"youtube": 151,
"youtube": 158,
"memory": 44
}
},

View File

@@ -7,14 +7,14 @@
- **[conversations/](conversations/index.md)** — 1 note
- **[emails/](emails/index.md)** — 22 note
- **[exercitii/](exercitii/index.md)** — 4 note
- **[facebook/](facebook/index.md)** — 10 note
- **[facebook/](facebook/index.md)** — 11 note
- **[health/](health/index.md)** — 6 note
- **[insights/](insights/index.md)** — 46 note
- **[projects/](projects/index.md)** — 234 note
- **[reflectii/](reflectii/index.md)** — 3 note
- **[retete/](retete/index.md)** — 1 note
- **[tools/](tools/index.md)** — 7 note
- **[youtube/](youtube/index.md)** — 151 note
- **[youtube/](youtube/index.md)** — 158 note
## Note la rădăcină

View File

@@ -0,0 +1,84 @@
# Why I'm Buying UNWANTED Land (And You Should Too) | Cody Sanchez
**Sursa:** https://youtu.be/qewYYObfsiA
**Data:** 2026-06-27
**Durata:** 21:00
**Tags:** @money @real-estate @business
---
## TL;DR
Cody Sanchez cumpara 10 acri in West Texas pentru sub $10,000 in mai putin de o saptamana — ca experiment sa vada daca visul american e inca accesibil la pret mic. Concluzia: poti cumpara teren fara multi bani, mai repede decat ti se spune, si fara permisiunea altora.
---
## Cum a facut-o — framework in 3 pasi
1. **Criterii** — ce vrei? (locatie, suprafata, restrictii)
2. **Budget** — cat max? (al lui: $10K)
3. **Timeline** — cand inchei? (al lui: 1 saptamana)
---
## Cum a gasit terenul
- Platforma: **land.com** — favoriteaza listinguri, filtrezi dupa locatie + pret
- Strategia de locatie: West Texas (langa Marfa) = teren ieftin + aproape de national parks = turisti
- **Realtor specialist** in teren raw, nu generic — Phil i-a gasit in final ce voia
- Regula de trei la apeluri: suni 3 realtor-i, astepti sa te sune unul inapoi
---
## Costuri reale (all-in)
| Item | Cost |
|------|------|
| 10 acri teren | $9,000 |
| Benzina/transport | $200 |
| Title check | $500 |
| Comision realtor | $300 |
| **Total** | **~$10,000** |
---
## Modele de profit pe teren raw
- **Glamping / camping** — rulota/camper turnkey de pe Facebook Marketplace (~$16K), inchiriata la $80150/noapte
- **Yurt-uri** (Mongolian gur) — $125150K per unitate construit; un complex de 10 yurturi face $800K gross / $300K net pe an
- **TP tents / containere** — setup ieftin ($1030K)
- **Agricultural exemptions** — taxe mai mici daca ai vaci, albine, wildlife monitoring (vanatoare/numaratoare cerbi) — minim 10 acri
---
## 5 scam-uri de evitat la teren
1. **Vanzatorul nu detine terenul** → verifica intotdeauna titlul (title policy ~$500)
2. **Terenul nu e ce zic** → inspectie in option period (10 zile)
3. **Owner financing abuziv** → clauze care permit recuperarea integrala a terenului la o singura intarziere de plata
4. **Flood planes** — chiar si in desert, drenajul conteaza
5. **Mineral rights** — o companie energetica poate detine drepturi sa foreze pe terenul tau
---
## Hack-uri practice
- **Locatie**: cumpara ieftin langa un oras turistic (Marfa, Big Bend) — turistii vin, dar se intorc la tine sa "scape de multime"
- **Option period**: negociaza 10 zile sa verifici: apa (foraj put), septic, electricitate
- **Survey**: cere title company sa comande un survey — mizeaza steak-uri la colturile terenului
- **Parteneri**: poti pune un camper/rulota pe terenul altcuiva — impart profitul
- **Procese, nu job**: checklist-uri per unitate + staff = business, nu job glorificat
---
## Quote
> "Those who say it's impossible should get out of the way of those of us who are doing it."
---
## Idei acționabile
- [ ] Exploreaza land.com pentru terenuri in zone rurale ieftine langa atractii turistice @real-estate
- [ ] Calculeaza: 1 rulota/camper $16K → $100/noapte × 200 nopti = $20K/an = breakeven in 1 an @money
- [ ] La orice cumparare teren: title policy + option period 10 zile + verify water/electric/septic @real-estate

View File

@@ -0,0 +1,52 @@
# Discipline Changes Everything | Novak Djokovic
**Sursa:** https://youtu.be/Gj8TdHnIfuk
**Data:** 2026-06-27
**Durata:** 15:24
**Tags:** @growth @health @coaching
---
## TL;DR
Djokovic vorbeste despre transformarea sa prin disciplina, nutritie si mentalitate. Punctul central: limitele sunt constructe mentale, nu realitate. Mediul inconjurator face sau desface un obicei. Relatia cu tatalsau si sentimentul de "a nu fi de ajuns" l-au condus mai departe decat succesul in sine. La 38 de ani, inca testeaza limite — din curiozitate, nu din ego.
---
## Puncte cheie
- **Mediul e totul** — stiinta spune 21 de zile pentru un nou obicei, dar fara mediu suportiv e aproape imposibil. Suntem fiinte sociale, tribale — avem nevoie sa apartinem chiar si unui singur om.
- **Limitele sunt constructe mentale** — nu se considera ca are limite. Crede ca oamenii isi construiesc propriile plafoane in minte.
- **Nutritia l-a transformat** — dupa 3 ani fara slam, ajustarea nutritiei a schimbat totul. Urca in sus.
- **Analiza infrângerilor** — Kobe Bryant il sfatuia sa revada intervale specifice din meciurile pierdute, indiferent de disconfort. Acolo e lectia reala.
- **Sentimentul de "nu sunt de ajuns"** — vine din relatia cu tatal sau. Il motiveaza, dar e si o batalie zilnica. Nu cauta sa-l elimine, cauta echilibrul.
- **Ego vs umilinta** — dupa ce "umblai pe apa", egoul te duce in locuri din care e greu sa revii. Lectia: ce a functionat 20 de ani nu e garantat sa functioneze acum.
- **Plictiseala ca instrument** — fiului sau ii spune: sta cu gandurile tale. Nu pune ecranul imediat. Plictiseala e momentul cel mai creativ.
- **Sportul ca viata condensata** — un meci de tenis e o viata intr-o ora: esti egal la start, treci prin indoieli, frici, ups and downs, si la final câstigi sau pierzi. De aceea oamenii se identifica cu atletii.
- **Transitia dupa sport** — adrenalina trebuie re-canalizata, nu pur si simplu oprita. Isi pregateste urmatoarea pasiune: sanatate, wellness, wellbeing.
- **Battlefield = crestere** — a ales LA tocmai pentru ca acolo vede cel mai bun si cel mai rau din el. Slabiciunea te tine pe drum, forta te ajuta sa impartasesti.
---
## Quote-uri
> "Not having success is not an option. It's basically a matter of existence, a survival of my family."
> "The limits are normally constructs in our mind."
> "I feel like I can use tennis as a platform to evolve into a better human being."
> "When you are bored, you don't have to instantly take a book or a screen. You need to also learn how to be with your thoughts."
> "On the battlefield, you see the best of yourself and the worst of yourself. And the worst of myself reminds me to keep going."
> "If you are only reminded of your strength, you just have your ego. If you were only reminded of your weaknesses, you would be depressed. It's that dichotomy."
---
## Idei acționabile
- [ ] **Audit mediu** — cine sunt oamenii din jur? Sustin schimbarile pe care vrei sa le faci? @growth
- [ ] **Revede un esec recent** — un interval specific dintr-o situatie pierduta. Ce ai putea face diferit? @coaching
- [ ] **10 minute fara ecran** — dimineata sau seara, sta cu gandurile. Nu cauta sa le umpli. @health
- [ ] **Battlefield personal** — ce situatie/mediu te scoate din zona de confort si te face sa cresti? Mergi acolo mai des. @growth

View File

@@ -0,0 +1,64 @@
# Watch me launch a million dollar startup with AI (live)
**URL:** https://youtu.be/Tz881ee0f8M
**Durata:** 21:59
**Canal:** L7V (Michia — serial entrepreneur, VC)
**Data:** 2026-06-29
**Tags:** @work @growth #antreprenoriat #ai-marketing #validare #startup
---
## TL;DR
Un playbook de 9 prompts copy-paste care duce de la idee la landing page live cu reclame Meta, în sub 30 de minute. Cheia: "vibe marketing" (nu coding) + validare pre-vânzare ÎNAINTE să construiești produsul. Tools: AppMagic (research piață), Claude Code + MCP-uri (Higgsfield, Meta Ads, Vercel). Filosofia centrală: găsești o categorie care deja câștigă bani → cauți "blue ocean" în acea categorie → lansezi landing page → testezi cu reclame plătite → construiești doar dacă oamenii își dau emailul.
---
## Puncte cheie
- **Validare înainte de construire** — cheltuie bani pe reclame să testezi ideea ÎNAINTE să scrii cod. E mai ieftin să afli că nimeni nu vrea produsul decât să-l construiești și să afli după.
- **AppMagic.rocks** (gratuit) — vezi ce aplicații câștigă deja bani în categoria ta. Nu ghici piața, caut-o în date reale.
- **Blue ocean în categorii dovedite** — nu concura direct, găsește un unghi nou în nișa care deja are tracțiune (ex: plant identifier → AI garden designer cu before/after viral).
- **9 prompts, tot playbook-ul** — disponibile gratuit la l7v.com/ai, mereu actualizate cu cele mai noi modele.
- **MCP-uri conectate la Claude** — Higgsfield (imagini + video ads), Meta Ads Manager, Vercel. Claude orchestrează totul fără să scrii cod.
- **Higgsfield Marketing Studio** — template-uri de ad-uri dovedite (UGC, before/after, comparison table). Nu inventezi formate, le folosești pe cele care funcționează.
- **Pixel Meta din prima zi** — setezi tracking înainte să pornești reclame ca Meta's AI să învețe cine convertește și să găsească mai mulți.
- **Self-improving loop** — ultimul prompt: extrage ad-urile cu cel mai mic cost per conversie → iterează cu Higgsfield → trimite noi teste. Se îmbunătățește singur în timp.
- **Vercel gratuit** pentru deployment — URL-ul de vercel.app convertește, nu e nevoie de domeniu propriu în faza de validare.
---
## Quotes notabile
> "Forget vibe coding. Vibe marketing is printing millionaires faster than any time in history."
> "AI does the work, we get to have a bit more fun in life. That's the whole point, right?"
> "If you are not taking advantage of this, you are being left behind by the guys that are."
> "It's much cheaper for you to validate people will buy what you're building than build it and then hope they will buy."
---
## Flow complet (9 pași)
1. **AppMagic** → găsești categoria cu tracțiune + top apps
2. **Prompt 1 Claude** → analizează app-ul, propune 5 blue ocean ideas
3. **Prompt 2** → alegi idea, Claude generează product spec complet (UX, culori, viral hooks)
4. **Prompt 3 + Higgsfield MCP** → generează mockup-uri și screenshot-uri app
5. **Prompt 4** → landing page cu quiz + email capture + dashboard admin
6. **Meta Ads Manager** → setezi pixel de conversie
7. **Prompt 5** → Claude adaugă pixelul în landing page via Meta MCP
8. **Higgsfield Marketing Studio prompt** → 20 reclame (UGC, before/after, video)
9. **Vercel MCP** → deploy landing page live
10. **Meta Ads prompt** → Claude uploadează și configurează campaniile automat
11. **Self-improve prompt** → rulezi periodic, extrage winners, iterează
---
## Aplicabilitate pentru Marius
- Playbook util pentru validarea rapidă a oricărui SaaS/tool înainte de investit timp în dev
- Pattern "găsești ce câștigă deja → blue ocean" — aplicabil și pentru features ERP ROA
- MCP-uri pentru Claude Code — model de referință pentru integrări externe
- l7v.com/ai — bookmark, prompts actualizate automat

View File

@@ -0,0 +1,54 @@
# Anti-Aging Expert: This Reverses Gray Hairs, Restores Your Youth & Boosts Your Energy!
**Sursa:** https://m.youtube.com/watch?v=6xlmaorRY0w
**Invitat:** Dr. Martin Picard — Profesor Behavioral Medicine, Columbia; Director Mitochondrial Psychobiology Group
**Durata:** 2h 38min
**Tags:** @health @growth @antrenament @energie @longevitate
---
## TL;DR
Dr. Martin Picard explică de ce mitochondriile — nu genele — determina cat de repede imbatranesti. Secretul anti-aging nu e o suplimentare sau dieta, ci **alocarea eficienta a energiei**. Stresul cronic fura 60% din energia zilnica. Scopul de viata, miscarrea si somnul sunt cele mai puternice "medicamente" pentru mitocondrii. Parul alb poate fi reversibil.
---
## Puncte cheie
- **Suntem energie**: mitochondriile genereaza ATP — tot ce facem (gandire, emotii, miscare) consuma aceasta energie dintr-un buget finit.
- **Stresul = furt de energie**: hormonii de stres cresc consumul energetic cu **60%** — energia e furata de la procesele care te mentin tanar (imunitate, reparare ADN, productie de colagen).
- **Nu stresul, ci raspunsul la stres**: problema nu e stresul acut (e sanatos), ci stresul cronic si **rezistenta la stres** (a nu accepta ce nu poti controla).
- **Parul alb e reversibil**: cercetarile Picard arata ca stresul intens albesteste parul, iar reducerea stresului poate inversa procesul — dovada directa ca imbatranirea nu e unidirectionala.
- **Rezistenta la energie**: diabetul, Alzheimer, cancerul sunt boli de "rezistenta energetica" — celulele nu mai pot procesa energia eficient (similar cu rezistenta la insulina).
- **Scopul de viata = mitocondrii mai puternice**: studii pe creiere de oameni decedati arata ca cei cu sens puternic de viata au mitocondrii mai eficiente.
- **Mancatul mai mult NU = mai multa energie**: calitatea si sincronizarea conteaza mai mult decat cantitatea; breakfast nu e obligatoriu pentru toata lumea.
- **Maratonul dubleaza mitochondriile**: antrenamentul de rezistenta este cel mai puternic stimul pentru biogeneza mitocondrala.
- **Dementa = "Diabet tip 3"**: creierul isi pierde capacitatea de a procesa glucoza; comunitatile cu stil de viata activ + social au rate mult mai mici de dementa.
- **Red light therapy**: are potential pentru mitochondrii (fotobiomodulare), dar calitatea dispozitivelor variaza enorm — alege cu atentie.
---
## Quotes
> "It's not the stress that burns us down, it's the **response to stress**."
> "We are really in service of the mitochondria. They allow us to be alive."
> "The secret to anti-aging is the **proper allocation of energy**."
> "Energy is real — it's the difference between feeling like you can change the world or feeling completely drained."
---
## Idei actionabile
- [ ] **Reduceti rezistenta**: cand simti tensiune (trafic, conflict, deadline) — nu lupta, accepta si redirecționeaza energia spre ce controlezi @health
- [ ] **Miscare aerobica regulata**: minim 3x/saptamana, zona 2 (conversation pace) — cel mai bun stimul mitocondrial @health
- [ ] **Dormit serios**: somnul e cand mitochondriile se repara — prioritate, nu optiune @health
- [ ] **Sens de viata clar**: oamenii cu scop puternic au mitocondrii mai eficiente — nu e woo, e biologie @growth
- [ ] **Stres acut DA, stres cronic NU**: expunere voluntara (sport, dus rece, post) = antrenament mitocondrial. Stres cronic (ruminate, ingrijorare) = furt de energie @health
- [ ] **Analize recomandate**: lactate la efort, GDF-15 (marker inflamatie mitocondriale), HbA1c
---
*Salvat: 2026-07-04*

View File

@@ -0,0 +1,62 @@
# Hiking Food: 250g Protein Secret for Endurance
**Sursa:** https://youtu.be/-cKnhhJsaRs?si=ZFbpiFVGGGZ2tyDt
**Durata:** 19:22
**Data:** 2026-07-04
**Tags:** @health @growth
---
## TL;DR
Un hiker cu 20.000 de mile pe trasee explică sistemul lui de nutriție optimizat pentru endurance: proteina ridicată (1.3-1.5g/kg corp), grăsimi ca sursă primară de energie, carbohidrați naturali doar ca supliment în momentele de efort intens. Mâncare reală, neprocesată, puțini ingredienți. Plus suplimente esențiale: creatină, omega-3, magneziu, teanină pentru somn.
---
## Puncte cheie
- **Proteina e prioritatea #1** — 1.3-1.5g per livră de greutate corporală la eforturi intense. La 175 lbs = ~250g proteină/zi. Lipsa proteinei duce la catabolism muscular, oboseală și dureri.
- **Grăsimile = combustibil de durata lungă** — Zone 1-2 de frecvența cardiacă (sub 150 bpm) = ardere predominant de grăsimi. Fat-adapted = poți merge ore fără a mânca, corpul folosește rezervele proprii.
- **Carbohidrații = supliment, nu aliment de bază** — Zahăr natural (curmale, miere, fructe) din 90 în 90 calorii pe oră, nu bulk. Prea mult deodată → insulina → oboseală. RX Bars (5 ingrediente: curmale, albuș, migdale, caju, fructe) > geluri procesate.
- **Mâncarea de pe traseu a lui:**
- Dimineața: pui/vită freeze-dried (2 cups reconstituit) + miere (12g zahăr natural) + bone broth + 1oz ulei de măsline
- Ziua: fistic (1800 cal/zi), beef jerky zero zahăr (3oz), 4-5 RX Bars (tăiate în jumătate, 1 jumate/oră)
- Seara: același meniu ca dimineața
- **Suplimente zilnice:**
- Dimineața: greens powder (vitamine/minerale/probiotice) + creatina monohidrat 10g + vitamina D3 10.000UI + K2
- Ziua: omega-3 3g + cofeina 100mg de 3x (300mg total)
- Seara: teanina + magneziu 1500mg (recuperare și frecventa cardiacă)
- **Zone de antrenament:** 90% zone 1-2, 1x/săptămână V2max (sprinturi în urcare). Zone 3 = "zona gri" — nu antrenează nici endurance nici putere.
- **Fat adaptation** — Keto/carnivore 1.5 ani → corp adaptat să ardă grăsimi primul. Fructele au revenit ca sursă de carbohidrați. Body fat 14% → 7-9%.
- **App recomandat:** Cronometer — pentru calculat macros
- **Carti recomandate:** "Training for the Uphill Athlete" și "The PE Diet"
---
## Citate
> "Most hikers are eating low protein, high carb, poisonous, pre-made meals with tons of ingredients you can't pronounce."
> "Carbs are not required, but they can be very useful when used as a supplement for different activities."
> "If you're finishing hiking days off sore, stiff, and exhausted, there's a simple fix."
> "Your body is going to want to use fats as a great energy source for long endurance."
---
## Idei acționabile
- [ ] Dacă faci drumetii/sport de anduranta: prioritizeaza proteina peste carbohidrati
- [ ] Creatina monohidrat — simpla, ieftina, eficienta pentru creier + muschi + energie
- [ ] Magneziu + teanina seara = somn mai bun dupa efort fizic
- [ ] Mancare reala > mese procesate pre-ambalate (citeste ingredientele)
- [ ] Principiu aplicabil si non-hiking: carbohidratii naturali ca supliment, nu baza

View File

@@ -0,0 +1,96 @@
# Multi-Millionaire: Cele mai bune side hustles pentru 10x Income
**Sursa:** https://youtu.be/0K5a1ql3Oc0?si=Uqfps8H9NZr12oQL
**Durata:** 21:49
**Invitat:** Chris Koerner — multi-milionar antreprenor, RV parks, e-commerce, ~$3-4M/an venit
**Data:** 2026-07-04
**Tags:** @growth @business @money
---
## TL;DR
Chris Koerner explică cum pornești o afacere cu $1k-$5k și ce principii l-au dus la succes cu 35+ proprietăți RV și multiple business-uri. Esența: alege unsexy, caută unfair advantage personal, evită "mirage opportunities", găsește operatori buni și plătești-i din profit (nu equity).
---
## Idei cu $1.000
### Wedding arch rental
- Construiești un arc din lemn ($300 materiale) → îl închiriezi la nunți pentru ~$1.000/eveniment
- NU mergi direct la mirese — mergi la **wedding planners** (suprafață mare, ating zeci de nunți lunar)
- Găsești planners pe: The Knot, Zola, WeddingWire — scrapezi emailuri și telefoane, toate publice
- 1 contact = potențial 1 nuntă/săptămână
- Alte idei similare: photo walls, charcuterie carts, custom pizza, aranjamente funerale
### Email newsletter local
- Facebook/Instagram ad: "Afla ce se întâmplă în [Oraș], un email/săptămână"
- Cost achiziție subscriber: ~$0.50-$1
- Cu $1.000 → 1.000 subscribers
- Monetizare: vânzare publicitate la $500/trimitere (= $500/lună din 1.000 sub-uri)
- ROI în 2 luni; scale prin copy-paste în alte orașe
- **Scrie personal, NU cu ChatGPT** — trebuie să sune ca un local autentic
- 10% din subscribers sunt business owners = potențiali sponsori chiar în lista ta
---
## Idei cu $5.000
### RV Parks (micro, 3-10 locuri)
- De 3-10x mai profitabile decât case de închiriat, la același preț de cumpărare
- Risc distribuit pe mai mulți chiriași vs. un singur chiriaș
- **Cum găsești:** Google Maps, suni 100 parcuri, 2-3 sunt deal-uri bune
- **Cum cumperi:** seller financing — vânzătorul "ține nota", tu plătești din profit lunar
- Pitch: "Dacă nu funcționează, îți iei parcul înapoi + tot ce am plătit până acum"
- $2.000 pentru due diligence (inspecții + title policy)
- $3.000 capital operațional (curent, curățenie, lansare)
- Valorizare: cap rate = profit/preț. Cumperi la 10% cap rate → crești ocupancy → valoarea urcă la 8% cap rate → parc de $200k ajunge $360k
---
## Principii de business
### Unfair advantage
> "I will only start businesses today where I have an unfair advantage."
- Fiecare are un avantaj specific: cunoștințe, rețea, audiență, experiență de nișă
- Nu e rezervat celor bogați sau educați — un teenager poate ști Roblox mai bine decât oricine
- Prioritizezi ideile unde ai un "right to win"
### Mirage opportunity
> "An industry that never seems to work for anybody but seems so obvious."
- Evitare industrii unde toată lumea încearcă dar nimeni nu reușește
- Exemple: grup apps (WhatsApp replacement), password managers, campus events apps, tools pentru podcasters (piață care renunță 95% în 6 luni)
- Dacă nu înțelegi DE CE nu funcționează → stai departe
### Fishing analogy — testezi mult
- Antreprenoriatul = un ocean imens; cei mai mulți aruncă de câteva ori și se întorc acasă
- Secretul: testezi mai mult, nu mai adânc pe o singură idee
- Fiecare test mic (Facebook ads) îți dă semnale. Urmărești semnalele.
### Unsexy = mai puțin competitiv
> "Everyone wants sexy means sexy is the most competitive."
- RV parks, wedding arches, email newsletters = nimeni nu se uită la ele
- Oportunitate tocmai pentru că nu e atrăgătoare
### Operatori buni > equity
- Succesul vine din a găsi oameni buni care să conducă business-ul
- **Equity e supraestimată** — 90% din equity merge la zero
- Plătești operatorul din cash flow (trimestrial) → se simte antreprenor, e motivat real
- A greșit în 20s: promitea equity, era sincer, dar e de puțin folos dacă business-ul nu face exit
---
## Cifre Chris Koerner
- Net profit RV parks + mobile home parks: $400k-$600k total în 7 ani
- Revenue: $3-4M/an
- 35+ proprietăți implicate
---
## Citate
> "Equity is overrated. I put a lot more emphasis on cash flow now in my 30s."
> "I love the framework: 10,000 baby boomers are retiring every single day — buy their businesses or implement AI into them."
> "The unsexy things are the most undercompeted."

View File

@@ -0,0 +1,67 @@
# Fine-Tune the biggest open-source models (even with a bad PC)
**URL:** https://youtu.be/kxstlfc8Lw4
**Durata:** 29:08
**Autor:** David Andre
**Data salvat:** 2026-07-08
**Tags:** @work @growth @ai @llm @fine-tuning
---
## TL;DR
Tutorial complet despre cum se fine-tunează modele AI masive (ex: Kimi K2.7 — 1 trilion parametri) pe date proprii, fără hardware de sute de mii de dolari, folosind platforma **Fireworks AI** și tehnica **LoRA**. Cost real pentru un fine-tune: ~$131.
---
## Puncte cheie
- **Kimi K2.7** este comparat cu Opus 4 și GPT-5, dar de 6-8x mai ieftin — unul dintre cele mai bune modele open-source acum
- **3 ingrediente** pentru fine-tuning: un model open-source, GPU-uri (prin platformă), un dataset de calitate
- **LoRA (Low Rank Adaptation)** = tehnica principă: nu antrenezi toți parametrii (imposibil), ci un "adapter" mic peste modelul înghețat — mult mai ieftin și rapid
- **HuggingFace** = sursa principală pentru datasets; recomandă dataset-uri generate de modele mai mari (ex: Fable) dacă fine-tunezi un model mare
- **Fireworks AI** = platforma folosită pentru training și deployment — interfață simplă, suportă LoRA pe Kimi K2.7, cu GPU-uri Nvidia B300 Blackwell (288 GB VRAM)
- **Costul real**: fine-tune pe dataset Fable 5 (~4600 rânduri, 1 epocă) = **$131**; un dataset mai mare a costat $800
- **Format dataset**: JSONL în formatul specific Fireworks; autorul oferă un "skill" gratuit pentru conversia oricărui dataset HuggingFace la formatul corect
- **Agenți AI în workflow**: David folosește Pi Agent, Codex, Claude Code pentru a automatiza pașii: download dataset, conversie format, verificare, wiring backend
- **Comparație fine-tuned vs default**: versiunea fine-tunată pe Fable afișează chain-of-thought (gândire vizibilă), răspunsuri mai bine formatate — deoarece Fable include thinking traces în dataset
- **Deployment simplu pe Fireworks**: alegi modelul custom, region global, GPU-uri B300, autoscaling opțional — gata să servești inferențe
---
## Pași practici (flux)
1. Alege model open-source (ex: Kimi K2.7 code)
2. Alege dataset de pe HuggingFace (de preferință de la model mai mare decât cel pe care îl fine-tunezi)
3. Descarcă dataset cu HuggingFace CLI (`huggingface-cli download ...`) — necesită token HF
4. Convertește dataset în format JSONL compatibil Fireworks (min 1000 rânduri recomandat)
5. Pe Fireworks AI: Fine-tuning → Supervised → selectezi Kimi K2.7 code LoRA → uploadeazi dataset → start
6. Când e gata (~câteva ore): Deployments → Create → selectezi modelul custom → deploy pe B300
7. Testează comparând răspunsurile față de modelul default
---
## Quote-uri relevante
> "If you want to fine-tune powerful models such as the ones with one trillion parameters, you'll need a lot of cutting-edge GPUs... each of these GPUs is like $40,000 and you can even buy eight at minimum." — de aceea folosești o platformă cloud
> "High-quality data is one of the most important factors. If you have a shitty dataset, you're going to have a shitty model."
> "A lot of you are wasting money on running everything on Opus or GPT-5, while you could get much better usage if you had the most powerful model for the planning and then the smaller open-source models that are faster."
---
## Idei acționabile pentru Marius
- [ ] Kimi K2.7 merită testat ca alternativă la Claude pentru task-uri repetitive (cost 7x mai mic) @work
- [ ] Fireworks AI = opțiune concretă dacă vrei să fine-tunezi un model pe date ROA/ERP (ex: răspunsuri standardizate pentru chatbot Maria) @work
- [ ] Dataset-ul pentru fine-tune chatbot Maria s-ar putea construi din întrebările frecvente ale clienților — deja ai sursa @work
---
## Surse menționate
- Fireworks AI: https://fireworks.ai
- HuggingFace datasets: https://huggingface.co/datasets
- Kimi K2.7 API: (primul link din video)
- Skill conversie dataset: (al doilea link din video — davidonj.com/skills)

View File

@@ -1,6 +1,6 @@
# Index — youtube/
> 151 note. Citește acest index întâi; deschide doar fișierele relevante.
> 158 note. Citește acest index întâi; deschide doar fișierele relevante.
- **[Talk to Claude on 3CX Phone System Tutorial (Full Setup)](2025-02-13_talk-to-claude-3cx-phone.md)** `@work`
Tutorial complet pentru a vorbi cu Claude Code prin telefon, folosind 3CX (sistem telefonic cloud gratuit) + un proiect GitHub custom. Setup
@@ -298,9 +298,23 @@
Tony Robbins (neidentificat explicit, dar stilul și conținutul sunt clare) explică de ce oamenii eșuează să aibă un breakthrough: atacă prob
- **[Google Just Dropped a Masterclass on Agentic Engineering](2026-06-25_google-agentic-engineering-masterclass.md)** `@work @growth`
Google a publicat un ghid de 51 de pagini despre AI-driven SDLC (Software Development Life Cycle). Concluzia centrală: **harness-ul (regulil
- **[Why I'm Buying UNWANTED Land (And You Should Too) | Cody Sanchez](2026-06-27_cody-sanchez-unwanted-land.md)**
Cody Sanchez cumpara 10 acri in West Texas pentru sub $10,000 in mai putin de o saptamana — ca experiment sa vada daca visul american e inca
- **[Discipline Changes Everything | Novak Djokovic](2026-06-27_djokovic-discipline-changes-everything.md)** `@growth @health`
Djokovic vorbeste despre transformarea sa prin disciplina, nutritie si mentalitate. Punctul central: limitele sunt constructe mentale, nu re
- **[Google's New Release Just Fixed AI Systems (Open Knowledge Format)](2026-06-27_google-open-knowledge-format.md)** `@work @growth`
Un video prezintă **Open Knowledge Format (OKF)** — un format *propus* pentru organizarea knowledge base-urilor astfel încât agenții AI să n
- **[Billionaire's WARNING: I'm SELLING. The Crash Is Already Here! — Jeremy Grantham](2026-06-27_jeremy-grantham-ai-bubble-warning.md)** `@growth @work #youtube #to-summarize #investitii #bubble #AI #sanatate #economie`
*Notă: Sumarizarea va fi adăugată de Echo.*
Jeremy Grantham — 87 ani, 60 ani experiență, 165 miliarde $ gestionați — avertizează că suntem în cea mai mare bulă investițională din istor
- **[Watch me launch a million dollar startup with AI (live)](2026-06-29_launch-million-dollar-startup-ai.md)** `@work @growth #antreprenoriat #ai-marketing #validare #startup`
Un playbook de 9 prompts copy-paste care duce de la idee la landing page live cu reclame Meta, în sub 30 de minute. Cheia: "vibe marketing"
- **[Anti-Aging Expert: This Reverses Gray Hairs, Restores Your Youth & Boosts Your Energy!](2026-07-04_anti-aging-mitochondria-martin-picard.md)** `@health @growth`
Dr. Martin Picard explică de ce mitochondriile — nu genele — determina cat de repede imbatranesti. Secretul anti-aging nu e o suplimentare s
- **[Hiking Food: 250g Protein Secret for Endurance](2026-07-04_hiking-food-250g-protein-endurance.md)** `@health @growth`
Un hiker cu 20.000 de mile pe trasee explică sistemul lui de nutriție optimizat pentru endurance: proteina ridicată (1.3-1.5g/kg corp), grăs
- **[Multi-Millionaire: Cele mai bune side hustles pentru 10x Income](2026-07-04_multi-millionaire-10x-income-side-hustles.md)** `@growth`
Chris Koerner explică cum pornești o afacere cu $1k-$5k și ce principii l-au dus la succes cu 35+ proprietăți RV și multiple business-uri. E
- **[Fine-Tune the biggest open-source models (even with a bad PC)](2026-07-08_fine-tune-modele-mari-kimi-k27.md)** `@work @growth`
Tutorial complet despre cum se fine-tunează modele AI masive (ex: Kimi K2.7 — 1 trilion parametri) pe date proprii, fără hardware de sute de
- **[thinking-on-paper](thinking-on-paper.md)** `@growth`
Metoda "Thinking on Paper" — 3 principii: **Make it Wrong** (scrie repede, fără perfecționism), **Make it Shorter** (doar keywords), **Make

View File

@@ -83,27 +83,6 @@ def main():
scheduler = Scheduler(send_callback=_send_to_channel, config=config)
client.scheduler = scheduler # type: ignore[attr-defined]
# Newsletter Cercetași checker (optional)
newsletter_config = config.get("newsletter_cercetasi", {})
if newsletter_config.get("enabled"):
from src.newsletter_cercetasi import check_and_send as check_newsletter
from apscheduler.triggers.cron import CronTrigger as _CronTrigger
async def _newsletter_tick() -> None:
try:
await check_newsletter(config, _send_to_channel)
except Exception as exc:
logger.error("Newsletter checker failed: %s", exc)
nl_cron = newsletter_config.get("cron", "0 9 * * *")
scheduler._scheduler.add_job(
_newsletter_tick,
trigger=_CronTrigger.from_crontab(nl_cron),
id="__newsletter_cercetasi__",
max_instances=1,
)
logger.info("Newsletter Cercetasi checker registered (cron: %s)", nl_cron)
# Telegram bot (optional — only if telegram_token exists)
telegram_token = get_secret("telegram_token")
telegram_app = None

View File

@@ -1,155 +0,0 @@
"""Newsletter Cercetași checker — detects new editions and sends WhatsApp summaries."""
import asyncio
import json
import logging
import subprocess
from datetime import datetime, timezone
from pathlib import Path
from typing import Awaitable, Callable
import httpx
from src.claude_session import CLAUDE_BIN, PROJECT_ROOT, _safe_env, build_system_prompt
log = logging.getLogger("echo-core.newsletter-cercetasi")
NEWSLETTER_BASE_URL = "https://cercetaiis-newsletter.beehiiv.com/p/newsletter-{n}-din-{year}"
STATE_FILE = PROJECT_ROOT / "cron" / "newsletter-cercetasi-state.json"
KB_PROMPT_FILE = (
PROJECT_ROOT / "memory" / "kb" / "projects" / "grup-sprijin" / "prompt-newsletter-cercetasi.md"
)
CLAUDE_TIMEOUT = 300
def _read_state() -> dict:
try:
return json.loads(STATE_FILE.read_text())
except (FileNotFoundError, json.JSONDecodeError):
return {"last_sent": 0, "year": datetime.now(timezone.utc).year}
def _write_state(state: dict) -> None:
STATE_FILE.parent.mkdir(parents=True, exist_ok=True)
STATE_FILE.write_text(json.dumps(state, indent=2, ensure_ascii=False) + "\n")
async def _newsletter_exists(n: int, year: int) -> bool:
"""Return True if newsletter #{n}/{year} exists (HTTP 200, no redirect to 404 page).
Beehiiv redirects non-existent newsletters: /p/newsletter-N-din-YEAR → /?404=... (302)
A real newsletter returns 200 directly without redirect.
"""
url = NEWSLETTER_BASE_URL.format(n=n, year=year)
try:
async with httpx.AsyncClient(follow_redirects=False) as client:
resp = await client.get(url, timeout=10)
return resp.status_code == 200
except Exception as e:
log.debug("Newsletter #%d/%d check failed: %s", n, year, e)
return False
def _generate_summary(n: int, year: int) -> str | None:
"""Run Claude CLI to generate summary for newsletter #{n}/{year}. Returns text or None."""
url = NEWSLETTER_BASE_URL.format(n=n, year=year)
try:
kb_prompt = KB_PROMPT_FILE.read_text()
except FileNotFoundError:
log.error("KB prompt file not found: %s", KB_PROMPT_FILE)
return None
prompt = (
f"Newsletter-ul Cercetașilor #{n}/{year} este disponibil la: {url}\n\n"
f"Urmează instrucțiunile de mai jos pentru a genera rezumatul:\n\n"
f"{kb_prompt}"
)
cmd = [
CLAUDE_BIN, "-p", prompt,
"--model", "sonnet",
"--output-format", "json",
"--allowedTools", "WebFetch",
]
try:
system_prompt = build_system_prompt()
cmd += ["--system-prompt", system_prompt]
except FileNotFoundError:
pass
try:
proc = subprocess.run(
cmd,
capture_output=True,
text=True,
timeout=CLAUDE_TIMEOUT,
env=_safe_env(),
cwd=PROJECT_ROOT,
)
if proc.returncode != 0:
log.error("Claude CLI error (exit %d): %s", proc.returncode, proc.stderr[:300])
return None
data = json.loads(proc.stdout)
return data.get("result", "").strip() or None
except subprocess.TimeoutExpired:
log.error("Claude CLI timed out for newsletter #%d", n)
return None
except (json.JSONDecodeError, Exception) as e:
log.error("Failed to generate newsletter summary: %s", e)
return None
async def check_and_send(config, send_callback) -> None:
"""Check for new newsletter; if found, generate summary and send via callback."""
state = _read_state()
current_year = datetime.now(timezone.utc).year
# New year → reset counter
if state.get("year", current_year) != current_year:
log.info("New year detected (%d%d), resetting newsletter counter", state["year"], current_year)
state = {"last_sent": 0, "year": current_year}
next_n = state["last_sent"] + 1
log.info("Checking for Cercetasi newsletter #%d/%d...", next_n, current_year)
if not await _newsletter_exists(next_n, current_year):
log.info("Newsletter #%d/%d not yet available", next_n, current_year)
return
log.info("Newsletter #%d/%d found! Generating summary...", next_n, current_year)
summary = await asyncio.to_thread(_generate_summary, next_n, current_year)
if not summary:
log.error("Failed to generate summary for newsletter #%d/%d", next_n, current_year)
return
channel = config.get("newsletter_cercetasi.channel", "echo-core")
sent = False
try:
await send_callback(channel, summary)
sent = True
log.info("Newsletter #%d/%d summary sent to channel '%s'", next_n, current_year, channel)
except Exception as e:
log.error("Send failed for newsletter #%d/%d — will retry next check: %s", next_n, current_year, e)
# Trimite și pe WhatsApp dacă e configurat
owner = config.get("whatsapp.owner", "")
if owner and sent:
owner_jid = f"{owner}@s.whatsapp.net"
bridge_url = config.get("whatsapp.bridge_url", "http://127.0.0.1:8098")
try:
async with httpx.AsyncClient() as client:
for chunk in [summary[i:i+4096] for i in range(0, len(summary), 4096)]:
await client.post(f"{bridge_url}/send", json={"to": owner_jid, "text": chunk}, timeout=15)
log.info("Newsletter #%d/%d summary sent to WhatsApp", next_n, current_year)
except Exception as e:
log.error("WhatsApp send failed for newsletter #%d/%d: %s", next_n, current_year, e)
if sent:
state["last_sent"] = next_n
state["year"] = current_year
state["last_sent_at"] = datetime.now(timezone.utc).isoformat()
_write_state(state)

View File

@@ -1,14 +1,14 @@
{
"D100": "ce27f72bc3fd5e3241480fcda3a3e14572cfbed1b26e43896037bb265d82e4f5",
"D100": "db8fc40765fd2e3b5fc1f0f900e160e6c45f625f093cf1f3bc17ea3a40d88380",
"D101": "f72fc1c29657ea11e0238806a28f6abccf5b00e45904e1e0c9385cc64491fcaf",
"D300": "cb7b55b568ab893024884971eac0367fb6fe487c297e355d64258dae437f6ddd",
"D394": "c4c4e62bda30032f12c17edf9a5087b6173a350ccb1fd750158978b3bd0acb7d",
"D406": "ca6103448d663ab16fcaef0f29f8933ef526cbf5aad12c7ff5dbd61b22ca9fc6",
"SIT_FIN_SEM_2025": "8164843431e6b703a38fbdedc7898ec6ae83559fe10f88663ba0b55f3091d5fe",
"SIT_FIN_AN_2025": "accceef5b6585a3e901d83d23fc2e60f6562eac4a2ce00f943856232bed929d6",
"DESCARCARE_DECLARATII": "b2a9534d4f64b828abdb97459b92be27ba26a0d9ba1a0f947ef4a37c968ef293",
"DESCARCARE_DECLARATII": "0fb1535fe97aeadc7f415431238fae2cf7bc52d9e0c17ce3c4b4a12db92cd733",
"D205": "d3c20a7ae70f4c18bbb7add42af035e3746d323b2e6df37a4e31ed625ddb86d9",
"D390": "4726938ed5858ec735caefd947a7d182b6dc64009478332c4feabdb36412a84e",
"D390": "31d0bf3f98eda3556039cc7e186bfcaf71bdb962459a2cf54f4d03d1d57053fc",
"BILANT_2024": "fbb8d66c2e530d8798362992c6983e07e1250188228c758cb6da4cde4f955950",
"BILANT_2025": "115531c0d6f20d84c38ebb6f621d57ecc151128ce115fe5b303160a9e2f4655a"
}

View File

@@ -62,7 +62,7 @@ valabil începand cu
01/2024 - publicat în data de 09.02.2024
soft A
actualizat în data de
17.06.2026
29.06.2026
soft J*
actualizat în data de
25.05.2026

View File

@@ -16,6 +16,7 @@ publicat în data de
soft A
actualizat în data de
07.05.2024
Formular web
soft J*
actualizat în data de
25.06.2025

View File

@@ -397,6 +397,11 @@ Raportări contabile semestriale 2025
18.07.2025
Se transmit prin portalul
e-guvernare.ro
Raportări contabile semestriale 2026
- publicat în data de
08.07.2026
Se transmit prin portalul
e-guvernare.ro
Situaţii financiare anuale/Raportări anuale an 2022
- publicat în data de
20.01.2023

View File

@@ -1,7 +1,7 @@
{
"D100": {
"soft_a_url": "http://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/D100_710_XML_0126_170626.pdf",
"soft_a_date": "17.06.2026",
"soft_a_url": "http://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/D100_710_XML_0126_290626.pdf",
"soft_a_date": "29.06.2026",
"soft_j_url": "http://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/D100_22052026.zip",
"soft_j_date": "22.05.2026"
},