Қазақстандық E-E-A-T: фудблогер үшін Google-де 1-орын және Ad Manager монетизациясы
1. Негізгі проблема: контент бар, бірақ іздеуде көрінбейді
Алматылық гастрономиялық блогер үш жыл бойы Instagram парақшасын жүргізді: Панфилов көшесіндегі кофеханалар, Достықтағы стейкхаустар мен Навои бойындағы ұлттық тағамдарға адал шолулар жазды. Бірақ 2026 жылға қарай автор еңбегі мен нәтиже арасында үлкен алшақтық пайда болды:
- Контент қолданба ішінде қамалып қалды: Google іздеу роботтары Instagram жазбаларын индекстемейді. Алматы тұрғындары мен туристері Google-де «Алматыдағы ең дәмді бешбармақ қайда» немесе «Абай бойындағы жақсы кофе» деп іздегенде, алдынан 6 жыл бұрын жабылған ескі сайттар шығатын.
- Сенім тапшылығы (E-E-A-T вакуумы): Google Helpful Content алгоритмдері шынайы тәжірибені (Experience), сараптаманы (Expertise), беделді (Authoritativeness) және сенімділікті (Trustworthiness) талап етіп, беткей сайттарды төмен түсіре бастады. Микроқұрылымы жоқ парақшалар кеңейтілген нәтижелерге (Rich Snippets) кіре алмады.
- Тікелей жарнаманың тиімсіздігі: Мейрамханалар нақты ақша төлеудің орнына бір шыны аяқ кофе немесе 20% жеңілдік ұсынумен шектелетін.
Жобаның мақсаты — блогердің фотолары мен жазбаларын Google Cloud негізіндегі жоғары жылдамдықты медиа-порталға айналдыру, сілтеме сатып алмай-ақ жергілікті Google іздеуінде 1-орынға шығу және Google Ad Manager арқылы айына 50 000 оқырманнан тұрақты табыс табу болды.
2. Қарапайым шешімдер неге сәтсіз болды?
Қарапайым конструкторлар мен әдепкі WordPress іздеу жүйелерінің жаңа талаптарына төтеп бере алмады:
- Баяу TTFB (Time To First Byte): Арзан ортақ хостингтер беттерді 1 100–1 600 мс кешігумен ашатын. Googlebot іздеу лимитіне тіреліп, жаңа шолуларды апталап индекстемеді.
- Семантикалық құрылымның болмауы: Schema.org стандартының
ReviewжәнеRestaurantбелгілеулерінсіз іздеу жүйесі орташа чекті, мекенжайды және рейтингті ажырата алмады. - Макетті жылжытатын агрессивті баннерлер (CLS): Өлшемі белгіленбеген баннерлер дизайнды қозғалтып (CLS > 0.35), сайттың пайдаланушы тәжірибесі рейтингін түсірді.
3. Портал архитектурасы: Google Cloud Run + Cloud CDN + Schema.org + GAM
Біз Google Cloud Run серверлік рендерингі (SSR) мен жаһандық Cloud CDN кэштеуін біріктірген жеңіл жүйе жасадық:
┌─────────────────────────────────────────────────────────────────────────┐
│ Google Search (Googlebot Smartphone) және Алматы/Астана тұрғындары │
│ Іздейді: "Алматының ең үздік стейкхаустары", "Панфилов кофеханалары" │
└────────────────────────────────────┬────────────────────────────────────┘
│ Бетті сұрау (<45 мс TTFB)
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Google Cloud CDN + Cloud Storage │
│ - Тағамдардың WebP/AVIF фотоларын кэштеу │
│ - Schema.org деректері бар дайын статикалық HTML-ді лезде беру │
└────────────────────────────────────┬────────────────────────────────────┘
│
▼ Динамикалық сұраулар
┌─────────────────────────────────────────────────────────────────────────┐
│ Google Cloud Run (Node.js / React SSR) │
│ - Дұрыс JSON-LD Schema.org (Restaurant, Review, Rating) қалыптастыру │
│ - Тексерілген автордың E-E-A-T метадеректерін енгізу │
└────────────────────────────────────┬────────────────────────────────────┘
│
▼ Пайдаланушы экраны
┌─────────────────────────────────────────────────────────────────────────┐
│ Браузер: Google Ad Manager жарнамасын ақылды жүктеу │
│ - IntersectionObserver (тек 50% көрінгенде жүктеу) │
│ - Клиенттік бәсеке: Choco / Wolt / Arbuz / Kaspi Магазин │
│ - Dwell-time таймер: Баннерді 30 секундтан кейін авто-жаңарту │
└─────────────────────────────────────────────────────────────────────────┘Алматыдағы AdTech-арбитраж: Prebid.js пен Ad Manager арқылы CPC-ді 450 ₸-ге дейін өсіру
4. Google E-E-A-T талаптарына сай Schema.org микробелгілеу коды
Google автордың сараптамалық тәжірибесіне толық сенуі үшін әрбір парақша нақты гео-координаттары, рейтингі және автор мәліметтері бар JSON-LD құрылымын жасайды:
interface RestaurantReviewData {
restaurantName: string;
streetAddress: string;
city: string;
postalCode: string;
latitude: number;
longitude: number;
servesCuisine: string[];
priceRange: string;
ratingValue: number;
bestRating: number;
reviewBody: string;
authorName: string;
authorUrl: string;
datePublished: string;
}
export function generateRestaurantEeatSchema(data: RestaurantReviewData): string {
const schema = {
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Restaurant",
"name": data.restaurantName,
"image": "https://almaty-food.kz/static/photos/review-cover.webp",
"address": {
"@type": "PostalAddress",
"streetAddress": data.streetAddress,
"addressLocality": data.city,
"postalCode": data.postalCode,
"addressCountry": "KZ"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": data.latitude,
"longitude": data.longitude
},
"servesCuisine": data.servesCuisine,
"priceRange": data.priceRange
},
"reviewRating": {
"@type": "Rating",
"ratingValue": data.ratingValue,
"bestRating": data.bestRating,
"worstRating": 1
},
"author": {
"@type": "Person",
"name": data.authorName,
"url": data.authorUrl,
"jobTitle": "Гастрономический критик и независимый обозреватель",
"sameAs": [
"https://instagram.com/almaty.foodie",
"https://t.me/almaty_tasty_guide"
]
},
"datePublished": data.datePublished,
"reviewBody": data.reviewBody,
"publisher": {
"@type": "Organization",
"name": "Almaty Culinary Guide",
"logo": {
"@type": "ImageObject",
"url": "https://almaty-food.kz/logo.png"
}
}
};
return JSON.stringify(schema, null, 2);
}GitHub-тағы кодты көру (OZAT-kz)
5. Көріну деңгейі жоғары Google Ad Manager жарнамалық компоненті
Жеткізу қызметтері мен ритейлерлер максималды CPC төлеуі үшін жарнама тек пайдаланушы экранында кемінде 50% көрінгенде ғана жүктеледі:
import React, { useEffect, useRef, useState } from 'react';
interface LazyAdSlotProps {
slotPath: string;
divId: string;
dimensions: number[][];
minDwellSeconds?: number;
}
export const LazyViewabilityAdSlot: React.FC<LazyAdSlotProps> = ({
slotPath,
divId,
dimensions,
minDwellSeconds = 30
}) => {
const containerRef = useRef<HTMLDivElement | null>(null);
const [adLoaded, setAdLoaded] = useState<boolean>(false);
useEffect(() => {
if (!containerRef.current) return;
let refreshTimer: NodeJS.Timeout | null = null;
let observer: IntersectionObserver | null = null;
observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting && !adLoaded) {
setAdLoaded(true);
if (typeof window !== 'undefined' && (window as any).googletag) {
const googletag = (window as any).googletag;
googletag.cmd.push(() => {
const slot = googletag
.defineSlot(slotPath, dimensions, divId)
.addService(googletag.pubads());
googletag.display(divId);
// Auto-refresh только при условии удержания видимости > 30 секунд
refreshTimer = setTimeout(() => {
if (entry.intersectionRatio >= 0.5) {
googletag.pubads().refresh([slot]);
}
}, minDwellSeconds * 1000);
});
}
}
});
},
{ threshold: 0.5, rootMargin: '100px 0px' }
);
observer.observe(containerRef.current);
return () => {
if (observer) observer.disconnect();
if (refreshTimer) clearTimeout(refreshTimer);
};
}, [slotPath, divId, dimensions, adLoaded, minDwellSeconds]);
return (
<div
ref={containerRef}
className="my-8 mx-auto flex flex-col items-center justify-center bg-neutral-100 dark:bg-neutral-900/50 rounded-xl p-2 border border-neutral-200 dark:border-neutral-800 min-h-[250px]"
style={{ minWidth: dimensions[0]?.[0] || 300, minHeight: dimensions[0]?.[1] || 250 }}
>
<span className="text-[10px] text-neutral-400 uppercase tracking-wider mb-1">Реклама</span>
<div id={divId} />
</div>
);
};GitHub-тағы кодты көру (OZAT-kz)
6. Google Cloud CDN манифесі
Медиа-активтерді кэштеуге арналған декларативті манифест:
apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeBackendBucket
metadata:
name: almaty-food-guide-static-backend
namespace: production-media
spec:
bucketRef:
name: almaty-food-media-assets
enableCdn: true
cdnPolicy:
cacheMode: "CACHE_ALL_STATIC"
defaultTtl: 86400
maxTtl: 31536000
clientTtl: 3600
serveWhileStale: 86400
negativeCaching: true
negativeCachingPolicy:
- code: 404
ttl: 120
- code: 502
ttl: 10GitHub-тағы кодты көру (OZAT-kz)
7. Енгізу нәтижелері мен монетизация табысы
60 күндік жұмыстан кейінгі нақты өлшенген көрсеткіштер:
Органикалық іздеу трафигі мен табыс динамикасы (E-E-A-T + Ad Manager)
- Google-де 1-орын: 84 мақала ешқандай сатып алынған сілтемесіз жергілікті органикалық іздеуде көш бастады.
- Органикалық трафик: Айына 3 200-ден 51 400 бірегей келушіге дейін өсті (+1 506%).
- Жарнаманың көріну деңгейі (Viewability): 84.7%-ды құрады.
- Айлық таза табыс: ЖК есепшотына Google Ad Manager мен AdSense-тен 680 000 ₸ түсті.
⚠️ Архитектураның шынайы шектеулері мен компромисстері
- 1. Деректерді жаңартып отыру талабы (E-E-A-T Maintenance): Алматы мейрамханалары жабылып немесе мәзірін жиі өзгертеді. 90 күннен асқан ескі мәліметтер Google рейтингін түсіреді.
- 2. Жарнаманы қайта жүктеу шектеуі: Ad Manager ережесі бойынша жарнаманы 30 секундтан жиі жаңартуға тыйым салынады.
- 3. Кездейсоқ басуларды болдырмау: Мобильді экранда контент пен баннер арасында кемінде 32px арақашықтық сақталуы қажет.
«Баспагер: Монетизация» арнайы курсы — жеке табысты медиаңызды іске қосыңыз
Жеке контенттік сайт ашып, Google AdSense модерациясынан алғашқы әрекеттен өтіп, E-E-A-T арқылы іздеу көшін бастағыңыз келе ме? 80 000 ₸ тұратын курсымызда біз Google Cloud медиа-архитектурасын, ҚР банктерінде (Kaspi, Halyk, BCC) валюталық шот ашуды, W-8BEN тапсыруды және ақ іздеу трафигін монетизациялауды үйретеміз.
«Баспагер: Монетизация» курсына жазылу💡 ОЗАТ кеңесі: Енгізуге дайынсыз ба? Архитектура мен бюджетті Scope Builder арқылы есептеңіз немесе тегін ЖИ-аудиттен өтіңіз.

Рустам Шарафутдинов
Google Cloud архитектурасы саласындағы сарапшы және 15 жылдан астам тәжірибесі бар Senior Full-Stack әзірлеушісі. Ақауға төзімді архитектураларға, жоғары жүктемелі жобаларды оңтайландыруға және AI (Vertex AI) интеграциясына маманданған.