nordabiz/scripts
Maciej Pienczyn ce9513b4bb
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
fix: Remove Brave Search from social media audit — too many false positives
Brave Search matched unrelated companies by name token (e.g. VINDOR matched
vindorclothing, vindormusic, beautybyneyador). Social media profiles are now
sourced only from website scraping and manual admin entry.

- Disabled BraveSearcher initialization and call in audit_company()
- Removed Brave Search step from audit progress animation
- Updated missing profile message with explanation and link to profile editor
- Added migration 071 to clean up existing brave_search entries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 18:20:52 +01:00
..
assign_category_parents.py feat(categories): Hierarchiczna struktura kategorii 2026-01-28 20:51:15 +01:00
company-data-collector.js refactor: Rebranding i aktualizacja modelu AI 2026-01-29 14:08:39 +01:00
competitor_monitor_cron.py feat: Add new services, scripts, and competitor dashboard 2026-02-07 12:00:54 +01:00
cron_extract_knowledge.py feat(zopk): Rozbudowa bazy wiedzy ZOPK 2026-01-17 10:57:11 +01:00
download_ceidg_data.py feat: Add company logos to search results, hide events section 2026-01-11 15:32:53 +01:00
download_krs_pdf.py feat: Add company logos to search results, hide events section 2026-01-11 15:32:53 +01:00
dr-restore.sh test: Add comprehensive testing infrastructure 2026-02-02 07:52:34 +01:00
fetch_ceidg_api.py feat: Display ALL KRS data in company profile 2026-02-01 07:44:33 +01:00
fetch_news_images.py fix: Poprawione dekodowanie URL Google News + użycie source_domain 2026-01-15 06:10:59 +01:00
fix_google_news_images.py fix: Usunięto Session z decode_google_news_url, dodano max_depth 2026-01-15 07:45:02 +01:00
fix_google_news_sources.py feat(zopk): Skrypt do naprawy źródeł newsów z Google News 2026-01-15 08:06:40 +01:00
fix_year_established.py feat: Email DKIM/SPF/DMARC config + year_established data fill 2026-01-14 15:01:01 +01:00
generate_audit_report.py refactor(seo): Rename FID to INP across entire codebase 2026-02-08 12:58:41 +01:00
import_calendar_2026.py fix(calendar): Poprawiono godzinę "Chwila dla Biznesu" z 18:00 na 19:00 2026-01-21 21:56:55 +01:00
import_ceidg_to_db.py feat: Add PKD codes and CEIDG owner data to company profiles 2026-01-13 16:07:03 +01:00
import_excel_members_2026_01_13.py feat: Add source tracking to events + import scripts 2026-01-13 10:22:24 +01:00
import_kaszubia_2030.py refactor: Rebranding i aktualizacja modelu AI 2026-01-29 14:08:39 +01:00
import_krs_people.py feat: Add company logos to search results, hide events section 2026-01-11 15:32:53 +01:00
import_member_since.py feat: Dodanie daty przystąpienia do Izby NORDA na profilu firmy 2026-01-14 06:57:00 +01:00
import_whatsapp_feb2026.py feat(calendar): Show 3 upcoming events on homepage + WhatsApp data import 2026-02-12 16:29:07 +01:00
link_users_to_persons.py feat: Link Users to Persons (KRS data) 2026-01-13 15:07:02 +01:00
list_forum_topics.py feat: Add 'test' category for forum topics to separate test content 2026-01-13 11:48:08 +01:00
mark_test_classifieds.py feat: Add toggle button to hide/show test items on B2B board 2026-01-13 13:08:11 +01:00
mark_test_topics.py feat: Add 'test' category for forum topics to separate test content 2026-01-13 11:48:08 +01:00
migrate_rada_data.py fix(migration): Fix email_verified in secretary creation 2026-02-04 15:28:22 +01:00
pagespeed_client.py refactor(seo): Rename FID to INP across entire codebase 2026-02-08 12:58:41 +01:00
parse_krs_pdf.py feat: Add company logos to search results, hide events section 2026-01-11 15:32:53 +01:00
README.md refactor: Rebranding i aktualizacja modelu AI 2026-01-29 14:08:39 +01:00
register_whatsapp_attendees.py refactor(rbac): Migrate legacy is_admin checks to role-based has_role()/set_role() 2026-02-05 21:06:22 +01:00
run_migration.py fix(admin): Naprawiono błędne nazwy endpointów w breadcrumbs 2026-01-17 09:03:01 +01:00
scan_websites_for_nip.py fix: Remove sticky sidebar on account pages + add Companies to admin menu 2026-02-01 07:03:55 +01:00
search_ceidg_by_name.py fix: Rename pkd_codes column to ceidg_pkd_list to avoid backref conflict 2026-02-01 07:22:32 +01:00
seo_analyzer.py auto-claude: 3.2 - Add TechnicalSEOChecker class to scripts/seo_analyzer.py 2026-01-08 02:12:47 +01:00
seo_audit.py fix(seo-audit): Move load_dotenv before module-level env reads 2026-02-13 15:27:43 +01:00
seo_report_generator.py refactor(seo): Rename FID to INP across entire codebase 2026-02-08 12:58:41 +01:00
simulate_model_comparison.py feat(admin): Add AI model comparison page 2026-01-29 08:45:33 +01:00
social_media_audit.py fix: Remove Brave Search from social media audit — too many false positives 2026-02-18 18:20:52 +01:00
test_ai_proposal.py refactor(rbac): Migrate legacy is_admin checks to role-based has_role()/set_role() 2026-02-05 21:06:22 +01:00
test_collaboration_matching.py auto-claude: 2.6 - Remove hardcoded password from docstring usage example 2026-01-10 12:55:34 +01:00
test_email_send.py feat: Add email test script for manual testing 2026-01-14 14:09:17 +01:00
verify_google_places.py auto-claude: subtask-4-2 - Add --company-slug support and dotenv loading 2026-01-08 20:49:59 +01:00
website_content_updater.py feat: Enhanced website extraction - no limits, more categories 2026-02-01 08:50:15 +01:00
zopk_knowledge_pipeline.py fix: Poprawiono nazwy kluczy w pipeline skrypcie 2026-01-17 00:27:08 +01:00

