update
This commit is contained in:
28
scripts/install-ai-skills.ps1
Normal file
28
scripts/install-ai-skills.ps1
Normal file
@@ -0,0 +1,28 @@
|
||||
param(
|
||||
[string]$CodexHome = "$env:USERPROFILE\.codex",
|
||||
[string]$ClaudeHome = "$env:USERPROFILE\.claude"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot "..")
|
||||
|
||||
$CodexSkillSource = Join-Path $RepoRoot ".codex\skills\google-ads-client-report"
|
||||
$ClaudeSkillSource = Join-Path $RepoRoot ".claude\skills\google-ads-client-report"
|
||||
$ClaudeCommandSource = Join-Path $RepoRoot ".claude\commands\raport-klienta.md"
|
||||
|
||||
$CodexSkillTarget = Join-Path $CodexHome "skills\google-ads-client-report"
|
||||
$ClaudeSkillTarget = Join-Path $ClaudeHome "skills\google-ads-client-report"
|
||||
$ClaudeCommandTarget = Join-Path $ClaudeHome "commands\raport-klienta.md"
|
||||
|
||||
New-Item -ItemType Directory -Force $CodexSkillTarget | Out-Null
|
||||
New-Item -ItemType Directory -Force $ClaudeSkillTarget | Out-Null
|
||||
New-Item -ItemType Directory -Force (Split-Path $ClaudeCommandTarget) | Out-Null
|
||||
|
||||
Copy-Item -Recurse -Force (Join-Path $CodexSkillSource "*") $CodexSkillTarget
|
||||
Copy-Item -Recurse -Force (Join-Path $ClaudeSkillSource "*") $ClaudeSkillTarget
|
||||
Copy-Item -Force $ClaudeCommandSource $ClaudeCommandTarget
|
||||
|
||||
Write-Host "Installed Codex skill: $CodexSkillTarget"
|
||||
Write-Host "Installed Claude skill: $ClaudeSkillTarget"
|
||||
Write-Host "Installed Claude command: $ClaudeCommandTarget"
|
||||
@@ -123,6 +123,35 @@ def parse_history_month(value):
|
||||
return text
|
||||
|
||||
|
||||
def month_locative(month):
|
||||
names = {
|
||||
"01": "styczniu",
|
||||
"02": "lutym",
|
||||
"03": "marcu",
|
||||
"04": "kwietniu",
|
||||
"05": "maju",
|
||||
"06": "czerwcu",
|
||||
"07": "lipcu",
|
||||
"08": "sierpniu",
|
||||
"09": "wrześniu",
|
||||
"10": "październiku",
|
||||
"11": "listopadzie",
|
||||
"12": "grudniu",
|
||||
}
|
||||
return names.get(str(month)[5:7], str(month))
|
||||
|
||||
|
||||
def normalize_month_reference(text, month):
|
||||
"""Keep SEO worksheet text aligned with the report month when row date matches."""
|
||||
target = month_locative(month)
|
||||
return re.sub(
|
||||
r"^W miesiącu [A-Za-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ]+",
|
||||
f"W {target}",
|
||||
text,
|
||||
count=1,
|
||||
)
|
||||
|
||||
|
||||
def parse_sheet_config(sheet_config):
|
||||
value = str(sheet_config or "").strip()
|
||||
if not value:
|
||||
@@ -192,6 +221,43 @@ def fetch_sales_history_from_sheet(domain, sheet_config):
|
||||
return sorted(history, key=lambda item: item["month"])
|
||||
|
||||
|
||||
def fetch_seo_text_rows_from_sheet(sheet_config, month):
|
||||
"""Fetch monthly SEO text rows from a public Google Sheet CSV export."""
|
||||
spreadsheet_id, gid = parse_sheet_config(sheet_config)
|
||||
export_url = f"https://docs.google.com/spreadsheets/d/{spreadsheet_id}/gviz/tq?tqx=out:csv"
|
||||
if gid:
|
||||
export_url += f"&gid={gid}"
|
||||
response = requests.get(export_url, timeout=30)
|
||||
response.raise_for_status()
|
||||
response.encoding = "utf-8"
|
||||
|
||||
reader = csv.DictReader(io.StringIO(response.text))
|
||||
rows = []
|
||||
for row in reader:
|
||||
normalized = {normalize_header(key): value for key, value in row.items()}
|
||||
row_month = parse_history_month(
|
||||
normalized.get("month")
|
||||
or normalized.get("miesiac")
|
||||
or normalized.get("data")
|
||||
or normalized.get("date")
|
||||
)
|
||||
text = (
|
||||
normalized.get("url")
|
||||
or normalized.get("link")
|
||||
or normalized.get("tekst")
|
||||
or normalized.get("opis")
|
||||
or normalized.get("dzialanie")
|
||||
or normalized.get("dzialania")
|
||||
or ""
|
||||
).strip()
|
||||
if row_month == month and text:
|
||||
rows.append({
|
||||
"date": row.get("Data") or row.get("data") or row_month,
|
||||
"url": normalize_month_reference(text, month),
|
||||
})
|
||||
return rows
|
||||
|
||||
|
||||
def apply_sheet_ecommerce(report, sales_history, month, previous_month):
|
||||
"""Use Google Sheet sales data for e-commerce KPI cards."""
|
||||
by_month = {row["month"]: row for row in sales_history}
|
||||
@@ -785,6 +851,29 @@ def main():
|
||||
else:
|
||||
report["seo_links"] = []
|
||||
|
||||
# SEO works and links from config/clients.toml override the legacy .env-only fetch above.
|
||||
seo_works_sheet = client_report_config.get("seo_works_history_sheet")
|
||||
if seo_works_sheet:
|
||||
print(f"Pobieram dzialania SEO z config/clients.toml...")
|
||||
try:
|
||||
seo_work_rows = fetch_seo_text_rows_from_sheet(seo_works_sheet, args.month)
|
||||
report["seo_activities"] = "\n\n".join(row["url"] for row in seo_work_rows)
|
||||
print(f" Dzialania SEO: {len(seo_work_rows)} wpisow w {args.month}")
|
||||
except Exception as e:
|
||||
print(f" UWAGA: Blad dzialan SEO: {e}")
|
||||
report["seo_activities"] = ""
|
||||
|
||||
seo_links_sheet = client_report_config.get("seo_links_history_sheet")
|
||||
if seo_links_sheet:
|
||||
print(f"Pobieram linki SEO z config/clients.toml...")
|
||||
try:
|
||||
seo_links = fetch_seo_text_rows_from_sheet(seo_links_sheet, args.month)
|
||||
report["seo_links"] = seo_links or []
|
||||
print(f" Linki SEO: {len(report['seo_links'])} w {args.month}")
|
||||
except Exception as e:
|
||||
print(f" UWAGA: Blad SEO links: {e}")
|
||||
report["seo_links"] = []
|
||||
|
||||
# Output
|
||||
if args.output:
|
||||
output_path = Path(args.output)
|
||||
|
||||
@@ -358,7 +358,7 @@
|
||||
<section class="report-section" id="recommendations">
|
||||
<h2 class="section-title">Wnioski i rekomendacje</h2>
|
||||
<div class="recommendations-list">
|
||||
<div class="rec-item"><span class="rec-icon">⚠</span><div><strong>Spadek konwersji do obserwacji</strong><p>Liczba konwersji spadla o 8.2% miesiac do miesiaca. Rekomendujemy sprawdzenie kampanii o najwiekszym spadku wolumenu.</p></div></div><div class="rec-item"><span class="rec-icon">📈</span><div><strong>ROAS liczony z Google Ads</strong><p>ROAS z Google Ads wyniosl 8.47. Ten wskaznik liczymy z wartosci konwersji Google Ads, nie z przychodow sklepu.</p></div></div><div class="rec-item"><span class="rec-icon">🔍</span><div><strong>Kontrola wzrostu kosztu</strong><p>Koszt reklam wzrosl o 12.2% miesiac do miesiaca. Warto porownac wzrost kosztu ze wzrostem konwersji i wartosci konwersji.</p></div></div>
|
||||
<div class="rec-item"><span class="rec-icon">➤</span><div><strong>Wzrost wartości sprzedaży przy stabilnym ROAS</strong><p>W kwietniu kampanie Google Ads wygenerowały 199,5 konwersji i 41 326,28 zł wartości konwersji przy koszcie 4 880,74 zł. Wartość konwersji wzrosła miesiąc do miesiąca o 10,4%, a ROAS pozostał wysoki na poziomie 8,47. Utrzymujemy obecny kierunek skalowania, ale kontrolujemy koszt pozyskania, ponieważ koszt wzrósł szybciej niż liczba konwersji.</p></div></div><div class="rec-item"><span class="rec-icon">➤</span><div><strong>Najmocniejsze wyniki generują kampanie produktowe</strong><p>Największy udział w sprzedaży ma kampania Performance Max z wynikiem 19 390,88 zł wartości konwersji i ROAS 7,02. Bardzo dobrze pracuje też kampania PLA bestsellery, która przy koszcie 681,64 zł wygenerowała 7 367,07 zł wartości konwersji i ROAS 10,81. W kolejnym kroku wzmacniamy feed produktowy oraz obserwujemy nowy eksperyment PMax bestsellery jako porównanie do PLA bestsellery.</p></div></div><div class="rec-item"><span class="rec-icon">➤</span><div><strong>Priorytet na kolejny miesiąc: efektywne skalowanie</strong><p>Z arkusza sprzedaży e-commerce wynika 275 transakcji i 64 312,47 zł przychodu w kwietniu. Po stronie Google Ads zwiększamy nacisk na kampanie z wysoką wartością konwersji, a jednocześnie pilnujemy, aby wzrost budżetów i celów stawek był wprowadzany stopniowo. Kontrolujemy szczególnie DSA produkty oraz kampanie produktowe, żeby utrzymać rentowność przy dalszym zwiększaniu sprzedaży.</p></div></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -370,6 +370,33 @@
|
||||
|
||||
<!-- E-COMMERCE -->
|
||||
|
||||
<section class="report-section" id="ecommerce">
|
||||
<h2 class="section-title">E-commerce — Sprzedaż</h2>
|
||||
<div class="kpi-grid">
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">Transakcje</div>
|
||||
<div class="kpi-value">275<span class="kpi-unit"></span></div>
|
||||
<div class="kpi-change" style="color: #95a5a6"> </div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">Przychód</div>
|
||||
<div class="kpi-value">64 312.47<span class="kpi-unit"> PLN</span></div>
|
||||
<div class="kpi-change" style="color: #95a5a6"> </div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">Śr. wartość zamówienia</div>
|
||||
<div class="kpi-value">233.86<span class="kpi-unit"> PLN</span></div>
|
||||
<div class="kpi-change" style="color: #95a5a6"> </div>
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="chart-container">
|
||||
<h3>Historia sprzedaży (miesięcznie)</h3>
|
||||
<canvas id="salesHistoryChart"></canvas>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
<!-- PRODUCT OPTIMIZATIONS -->
|
||||
|
||||
@@ -412,6 +439,13 @@
|
||||
▼ -8.2% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">Wartość konwersji</div>
|
||||
<div class="kpi-value">41 326.28<span class="kpi-unit"> PLN</span></div>
|
||||
<div class="kpi-change" style="color: #27ae60">
|
||||
▲ +10.4% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">Koszt</div>
|
||||
<div class="kpi-value">4880.74<span class="kpi-unit"> PLN</span></div>
|
||||
@@ -419,13 +453,6 @@
|
||||
▲ +12.2% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">CPA</div>
|
||||
<div class="kpi-value">24.46<span class="kpi-unit"> PLN</span></div>
|
||||
<div class="kpi-change" style="color: #e74c3c">
|
||||
▲ +22.2% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">ROAS</div>
|
||||
<div class="kpi-value">8.47<span class="kpi-unit">x</span></div>
|
||||
@@ -455,6 +482,7 @@
|
||||
<th>Kliknięcia</th>
|
||||
<th>CTR</th>
|
||||
<th>Konwersje</th>
|
||||
<th>Wartość konwersji</th>
|
||||
<th>Koszt</th>
|
||||
<th>CPA</th>
|
||||
</tr>
|
||||
@@ -467,6 +495,7 @@
|
||||
<td class="num">483</td>
|
||||
<td class="num">29.9%</td>
|
||||
<td class="num">27</td>
|
||||
<td class="num">7 967.63 PLN</td>
|
||||
<td class="num">337.96 PLN</td>
|
||||
<td class="num">12.52 PLN</td>
|
||||
</tr>
|
||||
@@ -477,6 +506,7 @@
|
||||
<td class="num">694</td>
|
||||
<td class="num">7.0%</td>
|
||||
<td class="num">23</td>
|
||||
<td class="num">6 600.70 PLN</td>
|
||||
<td class="num">1098.15 PLN</td>
|
||||
<td class="num">47.75 PLN</td>
|
||||
</tr>
|
||||
@@ -487,6 +517,7 @@
|
||||
<td class="num">2 164</td>
|
||||
<td class="num">1.6%</td>
|
||||
<td class="num">106</td>
|
||||
<td class="num">19 390.88 PLN</td>
|
||||
<td class="num">2762.99 PLN</td>
|
||||
<td class="num">25.94 PLN</td>
|
||||
</tr>
|
||||
@@ -497,6 +528,7 @@
|
||||
<td class="num">485</td>
|
||||
<td class="num">2.2%</td>
|
||||
<td class="num">43</td>
|
||||
<td class="num">7 367.07 PLN</td>
|
||||
<td class="num">681.64 PLN</td>
|
||||
<td class="num">15.85 PLN</td>
|
||||
</tr></tbody>
|
||||
@@ -646,18 +678,212 @@
|
||||
|
||||
<!-- SEMSTORM SEO -->
|
||||
|
||||
<section class="report-section" id="semstorm">
|
||||
<h2 class="section-title">SEO — Widoczność (Semstorm)</h2>
|
||||
<div class="kpi-grid">
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">TOP 3</div>
|
||||
<div class="kpi-value">230<span class="kpi-unit"> fraz</span></div>
|
||||
<div class="kpi-change" style="color: #e74c3c">
|
||||
▼ -6.1% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">TOP 10</div>
|
||||
<div class="kpi-value">992<span class="kpi-unit"> fraz</span></div>
|
||||
<div class="kpi-change" style="color: #e74c3c">
|
||||
▼ -6.9% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">TOP 50</div>
|
||||
<div class="kpi-value">6 802<span class="kpi-unit"> fraz</span></div>
|
||||
<div class="kpi-change" style="color: #e74c3c">
|
||||
▼ -1.1% vs Marzec
|
||||
</div>
|
||||
</div>
|
||||
<div class="kpi-card">
|
||||
<div class="kpi-label">Szac. ruch SEO</div>
|
||||
<div class="kpi-value">6 109<span class="kpi-unit"></span></div>
|
||||
<div class="kpi-change" style="color: #e74c3c">
|
||||
▼ -28.4% vs Marzec
|
||||
</div>
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="chart-container">
|
||||
<h3>Historia widoczności</h3>
|
||||
<canvas id="semstormChart"></canvas>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- SEO ACTIVITIES -->
|
||||
|
||||
<section class="report-section" id="seo-activities">
|
||||
<h2 class="section-title">SEO — Pozostałe działania</h2>
|
||||
<div class="summary-box">
|
||||
W kwietniu w ramach prac SEO wykonane zostały następujące rzeczy: <br>
|
||||
<br>
|
||||
- Przygotowane zostały 4 wpisyna bloga<br>
|
||||
<a href="https://aruba.rzeszow.pl/podopharm-na-co-dzien-jak-prawidlowo-stosowac-krem-do-stop" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/podopharm-na-co-dzien-jak-prawidlowo-stosowac-krem-do-stop</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/paleta-cieni-do-powiek-matowe-satynowe-czy-blyszczace" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/paleta-cieni-do-powiek-matowe-satynowe-czy-blyszczace</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/suche-pekajace-piety-i-szorstka-skora-jak-kremy-do-stop-podopharm-pomagaja-odzyskac-gladkieestopy" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/suche-pekajace-piety-i-szorstka-skora-jak-kremy-do-stop-podopharm-pomagaja-odzyskac-gladkieestopy</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/trwaly-makijaz-oczu-przez-caly-dzien-jak-nakladac-cienie-do-powiek-zeby-sie-nie-rolowaly" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/trwaly-makijaz-oczu-przez-caly-dzien-jak-nakladac-cienie-do-powiek-zeby-sie-nie-rolowaly</a> <br>
|
||||
<br>
|
||||
<br>
|
||||
- Przygotowane zostały opisy do następujących kategorii:<br>
|
||||
<br>
|
||||
<a href="https://aruba.rzeszow.pl/roze-do-policzkow" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/roze-do-policzkow</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/kremy-pielegnacyjne<br>" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/kremy-pielegnacyjne<br></a>
|
||||
<a href="https://aruba.rzeszow.pl/pozostale-akcesoria-do-makijazu" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/pozostale-akcesoria-do-makijazu</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/preparaty-do-liftingu-i-laminacji-rzes" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/preparaty-do-liftingu-i-laminacji-rzes</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/zestawy-do-liftingu-rzes-i-laminacji-brwi" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/zestawy-do-liftingu-rzes-i-laminacji-brwi</a> <br>
|
||||
<a href="https://aruba.rzeszow.pl/akcesoria-do-liftingu-rzes-i-laminacji-brwi" target="_blank" rel="noopener" style="color: var(--primary);">https://aruba.rzeszow.pl/akcesoria-do-liftingu-rzes-i-laminacji-brwi</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SEO LINKS -->
|
||||
|
||||
<section class="report-section" id="seo-links">
|
||||
<h2 class="section-title">SEO — Pozyskane linki (24)</h2>
|
||||
<table class="data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Domena</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="num">1</td>
|
||||
<td><a href="https://eglos.pl/aktualnosci/item/45483-autoklawy-w-gabinecie-kosmetycznym-i-medycznym-jak-dzialaja-i-dlaczego-sa-tak-wazne" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">eglos.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://eglos.pl/aktualnosci/item/45483-autoklawy-w-gabinecie-kosmetycznym-i-medycznym-jak-dzialaja-i-dlaczego-sa-tak-wazne" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://eglos.pl/aktualnosci/item/45483-autoklawy-w-gabinecie-kosmetycznym-i-medycznym-jak-dzialaja-i-dlaczego-sa-tak-wazne</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">2</td>
|
||||
<td><a href="https://alcomax.pl/lampy-led-uv-do-paznokci-jak-wybrac-dobra-lampe-i-na-co-zwrocic-uwage-przed-zakupem/" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">alcomax.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://alcomax.pl/lampy-led-uv-do-paznokci-jak-wybrac-dobra-lampe-i-na-co-zwrocic-uwage-przed-zakupem/" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://alcomax.pl/lampy-led-uv-do-paznokci-jak-wybrac-dobra-lampe-i-na-co-zwrocic-uwage-przed-zakupem/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">3</td>
|
||||
<td><a href="https://curlyhare.pl/kosmetyki-do-makijazu-jak-skompletowac-zestaw-ktory-naprawde-sie-przyda/" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">curlyhare.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://curlyhare.pl/kosmetyki-do-makijazu-jak-skompletowac-zestaw-ktory-naprawde-sie-przyda/" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://curlyhare.pl/kosmetyki-do-makijazu-jak-skompletowac-zestaw-ktory-naprawde-sie-przyda/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">4</td>
|
||||
<td><a href="https://salononaon.pl/maski-algowe-dlaczego-pokochaly-je-gabinety-kosmetyczne-i-kobiety-dbajace-o-cere-w-domu/" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">salononaon.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://salononaon.pl/maski-algowe-dlaczego-pokochaly-je-gabinety-kosmetyczne-i-kobiety-dbajace-o-cere-w-domu/" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://salononaon.pl/maski-algowe-dlaczego-pokochaly-je-gabinety-kosmetyczne-i-kobiety-dbajace-o-cere-w-domu/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">5</td>
|
||||
<td><a href="https://strefauzytkownikow.pl/viewtopic.php?t=136" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">strefauzytkownikow.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://strefauzytkownikow.pl/viewtopic.php?t=136" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://strefauzytkownikow.pl/viewtopic.php?t=136</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">6</td>
|
||||
<td><a href="https://interaktywneforum.pl/viewtopic.php?t=156" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">interaktywneforum.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://interaktywneforum.pl/viewtopic.php?t=156" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://interaktywneforum.pl/viewtopic.php?t=156</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">7</td>
|
||||
<td><a href="https://przestrzenrozwojowa.pl/viewtopic.php?t=164" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">przestrzenrozwojowa.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://przestrzenrozwojowa.pl/viewtopic.php?t=164" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://przestrzenrozwojowa.pl/viewtopic.php?t=164</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">8</td>
|
||||
<td><a href="https://portalinspiracji.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">portalinspiracji.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://portalinspiracji.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://portalinspiracji.pl/viewtopic.php?t=163</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">9</td>
|
||||
<td><a href="https://forumdlawszystkich.pl/viewtopic.php?t=160" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">forumdlawszystkich.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://forumdlawszystkich.pl/viewtopic.php?t=160" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://forumdlawszystkich.pl/viewtopic.php?t=160</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">10</td>
|
||||
<td><a href="https://przestrzenporad.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">przestrzenporad.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://przestrzenporad.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://przestrzenporad.pl/viewtopic.php?t=163</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">11</td>
|
||||
<td><a href="https://dyskusjewokolnas.pl/viewtopic.php?t=161" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">dyskusjewokolnas.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://dyskusjewokolnas.pl/viewtopic.php?t=161" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://dyskusjewokolnas.pl/viewtopic.php?t=161</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">12</td>
|
||||
<td><a href="https://portaltematow.pl/viewtopic.php?t=161" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">portaltematow.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://portaltematow.pl/viewtopic.php?t=161" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://portaltematow.pl/viewtopic.php?t=161</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">13</td>
|
||||
<td><a href="https://grupaaktywnych.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">grupaaktywnych.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://grupaaktywnych.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://grupaaktywnych.pl/viewtopic.php?t=163</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">14</td>
|
||||
<td><a href="https://rozmowyludzkie.pl/viewtopic.php?t=162" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">rozmowyludzkie.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://rozmowyludzkie.pl/viewtopic.php?t=162" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://rozmowyludzkie.pl/viewtopic.php?t=162</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">15</td>
|
||||
<td><a href="https://forumotwartychmysli.pl/viewtopic.php?t=164" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">forumotwartychmysli.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://forumotwartychmysli.pl/viewtopic.php?t=164" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://forumotwartychmysli.pl/viewtopic.php?t=164</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">16</td>
|
||||
<td><a href="https://forumtwojeglosa.pl/viewtopic.php?t=165" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">forumtwojeglosa.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://forumtwojeglosa.pl/viewtopic.php?t=165" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://forumtwojeglosa.pl/viewtopic.php?t=165</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">17</td>
|
||||
<td><a href="https://rozmowytematyczne.pl/viewtopic.php?t=160" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">rozmowytematyczne.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://rozmowytematyczne.pl/viewtopic.php?t=160" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://rozmowytematyczne.pl/viewtopic.php?t=160</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">18</td>
|
||||
<td><a href="https://forumtematow.pl/viewtopic.php?t=166" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">forumtematow.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://forumtematow.pl/viewtopic.php?t=166" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://forumtematow.pl/viewtopic.php?t=166</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">19</td>
|
||||
<td><a href="https://dyskusjepolaczone.pl/viewtopic.php?t=162" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">dyskusjepolaczone.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://dyskusjepolaczone.pl/viewtopic.php?t=162" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://dyskusjepolaczone.pl/viewtopic.php?t=162</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">20</td>
|
||||
<td><a href="https://forum.zestawiam.pl/viewtopic.php?t=402" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">forum.zestawiam.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://forum.zestawiam.pl/viewtopic.php?t=402" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://forum.zestawiam.pl/viewtopic.php?t=402</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">21</td>
|
||||
<td><a href="https://fokusrozmowy.pl/viewtopic.php?t=125" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">fokusrozmowy.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://fokusrozmowy.pl/viewtopic.php?t=125" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://fokusrozmowy.pl/viewtopic.php?t=125</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">22</td>
|
||||
<td><a href="https://rozmowyproste.pl/viewtopic.php?t=165" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">rozmowyproste.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://rozmowyproste.pl/viewtopic.php?t=165" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://rozmowyproste.pl/viewtopic.php?t=165</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">23</td>
|
||||
<td><a href="https://klubaktywnych.com.pl/viewtopic.php?t=162" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">klubaktywnych.com.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://klubaktywnych.com.pl/viewtopic.php?t=162" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://klubaktywnych.com.pl/viewtopic.php?t=162</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">24</td>
|
||||
<td><a href="https://nowehoryzonty.com.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--primary); text-decoration: none;">nowehoryzonty.com.pl</a></td>
|
||||
<td style="font-size: 12px; color: var(--gray); word-break: break-all;"><a href="https://nowehoryzonty.com.pl/viewtopic.php?t=163" target="_blank" rel="noopener" style="color: var(--gray); text-decoration: none;">https://nowehoryzonty.com.pl/viewtopic.php?t=163</a></td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<!-- SUMMARY -->
|
||||
<section class="report-section" id="summary">
|
||||
<h2 class="section-title">Podsumowanie miesiąca</h2>
|
||||
<div class="summary-box">
|
||||
Odnotowano 199 konwersji w tym miesiącu. Ruch z reklam wzrósł o 2.5% (3826 kliknięć).
|
||||
Przychód sklepu utrzymał się na poziomie <strong>64,312.47 PLN</strong>. Zrealizowano 275 transakcji przy średniej wartości zamówienia 233.86 PLN. ROAS z Google Ads: <strong>8.47</strong> (każda wydana złotówka przyniosła 8.47 PLN przychodu). Ruch z reklam wzrósł o 2.5% (3826 kliknięć). Widoczność SEO: 230 fraz w TOP3, 992 w TOP10.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -709,7 +935,89 @@
|
||||
|
||||
|
||||
|
||||
var ctxSalesHist = document.getElementById('salesHistoryChart').getContext('2d');
|
||||
new Chart(ctxSalesHist, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: ["2026-04"],
|
||||
datasets: [{
|
||||
label: 'Przychód (PLN)',
|
||||
data: [64312.47],
|
||||
backgroundColor: 'rgba(39, 174, 96, 0.5)',
|
||||
borderColor: '#27ae60',
|
||||
borderWidth: 1,
|
||||
yAxisID: 'y',
|
||||
order: 2,
|
||||
}, {
|
||||
label: 'Zamówienia',
|
||||
data: [275],
|
||||
type: 'line',
|
||||
borderColor: '#8e44ad',
|
||||
backgroundColor: 'transparent',
|
||||
tension: 0.3,
|
||||
pointRadius: 4,
|
||||
pointBackgroundColor: '#8e44ad',
|
||||
yAxisID: 'y1',
|
||||
order: 1,
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
interaction: { mode: 'index', intersect: false },
|
||||
scales: {
|
||||
y: { beginAtZero: true, position: 'left', grid: { color: '#f0f0f0' },
|
||||
ticks: { callback: function(v) { return v.toLocaleString('pl-PL') + ' PLN'; } } },
|
||||
y1: { beginAtZero: true, position: 'right', grid: { display: false } },
|
||||
x: { grid: { display: false } }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var ctxSem = document.getElementById('semstormChart').getContext('2d');
|
||||
new Chart(ctxSem, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ["2026-02", "2026-03", "2026-04"],
|
||||
datasets: [{
|
||||
label: 'TOP 3',
|
||||
data: [248, 245, 230],
|
||||
borderColor: '#27ae60',
|
||||
backgroundColor: 'rgba(39,174,96,0.1)',
|
||||
fill: true,
|
||||
tension: 0.3,
|
||||
pointRadius: 4,
|
||||
pointBackgroundColor: '#27ae60',
|
||||
}, {
|
||||
label: 'TOP 10',
|
||||
data: [1066, 1065, 992],
|
||||
borderColor: '#2980b9',
|
||||
backgroundColor: 'transparent',
|
||||
tension: 0.3,
|
||||
pointRadius: 4,
|
||||
pointBackgroundColor: '#2980b9',
|
||||
}, {
|
||||
label: 'TOP 50',
|
||||
data: [7191, 6881, 6802],
|
||||
borderColor: '#95a5a6',
|
||||
backgroundColor: 'transparent',
|
||||
borderDash: [5, 5],
|
||||
tension: 0.3,
|
||||
pointRadius: 3,
|
||||
yAxisID: 'y1',
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
interaction: { mode: 'index', intersect: false },
|
||||
scales: {
|
||||
y: { beginAtZero: false, position: 'left', grid: { color: '#f0f0f0' },
|
||||
title: { display: true, text: 'TOP 3 / TOP 10' } },
|
||||
y1: { beginAtZero: false, position: 'right', grid: { display: false },
|
||||
title: { display: true, text: 'TOP 50' } },
|
||||
x: { grid: { display: false } }
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"year": 2026,
|
||||
"prev_month": "2026-03",
|
||||
"prev_month_name": "Marzec",
|
||||
"generated_at": "2026-05-14T23:23:53.496703",
|
||||
"generated_at": "2026-05-15T12:54:30.439332",
|
||||
"google_ads": {
|
||||
"campaigns": [
|
||||
{
|
||||
@@ -67,6 +67,21 @@
|
||||
"cpc": 1.41,
|
||||
"cpa": 15.85,
|
||||
"roas": 10.81
|
||||
},
|
||||
{
|
||||
"id": "23845634304",
|
||||
"name": "[PMax] bestsellery",
|
||||
"status": "ENABLED",
|
||||
"type": "PERFORMANCE_MAX",
|
||||
"impressions": 0,
|
||||
"clicks": 0,
|
||||
"cost": 0.0,
|
||||
"conversions": 0.0,
|
||||
"conversion_value": 0.0,
|
||||
"ctr": 0,
|
||||
"cpc": 0,
|
||||
"cpa": 0,
|
||||
"roas": 0
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
@@ -96,9 +111,11 @@
|
||||
"clicks_pct": 2.5,
|
||||
"cost_pct": 12.2,
|
||||
"conversions_pct": -8.2,
|
||||
"conversion_value_pct": 10.4,
|
||||
"ctr_pct": 3.3,
|
||||
"cpc_pct": 9.4,
|
||||
"cpa_pct": 22.2
|
||||
"cpa_pct": 22.2,
|
||||
"roas_pct": -1.5
|
||||
},
|
||||
"daily": [
|
||||
{
|
||||
@@ -405,25 +422,209 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"ga4": null,
|
||||
"semstorm": null,
|
||||
"sales_history": [],
|
||||
"seo_links": [],
|
||||
"ga4": {
|
||||
"ecommerce": {
|
||||
"current": {
|
||||
"transactions": 275,
|
||||
"revenue": 64312.47,
|
||||
"aov": 233.86
|
||||
},
|
||||
"previous": {
|
||||
"transactions": 0,
|
||||
"revenue": 0.0,
|
||||
"aov": 0.0
|
||||
},
|
||||
"mom_change": {
|
||||
"transactions_pct": null,
|
||||
"revenue_pct": null,
|
||||
"aov_pct": null
|
||||
},
|
||||
"source": "google_sheet"
|
||||
}
|
||||
},
|
||||
"semstorm": {
|
||||
"current": {
|
||||
"date": "2026-04-01",
|
||||
"month": "2026-04",
|
||||
"top3": 230,
|
||||
"top10": 992,
|
||||
"top20": 2506,
|
||||
"top50": 6802,
|
||||
"top100": 10632,
|
||||
"traffic": 6109
|
||||
},
|
||||
"previous": {
|
||||
"date": "2026-03-01",
|
||||
"month": "2026-03",
|
||||
"top3": 245,
|
||||
"top10": 1065,
|
||||
"top20": 2588,
|
||||
"top50": 6881,
|
||||
"top100": 10716,
|
||||
"traffic": 8533
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
"date": "2026-02-01",
|
||||
"month": "2026-02",
|
||||
"top3": 248,
|
||||
"top10": 1066,
|
||||
"top20": 2588,
|
||||
"top50": 7191,
|
||||
"top100": 11297,
|
||||
"traffic": 8243
|
||||
},
|
||||
{
|
||||
"date": "2026-03-01",
|
||||
"month": "2026-03",
|
||||
"top3": 245,
|
||||
"top10": 1065,
|
||||
"top20": 2588,
|
||||
"top50": 6881,
|
||||
"top100": 10716,
|
||||
"traffic": 8533
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"month": "2026-04",
|
||||
"top3": 230,
|
||||
"top10": 992,
|
||||
"top20": 2506,
|
||||
"top50": 6802,
|
||||
"top100": 10632,
|
||||
"traffic": 6109
|
||||
}
|
||||
],
|
||||
"mom_change": {
|
||||
"top3_pct": -6.1,
|
||||
"top10_pct": -6.9,
|
||||
"top50_pct": -1.1,
|
||||
"traffic_pct": -28.4
|
||||
}
|
||||
},
|
||||
"sales_history": [
|
||||
{
|
||||
"month": "2026-04",
|
||||
"transactions": 275,
|
||||
"revenue": 64312.47,
|
||||
"aov": 233.86,
|
||||
"source": "google_sheet"
|
||||
}
|
||||
],
|
||||
"seo_links": [
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://eglos.pl/aktualnosci/item/45483-autoklawy-w-gabinecie-kosmetycznym-i-medycznym-jak-dzialaja-i-dlaczego-sa-tak-wazne"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://alcomax.pl/lampy-led-uv-do-paznokci-jak-wybrac-dobra-lampe-i-na-co-zwrocic-uwage-przed-zakupem/"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://curlyhare.pl/kosmetyki-do-makijazu-jak-skompletowac-zestaw-ktory-naprawde-sie-przyda/"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://salononaon.pl/maski-algowe-dlaczego-pokochaly-je-gabinety-kosmetyczne-i-kobiety-dbajace-o-cere-w-domu/"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://strefauzytkownikow.pl/viewtopic.php?t=136"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://interaktywneforum.pl/viewtopic.php?t=156"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://przestrzenrozwojowa.pl/viewtopic.php?t=164"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://portalinspiracji.pl/viewtopic.php?t=163"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://forumdlawszystkich.pl/viewtopic.php?t=160"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://przestrzenporad.pl/viewtopic.php?t=163"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://dyskusjewokolnas.pl/viewtopic.php?t=161"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://portaltematow.pl/viewtopic.php?t=161"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://grupaaktywnych.pl/viewtopic.php?t=163"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://rozmowyludzkie.pl/viewtopic.php?t=162"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://forumotwartychmysli.pl/viewtopic.php?t=164"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://forumtwojeglosa.pl/viewtopic.php?t=165"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://rozmowytematyczne.pl/viewtopic.php?t=160"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://forumtematow.pl/viewtopic.php?t=166"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://dyskusjepolaczone.pl/viewtopic.php?t=162"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://forum.zestawiam.pl/viewtopic.php?t=402"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://fokusrozmowy.pl/viewtopic.php?t=125"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://rozmowyproste.pl/viewtopic.php?t=165"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://klubaktywnych.com.pl/viewtopic.php?t=162"
|
||||
},
|
||||
{
|
||||
"date": "2026-04-01",
|
||||
"url": "https://nowehoryzonty.com.pl/viewtopic.php?t=163"
|
||||
}
|
||||
],
|
||||
"seo_activities": "W kwietniu w ramach prac SEO wykonane zostały następujące rzeczy: \n\n- Przygotowane zostały 4 wpisyna bloga\n https://aruba.rzeszow.pl/podopharm-na-co-dzien-jak-prawidlowo-stosowac-krem-do-stop \nhttps://aruba.rzeszow.pl/paleta-cieni-do-powiek-matowe-satynowe-czy-blyszczace \nhttps://aruba.rzeszow.pl/suche-pekajace-piety-i-szorstka-skora-jak-kremy-do-stop-podopharm-pomagaja-odzyskac-gladkieestopy \nhttps://aruba.rzeszow.pl/trwaly-makijaz-oczu-przez-caly-dzien-jak-nakladac-cienie-do-powiek-zeby-sie-nie-rolowaly \n\n\n- Przygotowane zostały opisy do następujących kategorii:\n\nhttps://aruba.rzeszow.pl/roze-do-policzkow \nhttps://aruba.rzeszow.pl/kremy-pielegnacyjne\nhttps://aruba.rzeszow.pl/pozostale-akcesoria-do-makijazu \nhttps://aruba.rzeszow.pl/preparaty-do-liftingu-i-laminacji-rzes \nhttps://aruba.rzeszow.pl/zestawy-do-liftingu-rzes-i-laminacji-brwi \nhttps://aruba.rzeszow.pl/akcesoria-do-liftingu-rzes-i-laminacji-brwi",
|
||||
"recommendations": [
|
||||
{
|
||||
"icon": "⚠",
|
||||
"title": "Spadek konwersji do obserwacji",
|
||||
"text": "Liczba konwersji spadla o 8.2% miesiac do miesiaca. Rekomendujemy sprawdzenie kampanii o najwiekszym spadku wolumenu."
|
||||
"icon": "➤",
|
||||
"title": "Wzrost wartości sprzedaży przy stabilnym ROAS",
|
||||
"text": "W kwietniu kampanie Google Ads wygenerowały 199,5 konwersji i 41 326,28 zł wartości konwersji przy koszcie 4 880,74 zł. Wartość konwersji wzrosła miesiąc do miesiąca o 10,4%, a ROAS pozostał wysoki na poziomie 8,47. Utrzymujemy obecny kierunek skalowania, ale kontrolujemy koszt pozyskania, ponieważ koszt wzrósł szybciej niż liczba konwersji."
|
||||
},
|
||||
{
|
||||
"icon": "📈",
|
||||
"title": "ROAS liczony z Google Ads",
|
||||
"text": "ROAS z Google Ads wyniosl 8.47. Ten wskaznik liczymy z wartosci konwersji Google Ads, nie z przychodow sklepu."
|
||||
"icon": "➤",
|
||||
"title": "Najmocniejsze wyniki generują kampanie produktowe",
|
||||
"text": "Największy udział w sprzedaży ma kampania Performance Max z wynikiem 19 390,88 zł wartości konwersji i ROAS 7,02. Bardzo dobrze pracuje też kampania PLA bestsellery, która przy koszcie 681,64 zł wygenerowała 7 367,07 zł wartości konwersji i ROAS 10,81. W kolejnym kroku wzmacniamy feed produktowy oraz obserwujemy nowy eksperyment PMax bestsellery jako porównanie do PLA bestsellery."
|
||||
},
|
||||
{
|
||||
"icon": "🔍",
|
||||
"title": "Kontrola wzrostu kosztu",
|
||||
"text": "Koszt reklam wzrosl o 12.2% miesiac do miesiaca. Warto porownac wzrost kosztu ze wzrostem konwersji i wartosci konwersji."
|
||||
"icon": "➤",
|
||||
"title": "Priorytet na kolejny miesiąc: efektywne skalowanie",
|
||||
"text": "Z arkusza sprzedaży e-commerce wynika 275 transakcji i 64 312,47 zł przychodu w kwietniu. Po stronie Google Ads zwiększamy nacisk na kampanie z wysoką wartością konwersji, a jednocześnie pilnujemy, aby wzrost budżetów i celów stawek był wprowadzany stopniowo. Kontrolujemy szczególnie DSA produkty oraz kampanie produktowe, żeby utrzymać rentowność przy dalszym zwiększaniu sprzedaży."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"source": "agent_ai",
|
||||
"instruction": "Uzupelnia agent AI po analizie danych raportu. Skrypt nie powinien sam generowac wnioskow ani rekomendacji.",
|
||||
"context": {
|
||||
"google_ads_totals": {
|
||||
"cost": 4880.74,
|
||||
"clicks": 3826,
|
||||
"conversions": 199.5,
|
||||
"conversion_value": 41326.28,
|
||||
"roas": 8.47,
|
||||
"cpa": 24.46
|
||||
},
|
||||
"google_ads_mom_change": {
|
||||
"cost_pct": 12.2,
|
||||
"clicks_pct": 2.5,
|
||||
"conversions_pct": -8.2,
|
||||
"conversion_value_pct": 10.4,
|
||||
"roas_pct": -1.5,
|
||||
"cpa_pct": 22.2
|
||||
},
|
||||
"ga4_ecommerce": {
|
||||
"transactions": 275,
|
||||
"revenue": 64312.47,
|
||||
"transactions_pct": null,
|
||||
"revenue_pct": null
|
||||
},
|
||||
"top_campaigns_by_cost": [
|
||||
{
|
||||
"name": "[PMax] products (catch-all)",
|
||||
"cost": 2762.99,
|
||||
"conversions": 106.5,
|
||||
"conversion_value": 19390.88,
|
||||
"roas": 7.02
|
||||
},
|
||||
{
|
||||
"name": "[DSA] produkty",
|
||||
"cost": 1098.15,
|
||||
"conversions": 23.0,
|
||||
"conversion_value": 6600.7,
|
||||
"roas": 6.01
|
||||
},
|
||||
{
|
||||
"name": "[PLA] produkty (bestsellers)",
|
||||
"cost": 681.64,
|
||||
"conversions": 43.0,
|
||||
"conversion_value": 7367.07,
|
||||
"roas": 10.81
|
||||
},
|
||||
{
|
||||
"name": "[Search] brand",
|
||||
"cost": 337.96,
|
||||
"conversions": 27.0,
|
||||
"conversion_value": 7967.63,
|
||||
"roas": 23.58
|
||||
},
|
||||
{
|
||||
"name": "[PMax] bestsellery",
|
||||
"cost": 0.0,
|
||||
"conversions": 0.0,
|
||||
"conversion_value": 0.0,
|
||||
"roas": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"recommendations": [
|
||||
{
|
||||
"icon": "➤",
|
||||
"title": "Wzrost wartości sprzedaży przy stabilnym ROAS",
|
||||
"text": "W kwietniu kampanie Google Ads wygenerowały 199,5 konwersji i 41 326,28 zł wartości konwersji przy koszcie 4 880,74 zł. Wartość konwersji wzrosła miesiąc do miesiąca o 10,4%, a ROAS pozostał wysoki na poziomie 8,47. Utrzymujemy obecny kierunek skalowania, ale kontrolujemy koszt pozyskania, ponieważ koszt wzrósł szybciej niż liczba konwersji."
|
||||
},
|
||||
{
|
||||
"icon": "➤",
|
||||
"title": "Najmocniejsze wyniki generują kampanie produktowe",
|
||||
"text": "Największy udział w sprzedaży ma kampania Performance Max z wynikiem 19 390,88 zł wartości konwersji i ROAS 7,02. Bardzo dobrze pracuje też kampania PLA bestsellery, która przy koszcie 681,64 zł wygenerowała 7 367,07 zł wartości konwersji i ROAS 10,81. W kolejnym kroku wzmacniamy feed produktowy oraz obserwujemy nowy eksperyment PMax bestsellery jako porównanie do PLA bestsellery."
|
||||
},
|
||||
{
|
||||
"icon": "➤",
|
||||
"title": "Priorytet na kolejny miesiąc: efektywne skalowanie",
|
||||
"text": "Z arkusza sprzedaży e-commerce wynika 275 transakcji i 64 312,47 zł przychodu w kwietniu. Po stronie Google Ads zwiększamy nacisk na kampanie z wysoką wartością konwersji, a jednocześnie pilnujemy, aby wzrost budżetów i celów stawek był wprowadzany stopniowo. Kontrolujemy szczególnie DSA produkty oraz kampanie produktowe, żeby utrzymać rentowność przy dalszym zwiększaniu sprzedaży."
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user