Что вы получите:
Почему это важно?
С ростом ИКС ваш донор‑сайт становится «дорогим» ресурсом в глазах поисковых систем и рекламодателей. Если вы продолжаете сдавать ссылки по старой цене, упускаете прибыль. Автоматическое повышение цены позволяет «запереть» прибыль в момент, когда рынок готов платить больше, и при этом сохраняет конкурентоспособность.
| Показатель | Что измеряется | Как влияет на цену |
|---|---|---|
| Индекс Качества Сайта (ИКС) | Сочетание трафика, внешних ссылок, поведенческих факторов | Чем выше ИКС → выше «ценность» ссылки → выше цена |
| Domain Authority (DA) | Сила домена в SEO‑моделях | Параллельно с ИКС, часто используется как индикатор |
| Trust Flow (TF) | Надёжность ссылочного профиля (Sape) | При росте TF цена тоже повышается |
Аналогия: представьте, что вы продаёте земельный участок. Чем ближе он к центру города (высокий ИКС), тем дороже будет его стоимость. Автоматическое повышение цены – это как автоматический налог на землю, который растёт вместе с её стоимостью.
Важно: все операции должны быть идемпотентными – если скрипт упадёт, повторный запуск не создаст дубликаты.
| Источник | Что берём | Как получать |
|---|---|---|
| Sape Dashboard | Текущий ИКС, TF, количество арендованных ссылок | Через Sape API (/v1/sites/{id}/metrics) |
| Google Search Console | Показатели кликов, CTR, позиции | Через GSC API (searchanalytics.query) |
| Ahrefs / Majestic | DA, TF | Через их REST‑API (ключ доступа) |
| Внутренняя БД | История цен, даты договоров | Прямой запрос к PostgreSQL (SELECT * FROM contracts) |
Пример запроса к Sape API (Python):
import requests, json
API_KEY = "YOUR_SAPE_KEY"
SITE_ID = 123456
url = f"https://api.sape.ru/v1/sites/{SITE_ID}/metrics"
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, headers=headers)
metrics = resp.json()
iks = metrics["iks"] # ИКС
tf = metrics["tf"] # Trust Flow
da = metrics["da"] # Domain Authority
print(f"ИКС={iks}, TF={tf}, DA={da}")
Совет: сохраняйте полученные данные в таблице
site_metricsс полямиdate,iks,tf,da. Это позволит построить тренды и избежать «пиков» из единственного измерения.
Самый простой и надёжный подход – процентный коэффициент от изменения ИКС.
new_price = base_price * (1 + k * Δiks)
base_price – текущая цена аренды ссылки. Δiks – относительное изменение ИКС (в долях, например 0.15 = +15%). k – коэффициент чувствительности (рекомендовано 0.5‑1.0). Пример:
base_price = 1000₽ Если хотите более тонкую настройку, используйте мультифакторную формулу:
new_price = base_price * (1 + k1*Δiks + k2*Δtf + k3*Δda)
| Коэффициент | Диапазон | Что регулирует |
|---|---|---|
k1 |
0.4‑0.8 | Чувствительность к ИКС |
k2 |
0.1‑0.3 | Влияние Trust Flow |
k3 |
0.05‑0.15 | Влияние Domain Authority |
Важно: коэффициенты подбираются эмпирически на основе исторических данных о доходе.
| Время | Действие |
|---|---|
| 00:00 | Сбор метрик за предыдущий день |
| 00:30 | Расчёт новых цен |
| 01:00 | Обновление цен в Sape через API |
| 01:15 | Запись логов и отправка email‑отчёта |
Cron‑запись:
0 0 * * * /usr/bin/python3 /home/you/scripts/fetch_metrics.py >> /var/log/metrics.log 2>&1
30 0 * * * /usr/bin/python3 /home/you/scripts/calc_prices.py >> /var/log/prices.log 2>&1
0 1 * * * /usr/bin/python3 /home/you/scripts/update_sape.py >> /var/log/update.log 2>&1
15 1 * * * /usr/bin/python3 /home/you/scripts/send_report.py >> /var/log/report.log 2>&1
calc_prices.py)import psycopg2, json, math
from datetime import datetime, timedelta
# Параметры
K1, K2, K3 = 0.7, 0.2, 0.1 # коэффициенты
BASE = 1000 # базовая цена (может храниться в БД)
conn = psycopg2.connect(dsn="dbname=seo user=seo")
cur = conn.cursor()
# Получаем последние две записи метрик
cur.execute("""
SELECT iks, tf, da FROM site_metrics
ORDER BY date DESC LIMIT 2
""")
rows = cur.fetchall()
if len(rows) < 2:
raise RuntimeError("Недостаточно данных")
iks_now, tf_now, da_now = rows[0]
iks_prev, tf_prev, da_prev = rows[1]
delta_iks = (iks_now - iks_prev) / iks_prev
delta_tf = (tf_now - tf_prev) / tf_prev
delta_da = (da_now - da_prev) / da_prev
new_price = BASE * (1 + K1*delta_iks + K2*delta_tf + K3*delta_da)
new_price = round(new_price, -2) # округление до сотен
# Сохраняем в таблицу price_history
cur.execute("""
INSERT INTO price_history (date, price, iks, tf, da)
VALUES (%s, %s, %s, %s, %s)
""", (datetime.now().date(), new_price, iks_now, tf_now, da_now))
conn.commit()
cur.close()
conn.close()
print(json.dumps({
"date": str(datetime.now().date()),
"price": new_price,
"delta_iks": round(delta_iks, 3),
"delta_tf": round(delta_tf, 3),
"delta_da": round(delta_da, 3)
}))
update_sape.py)import requests, json, psycopg2
API_KEY = "YOUR_SAPE_KEY"
LINK_ID = 987654
# Получаем последнюю рассчитанную цену
conn = psycopg2.connect(dsn="dbname=seo user=seo")
cur = conn.cursor()
cur.execute("SELECT price FROM price_history ORDER BY date DESC LIMIT 1")
price = cur.fetchone()[0]
cur.close()
conn.close()
url = f"https://api.sape.ru/v1/links/{LINK_ID}"
payload = {"price": price}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
resp = requests.patch(url, headers=headers, data=json.dumps(payload))
if resp.status_code == 200:
print(f"✅ Цена обновлена до {price}₽")
else:
print(f"❌ Ошибка: {resp.text}")
| Событие | Условие | Действие |
|---|---|---|
| Резкое падение ИКС | Δiks < -0.15 за 24 ч | Отправить SMS администратору |
| Переход порога цены | price > 5000₽ | Сгенерировать email‑отчёт с рекомендациями |
| Ошибка API | resp.status_code != 200 | Записать в log‑файл и отправить Telegram‑сообщение |
Пример кода оповещения в Telegram (Python):
import telegram, os
TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
CHAT_ID = -123456789 # ваш чат
bot = telegram.Bot(token=TOKEN)
bot.send_message(chat_id=CHAT_ID,
text=f"⚠️ Цена ссылки превысила 5 000₽! Текущая цена: {price}₽")
| Ошибка | Почему происходит | Как исправить |
|---|---|---|
| Переподнятие цены | Коэффициент k слишком высокий, ИКС меняется небольшими колебаниями |
Уменьшить k, добавить скользящее среднее за 7 дней |
| Задержка обновления | Скрипт вызывается реже, чем меняются метрики | Установить cron на каждый час, а не раз в день |
| Неправильные единицы | Сравниваете ИКС в разных диапазонах (0‑100 vs 0‑10) | Приводите все индексы к одному масштабу перед расчётом |
| Потеря данных | Ошибка соединения с API приводит к пропуску дня | Добавьте retry‑логик (3 попытки с экспоненциальным бэкоффом) |
k в зависимости от сезона (например, повышаем в преддверии крупных маркетинговых кампаний). Соберите метрики
Рассчитайте цену вручную
new_price = base_price * (1 + 0.7*Δiks), вычислите новую цену, если ИКС вырос с 45 до 52. Напишите скрипт
calc_price(base, iks_prev, iks_now, k=0.7), которая возвращает округлённую цену. Протестируйте её на трёх разных наборах данных. Смоделируйте падение ИКС
Анализируйте результаты
Готово! Теперь вы знаете, как построить полностью автоматическую систему повышения цены аренды ссылки, реагируя на рост ИКС вашего донора. Применяйте полученные знания, экспериментируйте с коэффициентами и наблюдайте, как ваш доход будет расти синхронно с качеством ссылок. 🚀