Norda Biznes - Scripts

Automatyczne skrypty do zbierania i przetwarzania danych o firmach członkowskich.


📁 Pliki

company-data-collector.js

Główny agent zbierający dane o firmach z różnych źródeł.

Funkcje:

  • 🔍 Wyszukiwanie firm w ALEO.com (NIP, REGON, KRS)
  • 🌐 Znajdowanie stron WWW przez Google
  • 📊 Ekstrakcja danych ze stron firmowych
  • 💾 Automatyczny zapis do data/companies-full.json
  • 📝 Generowanie logów i raportów

🚀 Użycie

Podstawowe uruchomienie

node scripts/company-data-collector.js

Przetworzy wszystkie 80 firm z data/companies-basic.json.

Z limitowaniem

# Przetw

órz tylko 5 pierwszych firm (test)
node scripts/company-data-collector.js --limit 5

# Przetwórz 10 firm
node scripts/company-data-collector.js --limit 10

Pomijanie już przetworzonych

# Przetwórz tylko firmy, których nie ma w companies-full.json
node scripts/company-data-collector.js --skip-processed

# Kombinacja: pomiń przetworzone, limit 20
node scripts/company-data-collector.js --skip-processed --limit 20

Pomoc

node scripts/company-data-collector.js --help

📊 Output

Pliki wyjściowe:

  1. data/companies-full.json

    • Pełne dane wszystkich przetworzonych firm
    • Aktualizowany po każdej firmie
    • Format JSON z metadanymi
  2. data/collection-log.md

    • Szczegółowy log przetwarzania
    • Dla każdej firmy: timestamp, kroki, błędy
    • Markdown format
  3. Konsola

    • Real-time progress
    • Raport końcowy ze statystykami

Przykładowy output konsoli:

🤖 Norda Biznes - Company Data Collector Agent
================================================

📊 Załadowano 80 firm do zbadania

[1/80] Przetwarzanie: PIXLAB
────────────────────────────────────────────────────────────
📡 KROK 1: Wyszukiwanie w ALEO.com...
   ✅ Znaleziono dane urzędowe
🔍 KROK 2: Szukanie strony WWW...
   ✅ Znaleziono stronę: https://pixlab.pl
🌐 KROK 3: Pobieranie danych ze strony...
   ✅ Pobrano dane ze strony
✅ Pełne dane zebrane

