URL – ссылка на страницу.
H1 – заголовок первого уровня (динамически генерируется).
Title – оптимизированный SEO-заголовок (до 60 символов).
Meta Description – мета-описание (до 160 символов).
Body – основной текст страницы (генерируется через GPT API).
Departure City – город отправления.
Arrival City – город прибытия.
Country – страна назначения.
Region – регион/область в стране.
Best Travel Time – оптимальный период для поездки (на основе исторических данных).
Price Range – диапазон цен на билеты (парсинг по API авиакомпаний).
Airlines – список авиакомпаний, выполняющих рейсы.
Hotel Offers – цены на отели в пункте назначения (интеграция с Booking API).
Attractions – топовые достопримечательности (LSI-фразы).
FAQ – частые вопросы пользователей (генерируются из People Also Ask).
Internal Links – связанные внутренние ссылки (автогенерация).
Schema.org – тип структурированной разметки (Product + AggregateRating).
Images – изображения (автоматическое название файлов).
Reviews – количество отзывов (данные из Trustpilot/Google Reviews).
CTA – призыв к действию («Купить билет», «Забронировать отель»).
Load Speed – скорость загрузки страницы (по данным Lighthouse).
Indexing Priority – приоритет индексации (High, Medium, Low).
Canonical – канонический URL (динамическое заполнение).
Structured Data Type – схема разметки (Product, FAQ, BreadcrumbList).
Cache Control – политика кеширования (max-age=3600, no-cache).
import openai
import pandas as pd
def generate_text(prompt):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
return response["choices"][0]["message"]["content"]
df = pd.read_csv("pages.csv")
df["H1"] = df.apply(lambda row: generate_text(f"Создай H1 для билетов {row['Departure City']} – {row['Arrival City']}"), axis=1)
df["Meta Description"] = df.apply(lambda row: generate_text(f"Напиши meta description для страницы авиабилетов {row['Departure City']} – {row['Arrival City']}"), axis=1)
df.to_csv("updated_pages.csv", index=False)
import pandas as pd
df = pd.read_csv("updated_pages.csv")
df.to_json("pages.json", orient="records", force_ascii=False)
import json
import requests
# Загружаем свежие URL для индексации
with open("new_urls.json", "r") as f:
urls = json.load(f)
# Indexing API Google
API_URL = "https://indexing.googleapis.com/v3/urlNotifications:publish"
HEADERS = {
"Content-Type": "application/json",
"Authorization": "Bearer TOKEN"
}
def index_url(url):
data = {
"url": url,
"type": "URL_UPDATED"
}
response = requests.post(API_URL, headers=HEADERS, json=data)
return response.json()
# Запускаем индексацию пачками по 100 URL
for i in range(0, len(urls), 100):
batch = urls[i:i+100]
for url in batch:
result = index_url(url)
print(result)
Score=(SearchVolume×0.5)+(Bookings×0.3)+(Clicks×0.2)
df = df.sort_values(by="score", ascending=False)
df.to_csv("popular_routes.csv", index=False)
import requests
import pandas as pd
from google.oauth2 import service_account
# Аутентификация через сервисный аккаунт
SCOPES = ["https://www.googleapis.com/auth/webmasters.readonly"]
SERVICE_ACCOUNT_FILE = "service_account.json"
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
# URL API Google Search Console
GSC_API_URL = "https://www.googleapis.com/webmasters/v3/sites/{site_url}/searchAnalytics/query"
# Параметры запроса
SITE_URL = "sc-domain:example.com" # Указываем домен
START_DATE = "2024-02-01"
END_DATE = "2024-03-01"
DIMENSIONS = ["query", "page", "country", "device"]
payload = {
"startDate": START_DATE,
"endDate": END_DATE,
"dimensions": DIMENSIONS,
"rowLimit": 5000
}
# Запрос к API
headers = {"Authorization": f"Bearer {credentials.token}"}
response = requests.post(GSC_API_URL.format(site_url=SITE_URL), json=payload, headers=headers)
if response.status_code == 200:
data = response.json()["rows"]
# Преобразуем данные в DataFrame
df = pd.DataFrame(data)
df["ctr"] = df["clicks"] / df["impressions"] # Рассчитываем CTR
# Выгружаем данные в CSV
df.to_csv("gsc_data.csv", index=False)
print("Данные успешно сохранены.")
else:
print("Ошибка при запросе к API:", response.text)