Files
clawd/TOOLS.md
Echo 762ac21681 YouTube rate limit protection + progressive retry system
- New: tools/yt_download.py with cookies support + rate limit tracking
- New: docs/YOUTUBE-SETUP.md complete documentation
- Updated: night-execute jobs to use new script
- Updated: TOOLS.md with YouTube section
- Added: 5 new YouTube notes (OpenClaw, cost optimization, task system, leads)
- Added: credentials/ to .gitignore
2026-02-03 07:11:21 +00:00

15 KiB

TOOLS.md - Echo (Unificat)

Unelte comune

Email (SMTP/IMAP)

Format email rapoarte:

  • Font: 16px text, 18px titluri
  • Culori: albastru (#2563eb) pentru DONE, gri (#f3f4f6) pentru PROGRAMAT
  • Puține emoji-uri, link-uri vizibile
  • Titlu + acțiune combinate (ex: "A0 - Git commit si push")
  • Subject confirmare: "Re: [subject original]"
  • Procesare inbox:
    python3 tools/email_process.py          # listează necitite
    python3 tools/email_process.py --all    # listează toate
    python3 tools/email_process.py --save   # salvează ca note în memory/kb/emails/
    

📧 Email Whitelist

Răspuns automat permis doar pentru:

Pentru orice altă adresă: Citesc și raportez, aștept aprobare.

Flux email → note → insights:

  1. Marius face forward la echo@romfast.ro
  2. La heartbeat sau manual: python3 tools/email_process.py --save
  3. Emailul devine notă în memory/kb/emails/YYYY-MM-DD_subiect.md
  4. Completez TL;DR și extrag insights în memory/kb/insights/
  5. python3 tools/update_notes_index.py actualizează indexul

📧 Email Whitelist

Răspuns automat permis doar pentru:

Pentru orice altă adresă: Citesc și raportez, aștept aprobare.

Dashboard

Reguli dashboard:

  • Tab Activity afișează task-uri din tasks.json, sortate descrescător după timestamp
  • Când creez/completez task-uri, să am timestamp complet (ISO format cu oră)

KB (Knowledge Base)

  • Folder: memory/kb/ (youtube/, coaching/, insights/, projects/)
  • Update index: python3 tools/update_notes_index.py
  • Pagina web: https://moltbot.tailf7372d.ts.net/echo/notes.html
  • Tags domeniu: @work, @health, @growth, @sprijin, @scout
  • Tags tip: @project, @fisa, @exercitiu, @meditatie, @reflectie

IMPORTANT: Când salvez orice notă (rețete, youtube, proiecte, etc.), trebuie să:

  1. Salvez în subdirectorul potrivit din memory/kb/
  2. Rulez python3 tools/update_notes_index.py pentru a actualiza indexul
  3. Dau link-ul către pagina notes.html

Ce e: Căutare semantică în fișierele .md din memory/.

Cum funcționează:

  • Clawdbot indexează automat fișierele (watcher + debounce 1.5s)
  • Embeddings generate local cu Ollama (all-minilm, 384 dim)
  • Index stocat în ~/.clawdbot/memory/echo.sqlite

Ce se indexează:

  • memory/*.md - note zilnice, approved-tasks, etc.
  • memory/kb/**/*.md - toate notele din KB (youtube, coaching, insights, projects, etc.)

Când folosesc memory_search:

  • Întrebări despre trecut: "ce am decis despre coaching"
  • Context recent: "ce s-a întâmplat ieri"

Comenzi:

memory_search query="text" maxResults=5
memory_get path="memory/file.md" from=1 lines=50

Indexare automată: La fiecare modificare fișier în memory/, Clawdbot:

  1. Detectează schimbarea (watcher)
  2. Așteaptă 1.5s (debounce)
  3. Re-indexează DOAR fișierul modificat (incremental)
  4. Celelalte fișiere rămân neatinse

Git

  • Repo: ~/clawd → gitea.romfast.ro/romfast/clawd
  • Commit: python3 tools/git_commit.py --push

ANAF Monitor

  • Script: python3 tools/anaf-monitor/monitor_v2.py
  • Monitorizează: D100, D101, D200, D390, D406, situații financiare, E-Factura

Google Calendar

  • Credentials: credentials/google-calendar.json (OAuth client)
  • Token: credentials/google-calendar-token.json (auto-refresh)
  • Acces: Read + Write (calendar.events)
  • Venv: ~/clawd/venv/ (activate cu source venv/bin/activate)

Script: python3 tools/calendar_check.py [mode]

  • today - evenimente azi + mâine
  • week - evenimente săptămâna curentă
  • travel - reminder-uri pentru NLP/București (bilete + cazare)
  • busy - verifică dacă e ocupat ACUM (pentru "nu deranja")
  • soon [ore] - evenimente în următoarele N ore (default 2)
  • all - toate cele de mai sus

Travel detection:

  • Keywords: nlp, bucuresti, bucurești, bucharest
  • 7-11 zile înainte → "Cumpără bilete + asigură cazare"
  • 3-6 zile înainte → "⚠️ URGENT: Verifică dacă ai bilete!"

Creare evenimente (Python):

from tools.calendar_check import create_event
create_event(
    summary='Titlu',
    start_datetime='2026-02-05T15:00:00',
    duration_minutes=60,
    description='Opțional',
    reminders=[60, 15],  # minute înainte (default: [30])
    is_travel=False      # True = reminders seara înainte + 2h
)

Reminders automate:

  • Evenimente normale: 30 min înainte
  • Evenimente travel (is_travel=True): seara înainte (18:00) + 2h înainte
  • Custom: reminders=[120, 30] = 2h + 30min

Integrat în:

  • morning-report - azi/mâine/peste 2 zile + travel reminders
  • evening-report - mâine (reminder seară)
  • weekly-planning-sun - săptămâna următoare + travel
  • respiratie-orar - skip dacă busy în calendar
  • heartbeat - alertă dacă eveniment în <2h

Revocă accesul: https://myaccount.google.com/permissions

Pauze Respirație (Pattern Interrupt)

  • Bancă tehnici: memory/kb/tehnici-pauza.md
  • Script: python3 tools/pauza_random.py - alege random, afișează cu context
  • Job: respiratie-orar (09:00-19:00 București, orar) → #echo-self
  • Format output:
    **Nume Tehnică**
    Pași de urmat
    📊 Rezultat (ce obții)
    📚 Sursă (autor/studiu)
    

Flux actualizare tehnici:

  1. Sursă: Insights din video-uri/articole procesate, tehnici din NLP/coaching
  2. Cine: Echo AUTOMAT prin job insights-extract (08:00 și 19:00 București)
  3. Ce caută: respirație, relaxare, mindfulness, pattern interrupt, mișcare scurtă (1-5 min)
  4. Cum: Verifică dacă nu există deja → adaugă în secțiunea potrivită (BIROU 09-17 / ACASĂ 18+)
  5. Format: Nume ### → bullet pași → - **Rezultat:**- **Sursă:** [autor](link)

Surse curente: Tony Robbins, Wim Hof, Jon Kabat-Zinn (MBSR), Dr. Andrew Weil, Amy Cuddy, Cal Newport

Link-uri sursă:

  • Notă din KB → https://moltbot.tailf7372d.ts.net/echo/files.html#memory/kb/...
  • Resursă externă → link direct (TED, Healthline, etc.)

Cron Jobs

Oră (UTC) Oră (București) Job Canal Ce face
00:00 02:00 content-discovery - Caută video+articole pe teme recente → memory/kb/
01:00 03:00 night-execute-late #echo-work Continuă execuția task-uri (run 2)
03:00 05:00 archive-tasks #echo-work Arhivează task-uri vechi
06:00,17:00 08:00,19:00 insights-extract - Extrage insights din memory/kb/ + actualizează tehnici-pauza.md
06:30 08:30 morning-report 📧 EMAIL Raport dimineață - vezi FLUX-JOBURI.md
07:00 09:00 morning-coaching #echo-self + 📧 Gând + provocare → memory/kb/coaching/
07-17 09-19 respiratie-orar #echo-self Pauze orare (skip dacă busy în calendar)
15:00 mar,joi 17:00 project-checkin #echo-work Check-in Vending Master
18:00 20:00 evening-report 📧 EMAIL Raport seară - vezi FLUX-JOBURI.md
19:00 21:00 evening-coaching #echo-self + 📧 Reflecție seară → memory/kb/coaching/
20:00 22:00 seara-merit-reminder #echo-self Reminder lista "10 lucruri pentru care merit respect"
19:00 dum 21:00 weekly-planning #echo-work Planning săptămânal
21:00 23:00 night-execute #echo-work Execută task-uri aprobate (run 1)

Marcaje insights:

  • [ ] = disponibil (rapoarte pot propune)
  • [x] = executat/implementat
  • [—] = skip/refuzat

Răspuns la rapoarte email: Marius răspunde cu:

  • 1 pentru X,Y = execută ACUM propunerile X și Y
  • 2 pentru X,Y = pune în tasks pentru noaptea asta
  • 3 pentru X,Y = NU (skip, marchez [—])
  • Text liber = procesez și răspund

La heartbeat verific inbox și procesez răspunsurile.

Răspuns la rapoarte email: Marius răspunde cu:

  • 1 pentru X,Y = execută ACUM propunerile X și Y
  • 2 pentru X,Y = pune în tasks pentru noaptea asta
  • 3 pentru X,Y = NU (skip, marchez [—])
  • Text liber = procesez și răspund

La heartbeat verific inbox și procesez răspunsurile.

Comenzi:

cron action=list              # vezi toate joburile
cron action=run jobId=X       # rulează manual
cron action=update jobId=X    # modifică job

Regulă: Când modific joburi, actualizez și acest tabel!


Infrastructură

Servicii LLM/AI locale

LXC Serviciu IP:Port Utilizare
flowise (104) Ollama 10.0.20.161:11434 Embeddings (all-minilm), LLM local
flowise (104) Flowise 10.0.20.161:3000 Flow builder
dokploy (103) Dokploy 10.0.20.? Deployment platform

Modele Ollama disponibile:

  • all-minilm - embeddings rapid (45MB) ← folosit pentru memory_search
  • nomic-embed-text - embeddings calitate (274MB)
  • llama3.2:3b-instruct-q8_0 - LLM conversație (3.4GB)
  • smollm:135m - LLM mic rapid (91MB)

Docker LXC (portainer)

  • Host: 10.0.20.170 (LXC 100 pe pvemini)
  • User: echo
  • SSH: ssh echo@10.0.20.170
  • Portainer: https://10.0.20.170:9443
  • Docker: v28.3.3 + Compose v2.39.1
  • Resurse: 1GB RAM, 20GB disk
  • Proiecte: /opt/docker/

Containere:

Container Port Status Descriere
portainer 9443 Management Docker
nginx 443, 8080 Reverse proxy
roa-efactura 5003 ⚠️ E-Factura ANAF
pdf-qr-app 5002 QR facturi
flask_app 5001 ROA Flask
bt-web-automation 5000, 8081 BT automation
pulse 7655 Monitoring Proxmox
wol-manager - Wake-on-LAN
rustdesk (hbbs+hbbr) 21115-21119 Remote desktop server

Proiecte docker-compose:

  • /opt/docker/docker-compose.yaml - stack principal (nginx, flask, efactura, qr)
  • /opt/docker/wol/docker-compose.yml - Wake-on-LAN
  • /opt/docker/qrinvoice/docker-compose.yml - QR Invoice app

Proxmox Cluster (3 noduri)

User: echo | Acces: doar din 10.0.20.173 (moltbot) | Sudo: qm, pct, pvesh

pveelite (10.0.20.202)

  • Resurse: 16GB RAM, 557GB disk
  • SSH: ssh echo@10.0.20.202
  • Scripturi: /opt/scripts/
    • oracle-backup-monitor-proxmox.sh - zilnic 21:00, verifică backup Oracle
    • weekly-dr-test-proxmox.sh - sâmbătă 06:00, test restore Oracle DR (VM 109)
VMID Tip Nume Status
109 VM oracle-dr-windows stopped
101 LXC minecraft stopped
110 LXC moltbot running
301 LXC docker-portainer-template stopped

pvemini (10.0.20.201)

  • Resurse: 64GB RAM, 1.4TB disk
  • SSH: ssh echo@10.0.20.201
  • Scripturi monitorizare: /opt/scripts/
    • ha-monitor.sh - status cluster HA
    • monitor-ssl-certificates.sh - verifică SSL-uri zilnic
    • ups-shutdown-cluster.sh - shutdown orchestrat la UPS critic
    • ups-monthly-test.sh - test baterie UPS lunar (1 ale lunii)
    • ups-maintenance-shutdown.sh - shutdown pentru mentenanță UPS
    • vm107-monitor.sh - monitorizează VM 107
  • Emailuri automate: backup, cluster status, UPS, restore Oracle (sâmbătă)
Cron Oră Script/Job
Zilnic 00:00 ha-monitor.sh Status cluster HA
1 ale lunii 00:00 ups-monthly-test.sh Test baterie UPS
Zilnic 02:00 vzdump backup VM 100,108,104,106,201,171 → storage "backup"
Zilnic 22:00 vzdump backup LXC 101,110 (moltbot) → backup-pvemini-nfs
VMID Tip Nume Status
201 VM roacentral running
300 VM Win11-Template stopped
302 VM oracle-test-302 stopped
100 LXC portainer running
103 LXC dokploy running
104 LXC flowise running
105 LXC test stopped
106 LXC gitea running
108 LXC central-oracle running
171 LXC claude-agent running
LXC 171 - claude-agent (Development Environment)
  • IP: 10.0.20.171
  • Resurse: 4 cores, 16GB RAM, 32GB disk
  • OS: Ubuntu (unprivileged, nesting enabled)
  • Tailscale: Da (acces remote)

Servicii:

  • code-server@claude — VS Code în browser
  • ttyd — Web Terminal
  • ssh — acces direct

Claude Code:

  • Instalat și configurat
  • Git configurat pentru gitea.romfast.ro
  • Mod interactiv: claude (în terminal)
  • Mod programatic: claude -p "task description" — pentru sarcini automatizate

Utilizare:

# Acces SSH
ssh user@10.0.20.171

# Sau prin Proxmox
ssh echo@10.0.20.201 "sudo pct exec 171 -- bash"

# Claude Code - interactiv
claude

# Claude Code - task direct
claude -p "descrie sarcina aici"

pve1 (10.0.20.200)

  • Resurse: 32GB RAM, 1.3TB disk
  • SSH: ssh echo@10.0.20.200
  • Status: Gol (fără VM/LXC)

Unelte per domeniu

Self (wellbeing, coaching)

  • Ritual zilnic: 08:00 și 23:00 - citate cu format specific
  • Tehnici CNV, NLP, Sleight of Mouth
  • Tracking sănătate (de creat)
  • Resurse NMG (de adăugat)
  • Post negru tracker (de creat)

Sprijin (grup joi)

  • Notes: filtru @sprijin pe https://moltbot.tailf7372d.ts.net/echo/notes.html
  • Proiect: memory/kb/projects/grup-sprijin/
  • Biblioteca activități: memory/kb/projects/grup-sprijin/biblioteca.json
  • Fișe: memory/kb/projects/grup-sprijin/fise/
  • Template: memory/kb/projects/grup-sprijin/template-fisa.md

Scout (cercetași)

  • Template activități scout
  • Locații Constanța (de completat)
  • Contacte echipă (de completat)

YouTube Subtitle Download (Rate Limit Protected)

Script: python3 tools/yt_download.py URL [URL2] ...

Setup:

  • Cookies: credentials/youtube-cookies.txt (export din browser)
  • Deno: ~/.deno/bin/deno (pentru JS challenges)

Limite:

  • Max 30 video-uri per sesiune
  • Sleep 20s între downloads
  • Progressive retry: 2h → 4h → 24h

Rate limit state: memory/youtube-rate-limit.json

Exit codes:

  • 0 = success
  • 1 = some errors
  • 2 = rate limited (429)
  • 3 = în cooldown, retry mai târziu

Verificare status:

python3 tools/yt_download.py  # fără args = arată status
cat memory/youtube-rate-limit.json