[2/80] Przetwarzanie: KORNIX
...

============================================================
📊 RAPORT KOŃCOWY
============================================================

Przetworzono:    80/80 firm
Pełne dane:      56 (70%)
Częściowe dane:  20 (25%)
Niepowodzenia:   4 (5%)

Czas działania:  16.5 minut
Średnio na firmę: 0.21 min

============================================================

⚙️ Konfiguracja

W pliku company-data-collector.js:

const CONFIG = {
  delayBetweenRequests: 2000,  // 2 sekundy między firmami
  maxRetries: 3,               // Maksymalna liczba ponownych prób
  timeout: 30000              // Timeout 30 sekund
};

Źródła danych:

Agent próbuje pobrać dane z:

  1. ALEO.com - dane urzędowe (NIP, REGON, KRS)
  2. Google Search - URL strony WWW
  3. Strony firmowe - kontakt, usługi, kompetencje

🔧 Wymagania

Node.js packages:

# Podstawowe (built-in):
- fs
- path

# Opcjonalne (dla pełnej funkcjonalności):
npm install puppeteer  # Web scraping
# lub
npm install playwright # Web scraping (zalecane)
# lub
npm install cheerio axios # Prosty scraping HTML

API Keys (opcjonalne):


📝 Status Implementacji

Zaimplementowane:

  • Struktura agenta
  • CLI interface (argumenty, pomoc)
  • Wczytywanie danych z companies-basic.json
  • Zapis do companies-full.json
  • Generowanie logów
  • Raportowanie postępu
  • Ocena jakości danych
  • Statystyki i raporty

🔄 Do zaimplementowania:

  • Rzeczywiste wyszukiwanie w ALEO.com

    • Wymaga: puppeteer/playwright
    • Metoda: searchAleo(companyName)
  • Rzeczywiste wyszukiwanie w Google

    • Wymaga: Google Custom Search API
    • Metoda: findWebsite(companyName)
  • Rzeczywisty web scraping

    • Wymaga: puppeteer/cheerio
    • Metoda: scrapeWebsite(url)
  • Automatyczna aktualizacja data-sources.md

    • Metoda: updateDataSources()

🎯 Roadmap

Faza 1: Ręczne zbieranie danych (OBECNA)

  • Struktura agenta gotowa
  • Pliki JSON i MD przygotowane
  • 🔄 Ręczne wypełnianie danych (copy-paste z researchu)

Faza 2: Semi-automatyczne zbieranie

  • Implementacja scrapingu ALEO.com
  • Znajdowanie stron WWW przez Google API
  • Podstawowy scraping stron (kontakt)

Faza 3: Pełna automatyzacja

  • AI-assisted data extraction
  • Automatyczna walidacja danych
  • Scheduled updates (cron)
  • Email notifications

🐛 Troubleshooting

Agent się nie uruchamia

# Sprawdź czy Node.js jest zainstalowany:
node --version  # Powinno pokazać v14+ lub nowsze

# Sprawdź uprawnienia:
chmod +x scripts/company-data-collector.js

# Uruchom z verbose:
node scripts/company-data-collector.js --limit 1

Brak danych w companies-full.json

# Sprawdź czy plik companies-basic.json istnieje:
ls -la data/companies-basic.json

# Sprawdź format JSON:
cat data/companies-basic.json | python -m json.tool

"Cannot find module"

# Zainstaluj zależności:
npm install

# Lub jeśli używasz yarn:
yarn install

📚 Dokumentacja

Struktura danych firmy:

Patrz: data/companies-full.json - przykłady z pełnymi danymi

Log format:

Patrz: data/collection-log.md - przykład po uruchomieniu agenta

Źródła danych:

Patrz: data/data-sources.md - lista wszystkich źródeł


👨‍💻 Development

Testowanie:

# Test na 1 firmie:
node scripts/company-data-collector.js --limit 1

# Test na 5 firmach:
node scripts/company-data-collector.js --limit 5

# Dry run (bez zapisu):
# TODO: Dodać flagę --dry-run

Debugowanie:

Odkomentuj linie z console.log w metodach:

  • searchAleo()
  • findWebsite()
  • scrapeWebsite()

📞 Support

Pytania lub problemy? Kontakt:


Wersja: 1.0 Ostatnia aktualizacja: 2025-11-23 Autor: Norda Biznes Partner Development Team