Fundamenty
Czym dokładnie jest Query Fanout?
Query fanout to mechanizm, dzięki któremu sztuczna inteligencja (np. Google AI Mode, ChatGPT, chatboty e-commerce) rozumie i przetwarza zapytania użytkownika. System automatycznie rozbija jedno pytanie na wiele powiązanych podpytań i przeszukuje różne źródła, by potem zsyntetyzować wyniki w jedną całościową odpowiedź.
Słowo "fanout" oznacza rozgęszczanie, rozsyłanie - tutaj: dystrybucję zapytania do wielu kanałów wyszukiwania np. Google, Bing czy agregatory danych jak Semly.
Wpisujesz w Google AI Mode: "gdzie pojechać z rodziną nad Bałtyk, budżet 5000 zł na tydzień."
W tradycyjnym wyszukiwaniu system szukałby stron zawierających dokładnie to hasło. W query fanout system robi tak:
Rozpoznanie intencji:
- Szukający: rodzina z dziećmi
- Cel: wakacje nad morzem
- Ograniczenie: budżet 5000 zł na tydzień
- Lokalizacja: Bałtyk (polska strona morska)
- Czas: niezdefiniowany, ale sugeruje letnie wakacje
Rozbicie na podzapytania:
- "Najtańsze noclegi nad Bałtykiem dla rodzin"
- "Domki letniskowe nad Bałtykiem 5000 zł na tydzień"
- "Gdzie tanio nad morze z dziećmi w lipcu"
- "Atrakcje dla dzieci nad morzem"
- "Które miasto jest popularne nad Bałtykiem 2025"
- "Jak tanio dojechać na Bałtyk z rodziną"
- "Wakacje nad Bałtykiem bez wyżywienia - opcje budżetowe"
- "Najlepsze plaże dla dzieci nad Bałtykiem"
- "Gdzie się zatrzymać z dzieckiem nad morzem – forum"
- Lipiec czy sierpień nad Bałtykiem - gdzie taniej"
Wyszukiwanie równoczesne:
Wyszukiwanie równoczesne: Każde z tych pytań jest wysyłane jednocześnie do różnych źródeł - portali rezerwacyjnych, blogów podróżniczych, forów, stron ośrodków, YouTube’a, opinii na Google Maps.
Synteza:
Synteza: System zbiera fragmenty ze wszystkich źródeł, porządkuje je (np. najpopularniejsze/najczęściej polecane pojawią się wyżej), i prezentuje użytkownikowi w formie: "Na Bałtyku najlepiej jest w Darłowie, oto popularne ośrodki z cenami, tu znajduje się plaża dla dzieci, a tutaj opcje dojazdu".
Dlaczego Google wprowadził Query Fanout?
Historia zmian w wyszukiwaniu
Google przez wiele lat działał w następujący sposób:
- Użytkownik wpisuje słowa kluczowe
- Algorytm szuka stron zawierających te słowa
- Sortuje je względem popularności i trafności
- Wyświetla listę linków
To działało dobrze dla prostych pytań ("Ile waży słoń?"). Ale kiedy pytania stawały się bardziej skomplikowane ("Jaki samochód wziąć do miasta, jeśli jeżdżę dużo po mieście, mam dwoje dzieci, lubię oszczędzać paliwo, ale chcę też pewności i wygody?"), tradycyjny model zaczynał zawodzić
Kiedy system rozpoznaje, że pytanie wymaga zaawansowanego rozumowania, włącza naszą wersję modelu Gemini. Rozbija pytanie na różne podtematy i wysyła wiele zapytań równolegle w Twoim imieniu. Zamiast serwować Ci listę linków, system szuka najlepszych fragmentów tekstu, tabel, obrazów z każdego z tych źródeł i składa dla Ciebie spójną odpowiedź.
Elizabeth Reid, szefowa Google Search, Google I/O 2025
Praktyczne korzyści dla użytkownika
- Szybka odpowiedź - bez klikania po wielu stronach
- Kompletność - wszystkie aspekty pytania są adresowane
- Porównania - system automatycznie porównuje opcje
- Opinie - system znajduje doświadczenia innych użytkowników
- Aktualizacja - odpowiedź zawiera najnowsze informacje
Jak technicznie działa Query Fanout?
Krok 1: Analiza intencji (Intent Recognition)
Kiedy użytkownik wpisze pytanie, system AI najpierw nie patrzy na słowa, ale na intencję stojącą za pytaniem.
Przykład dla sklepu z elektroniką:
Pytanie: "Jaka kamera do wideo dla początkującego vlogera"
Rozpoznana intencja:
- Kategoria produktu: kamery
- Poziom użytkownika: początkujący
- Zastosowanie: vlogging (wideo na YouTube/social media)
- Istniejące umiejętności: minimalne
- Priorytet: łatwość obsługi, a nie profesjonalne możliwości
System rozumie, że ten użytkownik nie kupi kamery za 5000 zł, tylko coś w przedziale 500-2000 zł, z prostym interfejsem, dobrą stabilizacją i wbudowanym mikrofonem.
Krok 2: Dekompozycja zapytania
Na podstawie rozpoznanej intencji system przeprowadza dekompozycję - rozbija jedno pytanie na wiele logicznie powiązanych podzapytań.
Dla kamery vlogera mogą to być:
- "Najlepsze kamery dla początkujących vlogerów 2025"
- "Ile kosztuje dobra kamera do vloggingu"
- "Kamera czy smartfon do vloggingu - porównanie""
- "Jaka kamera ma najlepszą stabilizację obrazu"
- "Recenzje - najlepsze kamery YouTube’owe"
- "Kamera do vloggingu - co musi mieć (mikrofon, ekran)"
- "Gdzie kupić kamerę do vloggingu w Polsce"
- "Vlogerzy polecają - kamera na początek"
Każde z tych podpytań odpowiada na inny aspekt decyzji zakupowej.
Krok 3: Równoczesne wyszukiwanie (Parallel Retrieval)
To jest kluczowa część. Zamiast szukać po kolei (najpierw ceny, potem opinii, potem specyfikacji - a to zajęłoby czas), wszystkie podzapytania są wyszukiwane jednocześnie.
Przykład pseudokodu (Python):
import asyncio
async def query_fanout_search(main_query):
"""
Równoczesne wyszukiwanie dla wszystkich podzapytań
"""
# Rozbijamy główne pytanie
sub_queries = decompose_query(main_query)
# Wynik: ["kamera vlogging początkujący", "kamera do YT opinie", ...]
# Tworzymy zadania dla każdego podzapytania
tasks = []
for sub_query in sub_queries:
tasks.append(search_google(sub_query))
tasks.append(search_youtube_reviews(sub_query))
tasks.append(search_forums(sub_query))
tasks.append(search_prices(sub_query))
# Uruchamiamy wszystkie jednocześnie (asyncio)
all_results = await asyncio.gather(*tasks)
Tradycyjne szukanie byłoby sekwencyjne. Query fanout je paralelizuje (wszystko jednocześnie). To redukuje czas odpowiedzi z kilku sekund do około 1-2 sekund.
Krok 4: Łączenie wyników (Aggregation & Ranking)
Teraz system musi dokonać rzeczy trudnej: połączyć wyniki z dziesiątek różnych źródeł w sposób, który ma sens. Użyty algorytm to Reciprocal Rank Fusion (RRF). Wyjaśniam na prostym przykładzie:
Załóżmy, że szukamy "najlepsze słuchawki bezprzewodowe":
Wyniki z podzapytania 1 ("słuchawki do pracy biurowej"):
- Sony WH-1000XM5
- Bose QC45
- Sennheiser Momentum
Wyniki z podzapytania 2 ("słuchawki – test komfortu"):
- Bose QC45
- Apple AirPods Max
- Sony WH-1000XM5
Wyniki z podzapytania 3 ("słuchawki – cena 2025"):
- JBL Live Pro 2
- Sony WH-1000XM5
- Anker Soundcore
RRF działa tak:
- Sony WH-1000XM5: pojawia się w wynikach nr 1, 3, 2 → otrzymuje najwyższy score
- Bose QC45: pojawia się w wynikach nr 2, 1 → średni score
- Reszta ma niższe score
Finalna lista:
- Sony WH-1000XM5 (najczęściej polecane w wielu aspektach)
- Bose QC45
- JBL Live Pro 2
Krok 5: Synteza i prezentacja
Teraz system wyciąga z każdego źródła najistotniejsze fragmenty:
- Z recenzji: "Komfort 8 godzin pracy"
- Z testu: "ANC redukuje o 95% szum"
- Z forum: "Super do zdalnej pracy"
- Z cenówki: "349 zł w promocji"
Finalnie prezentuje te wyniki użytkownikowi w formie jednego spójnego tekstu z cytatami ze źródeł.
Praktyczne implikacje dla sklepów online
Czy to oznacza koniec tradycyjnego SEO?
Nie. Tradycyjne wyszukiwanie wciąż istnieje i będzie istnieć. Ale oprócz niego pojawia się nowy kanał - visibility w odpowiedziach AI.
Tradycyjne SEO (ranking dla konkretnych słów kluczowych):
Użytkownik szuka: "laptop do nauki programowania"
→ Twoja strona pojawia się na pozycji 3
→ Użytkownik klika w link
→ Trafia do CiebieQuery Fanout (pojawienie się jako część odpowiedzi AI):
Użytkownik szuka: "laptop do nauki programowania"
→ AI Mode generuje odpowiedź ze zdaniem:
"Popularne wybory to: [cytat ze strony A], [cytat ze strony B],
[cytat z Twojej strony]"
→ Użytkownik czasami klika w linki, czasami nie – ale Twoja marka
pojawia się w odpowiedziOba kanały teraz działają równolegle.
Co się zmienia dla sklepu?
1. Struktura treści na stronie musi się zmienić
Stare podejście (zoptymalizowane pod tradycyjne SEO):
Tytuł: Laptop do programowania
Najlepszy laptop do programowania to coś, co ma...
[dwie strony gęstego tekstu]To działa dla człowieka czytającego, ale AI Mode potrzebuje więcej struktury.
Nowe podejście (pod query fanout):
# Laptop do programowania – pełny przewodnik 2025
## Co musisz wiedzieć zanim kupisz laptop do programowania?
### 1. Procesor – Intel czy AMD?
AMD Ryzen 7 jest szybszy dla kompilacji kodu...
[konkretne testy]
### 2. RAM – ile potrzebujesz?
- Dla Python: 8-16 GB
- Dla Web Dev: 16 GB minimum
- Dla AI/ML: 32 GB
### 3. Dysk SSD – ile?
Minimum: 512 GB
Rekomendacja: 1 TB
[Każdy punkt ma jasną, samostrną odpowiedź]
## Porównanie popularne modele
| Model | Procesor | RAM | SSD | Cena | Ocena |
| --- | --- | --- | --- | --- | --- |
| Model A | Ryzen 7 | 16GB | 512GB | 3999 | 9.2 |
| Model B | i7-13 | 16GB | 1TB | 4499 | 9.5 |
[Każdy wiersz to fragment, który AI może wyciągnąć]
## FAQ – najczęściej pytania
P: Czy MacBook jest dobry do programowania?
O: Tak, ale...
P: Ile kosztuje dobry laptop do kodowania?
O: Od 3000 zł...
[Każda para P&O to potencjalne podzapytanie]
## Opinie użytkowników
"Kupiłem ten laptop, programuję w Pythonie i teraz zarabiam..." (15 opinii pozytywnych)Widzisz różnicę? Druga struktura pozwala AI wyciągać fragmenty dla każdego podzapytania.
2. Dane strukturalne (Schema Markup) to teraz obowiązek
Schema.org to sposób, aby "powiedzieć" AI, co dokładnie oznaczają liczby i słowa na Twojej stronie.
Przykład:
<!-- BEZ Schema -->
Laptop kosztuje 3999 złotych
<!-- Z Schema (AI rozumie, że to cena) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Laptop do programowania Model X",
"price": "3999",
"priceCurrency": "PLN",
"availability": "https://schema.org/InStock",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "125"
}
}
</script>Dzięki temu, gdy AI szuka "aptopy do programowania do 4000 złotych", Twoja strona pojawia się w wynikach.
3. Autorytet i cytowania ważne bardziej niż kiedykolwiek
Query fanout faworyzuje źródła, które są cytowane wielokrotnie w odpowiedziach AI. Jeśli Twoja strona pojawia się w odpowiedziach na wiele podzapytań - to oznacza, że jesteś autorytetem.
Jak zbudować autorytet?
- Pisz o tym, co wiesz najlepiej
- Dodawaj konkretne dane, testy, liczby
- Cytuj innych i linkuj - to pokazuje, że się orientujesz
- Buduj backlinki od renomowanych źródeł
- Regularnie aktualizuj treść
Praktyczne porady
Poradnik 1: Mapowanie Query Fanout dla Twojego produktu
Załóżmy, że prowadzisz sklep z powerbankami.
Krok 1: Wybierz główne pytanie (core query)
"Najlepszy powerbank do 150 złotych"
Krok 2: Rozszerz o kontekst
Zastosowanie:
- Do telefonu
- Do laptopa
- Do podróży
- Do pracy
Cechy:
- Pojemność (mAh)
- Szybkość ładowania
- Rozmiar
- Waga
Profil użytkownika:
- Student
- Pracownik biurowy
- Podróżnik
- Gamer
Typ porównania:
- Konkurencja
- Poprzednia generacja
- Alternatywy
Krok 3: Generuj konkretne podzapytania
Krok 4: Dla każdego podzapytania przygotuj sekcję na stronie
## Ile razy powerbank 20000 mAh naładuje mój telefon?
To zależy od pojemności baterii Twojego telefonu:
- iPhone 14 (3200 mAh): ~6 razy
- Samsung Galaxy S24 (4000 mAh): ~5 razy
- OnePlus 12 (5400 mAh): ~3.5 razy
- iPad Air (8600 mAh): ~2 razy
**Jak to się oblicza?**
20000 mAh (powerbank) / 4000 mAh (telefon) = 5 ładowań
(w praktyce mniej ze względu na straty energii)
## Czy powerbank 20000 mAh naładuje laptopa?
Tak, ale...
- Musi mieć wyjście USB-C Power Delivery
- Musi być co najmniej 65W
- Starsze laptopy (z USB Micro) – nie
Nasz model: 100W, USB-C PD, ładuje MacBooka Air w 2.5 godziny.
## Powerbank na wakacje – czy się zmieści?
- Wymiary: 12 x 7 x 3 cm
- Waga: 420 g
- Zmieści się w plecaku, kosmetyczce, kieszeni dużej torebki
- Idealny na wakacje (nie zajmuje miejsca)
[itd.]Poradnik 2: Pisanie treści pod Query Fanout - szablon
Szablon nagłówka (dla każdego aspektu)
# [Produkt] – kompletny przewodnik [rok]
## Co powinieneś wiedzieć zanim kupisz [produkt]?
### 1. [Pierwszy krytyczny aspekt]
- Definicja dla początkujących
- Dlaczego to ważne
- Jak to sprawdzić w praktyce
### 2. [Drugi aspekt]
[to samo]
### 3. [Trzeci aspekt]
[to samo]
## Porównanie popularne modele
| Nazwa | Spec1 | Spec2 | Cena | Opinia |
| --- | --- | --- | --- | --- |
| Model A | | | | |
## FAQ – najczęstsze pytania
P: [Pytanie które pojawiło się w Google Trends]
O: [Konkretna odpowiedź]
## Opinie użytkowników
"Historia użytkownika, dlaczego kupił, jakie są jego doświadczenia"Poradnik 3: Implementacja Schema.org dla produktu
<!DOCTYPE html>
<html>
<head>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Powerbank 20000 mAh SuperCharge",
"image": ["https://...1.jpg"],
"description": "Powerbank do 150 złotych z szybkim ładowaniem",
"brand": {
"@type": "Brand",
"name": "TechBrand"
},
"offers": {
"@type": "Offer",
"url": "https://...produkt",
"priceCurrency": "PLN",
"price": "129.99",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": "348",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Użytkownik Jan"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"reviewBody": "Super powerbank, polecam"
}
]
}
</script>
</head>
</html>Dzięki temu AI wie dokładnie:
- Jaka jest cena
- Ile opinii masz
- Czy jest dostępny
- Co mówią o tym użytkownicy
Query Fanout w rzeczywistych scenariuszach
Scenariusz 1: Klient szuka "porównania"
"Rower gravel czy rower szosowy - który wybrać?"
Podzapytania, które generuje AI:
- "Rower gravel - co to jest, do czego"
- "Rower szosowy - parametry, przeznaczenie"
- "Gravel vs szosa - różnice techniczne"
- "Gravel czy szosa do turystyki rowerowej"
- "Gravel czy szosa - cena w Polsce"
- "Opinie – który rower lepszy dla początkującego"
- "Testy – gravel vs szosa przyczepność"
Co powinna zawierać Twoja strona, aby pojawić się:
- Definicje (gravel + szosa)
- Porównanie w tabeli
- Opinie rzeczywistych użytkowników
- Ceny (linki do sklepów)
- Testy praktyczne
- Dla kogo każdy typ
Scenariusz 2: Klient ma konkretny problem
"Słuchawki bezprzewodowe się szybko rozładowują"
Podzapytania:
- "Dlaczego słuchawki bezprzewodowe szybko się rozładowują"
- "Słuchawki Bluetooth - jak wydłużyć czas pracy"
- "Które słuchawki mają najdłuższy czas pracy"
- "Zmiana baterii w słuchawkach - czy możliwe"
- "Problemy z baterią słuchawek - forum"
Co powinna zawierać Twoja treść:
- Przyczyny (czemu tak się dzieje)
- Poradnik (jak przedłużyć żywotność)
- Porównanie słuchawek z najlepszą baterią
- Informacje o serwisie
- Porady techniczne (kalibracja baterii)
Scenariusz 3: Klient porównuje marki
"Xiaomi czy Samsung - smartfon 2025"
Podzapytania:
- "Xiaomi vs Samsung - porównanie specyfikacji"
- "Xiaomi czy Samsung - co polecają eksperci"
- "Xiaomi - opinie użytkowników 2025"
- "Samsung - opinie użytkowników 2025"
- "Xiaomi czy Samsung - który lepszy do zdjęć"
- "Cena Xiaomi vs Samsung"
- "Serwis Xiaomi vs Samsung w Polsce"
Co powinna zawierać:
- Porównanie techniczne w tabeli
- Opinie redakcji
- Zdjęcia z aparatów (porównanie fotografii)
- Ceny w polskich sklepach
- Dostępność serwisu
- Gwarancja
Technika - kod i implementacja
Kod 1: Generowanie podzapytań z GPT-5 (python)
import openai
def generate_sub_queries(main_query, num_queries=10):
"""
Generuje podzapytania do głównego pytania
"""
prompt = f"""
Jesteś ekspertem w SEO i AI Search Optimization.
Użytkownik zadał następujące pytanie:
"{main_query}"
Wygeneruj {num_queries} powiązanych podzapytań, które użytkownik
mógł mieć w głowie lub które AI Mode mogłaby wygenerować.
Podzapytania powinny pokrywać:
- Definicje i wyjaśnienia
- Porównania i alternatywy
- Ceny i dostępność
- Opinie i doświadczenia
- Problem-solving
Zwróć tylko listę podzapytań, jeden per linia.
"""
response = openai.ChatCompletion.create(
model="gpt-5",
messages=[
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=1000
)
sub_queries = response.choices[0].message.content.strip().split('\n')
return [q.strip() for q in sub_queries if q.strip()]
# Przykład użycia:
main_q = "Jaki powerbank wybrać do 150 zł"
subs = generate_sub_queries(main_q)
for i, sub in enumerate(subs, 1):
print(f"{i}. {sub}")
# Wynik:
# 1. Ile mAh powinien mieć powerbank do telefonu
# 2. Powerbank 20000 mAh czy 30000 mAh – który lepszy
# 3. Najlepsze powerbanki do 150 zł 2025
# itd.Kod 2: Symulacja Query Fanout - wyszukiwanie wielokanałowe (python)
import asyncio
from typing import List, Dict
class QueryFanoutSimulator:
"""
Symuluje działanie query fanout
"""
def __init__(self):
self.databases = {
'products': self.search_products,
'reviews': self.search_reviews,
'forums': self.search_forums,
'prices': self.search_prices,
'youtube': self.search_youtube
}
async def execute_fanout(self, main_query: str, sub_queries: List[str]) -> Dict:
"""
Wykonuje query fanout dla głównego pytania
"""
print(f"Główne pytanie: {main_query}\n")
print(f"Wygenerowane podzapytania ({len(sub_queries)}):")
for sq in sub_queries:
print(f" - {sq}")
print("\n--- Równoczesne wyszukiwanie ---\n")
# Dla każdego podzapytania, szukamy we wszystkich bazach jednocześnie
tasks = []
for sub_query in sub_queries:
for db_name, search_func in self.databases.items():
tasks.append(
self._search_with_metadata(db_name, search_func, sub_query)
)
# Wykonanie wszystkich jednocześnie
results = await asyncio.gather(*tasks)
# Agregacja wyników
aggregated = self._aggregate_results(results)
return aggregated
async def _search_with_metadata(self, source: str, search_func, query: str):
"""
Wyszukiwanie z metadanymi (jaki source, ranking)
"""
results = await search_func(query)
return {
'source': source,
'query': query,
'results': results,
'count': len(results)
}
async def search_products(self, query: str) -> List[Dict]:
"""Symulacja szukania produktów"""
await asyncio.sleep(0.5) # Symulacja opóźnienia
return [
{'title': f'Produkt A dla "{query}"', 'rank': 1},
{'title': f'Produkt B dla "{query}"', 'rank': 2}
]
async def search_reviews(self, query: str) -> List[Dict]:
"""Symulacja szukania opinii"""
await asyncio.sleep(0.3)
return [
{'title': f'Recenzja: {query}', 'rank': 1, 'rating': 4.8}
]
async def search_forums(self, query: str) -> List[Dict]:
"""Symulacja szukania na forach"""
await asyncio.sleep(0.4)
return [
{'title': f'Forum - {query}', 'rank': 1, 'replies': 23}
]
async def search_prices(self, query: str) -> List[Dict]:
"""Symulacja wyszukiwania cen"""
await asyncio.sleep(0.2)
return [
{'title': f'Ceny - {query}', 'price_min': 100, 'price_max': 300}
]
async def search_youtube(self, query: str) -> List[Dict]:
"""Symulacja szukania na YouTube"""
await asyncio.sleep(0.6)
return [
{'title': f'Video: {query}', 'views': '1M', 'rating': 4.9}
]
def _aggregate_results(self, all_results: List[Dict]) -> Dict:
"""
Agregacja i ranking wyników (uproszczone RRF)
"""
aggregated = {}
source_count = {}
for result_group in all_results:
source = result_group['source']
query = result_group['query']
# Liczenie ile razy źródło pojawia się
source_count[source] = source_count.get(source, 0) + 1
for result in result_group['results']:
title = result['title']
if title not in aggregated:
aggregated[title] = {
'title': title,
'sources': [],
'score': 0
}
aggregated[title]['sources'].append(source)
aggregated[title]['score'] += 1
# Sortowanie po score (ile źródeł potwierdza rezultat)
ranked = sorted(
aggregated.values(),
key=lambda x: x['score'],
reverse=True
)
return {
'total_results': len(ranked),
'top_results': ranked[:5],
'sources_used': source_count
}
# Użycie:
async def main():
simulator = QueryFanoutSimulator()
main_query = "Najlepszy powerbank do pracy biurowej"
sub_queries = [
"powerbank do laptopa",
"powerbank – najdłuższy czas pracy",
"powerbank do biura – opinie",
"powerbank szybkie ładowanie"
]
results = await simulator.execute_fanout(main_query, sub_queries)
print("\n--- Wyniki zagregowane ---\n")
print(f"Znaleziono: {results['total_results']} unikalnych wyników")
print(f"Źródła: {results['sources_used']}\n")
print("Top 5 wyników (posortowane po popularności):")
for i, result in enumerate(results['top_results'], 1):
print(f"{i}. {result['title']}")
print(f" Score: {result['score']} | Źródła: {', '.join(result['sources'])}\n")
# Uruchomienie
if __name__ == "__main__":
asyncio.run(main())Kod 3: Ekstrakcja fragmentów (passage extraction) (python)
from typing import List
def extract_passages_for_fanout(content: str, query: str) -> List[str]:
"""
Wyciąga fragmenty treści, które odpowiadają na podzapytanie
"""
# Rozbicie na paragrafy
paragraphs = content.split('\n\n')
relevant_passages = []
for para in paragraphs:
# Szukanie ważnych słów z zapytania
score = calculate_relevance(para, query)
if score > 0.6: # Próg: 60% trafności
# Ograniczenie do 2-3 zdań (fragmentu)
sentences = para.split('. ')
passage = '. '.join(sentences[:3]) + '.'
relevant_passages.append({
'text': passage,
'score': score,
'length': len(passage)
})
# Sortowanie po score
relevant_passages = sorted(
relevant_passages,
key=lambda x: x['score'],
reverse=True
)
return relevant_passages[:5] # Top 5 fragmentów
def calculate_relevance(text: str, query: str) -> float:
"""
Oblicza, jak bardzo tekst jest relevantny do zapytania (0-1)
"""
query_words = query.lower().split()
text_lower = text.lower()
matches = sum(1 for word in query_words if word in text_lower)
relevance = matches / len(query_words) if query_words else 0
return min(relevance, 1.0) # Max 100%
# Przykład:
content = """
Powerbank to urządzenie, które przechowuje energię i ładuje Twój telefon.
20000 mAh oznacza pojemność – im więcej mAh, tym więcej razy naładuje telefon.
Powerbank do pracy biurowej powinien być kompaktowy i wygodny.
Nasz powerbank waży tylko 300 gramów i mieści się w torebce.
Szybkie ładowanie to ważna cecha. Nasz model wspiera szybkie ładowanie 65W.
"""
passages = extract_passages_for_fanout(content, "powerbank do pracy biurowej")
for i, p in enumerate(passages, 1):
print(f"{i}. (score: {p['score']:.2f})")
print(f" {p['text']}\n")
# Wynik:
# 1. (score: 0.67)
# Powerbank do pracy biurowej powinien być kompaktowy i wygodny...
#
# 2. (score: 0.50)
# Nasz powerbank waży tylko 300 gramów...Błędy i pułapki
Błąd 1: Pisanie tylko dla ludzi, nie dla AI
Zła strona:
Bestsellerowy powerbank 2025! Nasze produkty to gwarancja zadowolenia.
Kup teraz, a zaoszczędzisz 50 zł. Zamawiaj za darmo od 100 zł...Dlaczego źle? AI Mode nie wie:
- Czy to powerbank do telefonu czy laptopa
- Ile mAh ma
- Ile kosztuje
- Jakie ma opinie
Dobra strona:
## Co to jest powerbank 20000 mAh?
Powerbank to urządzenie do ładowania z pojemością 20000 mAh.
### Ile razy naładuje telefon?
- iPhone 14: 6 razy
- Samsung S24: 5 razy
### Cena
129.99 złotych (promocja z 199 zł)
### Opinie
Rating: 4.8/5 (348 opinii)AI może z tego wyciągnąć: pojemność, zastosowanie, cenę, opinie.
Błąd 2: Niedokończone artykuły
Wiele sklepów ma artykuły typu "Artykuł w przygotowaniu" lub "Wkrótce". To jest niewidoczne dla AI Mode - artykuł jest ignorowany.
Reguła: Publikuj kompletne artykuły. Jeśli nie masz czasu, lepiej wiele krótkich artykułów niż jeden niedokończony długi.
Błąd 3: Brak danych strukturalnych
Bez Schema:
Słuchawki kosztują 299 zł
Z Schema:
<span itemscope itemtype="https://schema.org/Offer">
<span itemprop="price">299</span>
<span itemprop="priceCurrency">PLN</span>
</span>Bez Schema, AI może sądzić, że to jest rok lub numer modelu. Ze Schema - wie, że to cena.
Błąd 4: Kopiowanie konkurencji
Jeśli wszystkie sklepy piszą identycznie ("Najlepszy powerbank to…"), żaden się nie wyróżni. Query fanout faworyzuje unikatową perspektywę.
Dobra praktyka:
- Twoja historia (jak wpadłeś na ideę)
- Twoje testy (sam sprawdziłeś)
- Twoje opinie (co myślisz)
To AI weźmie chętniej.
FAQ - Najczęstsze pytania
Czy Query Fanout dotyczy wszystkich branż?
Nie. Najbardziej dotyczy branż, gdzie decyzje są złożone:
- E-commerce (wybór produktu)
- Turystyka (planowanie podróży)
- Porady (jak coś zrobić)
- Edukacja (nauka czegoś)
Mniej dotyczy:
- Zapytań faktograficznych (“Kto został prezydentem Polski w 2025?”)
- Informacji realtime (pogoda, kursy)
Ile czasu zajmuje adaptacja sklepu pod Query Fanout?
Dla małego sklepu (50-100 produktów): 2-4 tygodnie, dla średniego (1000 produktów): 2-3 miesiące, dla dużego (10000+ produktów): 6 miesięcy+
To nie jest jednorazowa praca - to ciągły proces.
Czy dobrze rankingowany produkt tradycyjnie, będzie widoczny w AI Mode?
Zwykle tak, ale nie zawsze. AI Mode ma inne kryteria niż tradycyjne SEO. Możliwe, że będziesz wysoko w tradycyjnym wyszukiwaniu, ale nie w AI Mode (lub vice versa). Dlatego obie strategie są ważne.
Czy Query Fanout zmienia sposób, pozyskiwania ruchu z Google Ads?
Na razie nie - Google Ads wciąż działa. Ale długoterminowo, jeśli coraz więcej osób będzie korzystać z AI Mode zamiast tradycyjnego wyszukiwania, model biznesu może się zmienić. Warto inwestować w inne kanały (email, media społecznościowe, partnerstwa).
Czy ChatGPT również używa Query Fanout?
ChatGPT używa zaawansowanej wersji (zapytuje użytkownika o wyjaśnienia, sam rozbija zapytania wewnętrznie). Ale nie ma widoczności jak Google AI Mode. Inne narzędzia:
- Perplexity AI - wykorzystuje query fanout jawnie
- Claude - ma własną metodę
- Chatboty sklepów - mogą mieć uproszczoną wersję
Czy moja treść musi być dosłownie na mojej stronie?
Nie. AI Mode może też cytować fragmenty z innych źródeł. Ale jeśli masz swoją stronę - to znacznie zwiększa szanse na widoczność w odpowiedziach.
Czy AMP lub mobile-first jest ważne dla Query Fanout?
Tak, ale nie tak jak dla tradycyjnego SEO. AI Mode ważne są:
- Możliwość sprawdzenia treści
- Struktura danych
- Autorytet
- Aktualność
Ale nie koniecznie prędkość strony (chociaż szybka strona zawsze pomaga).
Czy teraz powinienem zatrudnić copywritera?
Jeśli wcześniej nie miałeś - tak. Query Fanout wymaga dużej ilości, wysokiej jakości treści. Jeden copywriter powinien pisać artykuł na tydzień (przynajmniej).
Słownik pojęć
AI Mode - tryb Google Search, gdzie odpowiedzi są generowane przez AI (zamiast listy linków)
Aggregation (Agregacja) - połączenie wyników z wielu źródeł w jedną odpowiedź
Asyncio - biblioteka Pythona do równoczesnego wykonywania zadań
Autorytet (Authority) - wiedza Google, że dana strona jest godna zaufania w danym temacie
Backlink - link z innej strony do Twojej
Chatbot - program, który rozmawia z użytkownikiem
Chunk (Kawałek) - mały fragment tekstu (np. jeden paragraf)
Core Query - główne pytanie, od którego zaczynamy
Dekompozycja - rozbijanie jednego pytania na wiele mniejszych pytań
Embedding - przekształcenie tekstu na liczby (wektory), które reprezentują znaczenie
Fanout - rozpowszechnianie, rozpylanie (tu: rozpowszechnianie zapytania)
Gemini - model AI firmy Google (odpowiednik ChatGPT)
Generator (LLM) - model AI, który generuje tekst
Hallucynacja - kiedy AI zmyśla informacje, które nie są prawdziwe
Intent Recognition - rozpoznawanie, co naprawdę chce użytkownik (nie tylko co napisał)
LLM (Large Language Model) - duży model języka (ChatGPT, Gemini, Claude)
Passage Extraction - wyciąganie fragmentów tekstu, które są relevantne
Query - pytanie, zapytanie
Query Decomposition - rozbijanie pytania na podzapytania
Query Fanout - rozpowszechnianie pytania na wiele podzapytań przez AI
RAG (Retrieval-Augmented Generation) - wyszukiwanie informacji + generowanie odpowiedzi
Reciprocal Rank Fusion (RRF) - algorytm do łączenia wyników z wielu źródeł
Relevance - czy wynik jest odpowiedni do zapytania
Retrieval - wyszukiwanie, szukanie informacji
Schema.org - standard do oznaczania danych na stronach
Semantyka - znaczenie słów i tekstów
SEO - optymalizacja dla wyszukiwarek
Sub-query - podzapytanie, mniejsze pytanie
Synthesis – łączenie informacji z wielu źródeł
Vector Database - baza danych przechowująca tekst jako wektory
Vector Similarity - jak bardzo dwa teksty są do siebie podobne
Checklist - co zrobić w swoim sklepie?
- Analiza - Sprawdzić, jak funkcjonuje Query Fanout dla Twoich głównych produktów (szukaj w Google AI Mode)
- Mapowanie - Stworzyć listę podzapytań dla top 10 produktów
- Audyt treści - Sprawdzić, które strony mają już fragmenty adresujące podzapytania
- Struktura - Przeorganizować strony produktowe: dodaj FAQ, dodaj porównania w tabelach, dodaj opinie użytkowników, dodaj sekcje "Co musisz wiedzieć"
- Schema - Wdrożyć Schema.org na wszystkie strony produktów
- Treść - Napisać artykuły na "buying guide" dla top kategorii
- Backlinki - Zacząć budować autorytet (artykuły na zewnętrznych serwisach)
- Monitoring - Śledzić widoczność w AI Mode (nowe narzędzia to umożliwiają)
- Iteracja - Co miesiąc analizować podzapytania i aktualizować treść
Podsumowanie
Query Fanout to nie przyszłość - to już teraźniejszość. Od maja 2025 roku Google AI Mode działa w produkcji, a konkurencja nadąża (ChatGPT, Claude, Perplexity).
Kluczowe punkty do zapamiętania:
- Query Fanout to rozbijanie pytania na podzapytania - AI szuka ich równolegle
- Tradycyjne SEO wciąż istnieje - ale obok niego pojawia się nowy kanał (visibility w AI Mode)
- Struktura treści się zmienia - zamiast jednego tekstu dla jednego hasła, piszesz kompletny przewodnik adresujący wiele aspektów
- Schema.org to teraz obowiązek - AI musi rozumieć, co oznaczają liczby i słowa na Twojej stronie
- Autorytet ważny bardziej niż kiedykolwiek - AI faworyzuje źródła, które pojawiają się wielokrotnie w odpowiedziach
- To jest maraton, nie sprint - wdrażaj powoli, testuj, iteruj
Query Fanout daje nowe możliwości dla Twojego sklepu. Nie musisz być programistą - zacząć możesz od przeanalizowania, jak Query Fanout działa dla Twoich produktów, mapowania podzapytań, i przygotowania lepszej treści.
Reszta przyjdzie naturalnie.
Źródła
- Google I/O 2025 – Elizabeth Reid, Head of Google Search - "AI Mode i Query Fanout Technique"
- fillrank.pl, Senuto.com, seo-www.pl, cyfrowa.rp.pl, 4media.com
- Google AI Mode Official
- Microsoft Azure AI Docs
- Haystack.deepset.ai - Advanced RAG Patterns
- OpenAI API Documentation - LLM Prompting
Udostępnij:
