AI-персонализация email-рассылок медиа
Массовые рассылки медиа с одинаковым контентом для всей базы дают open rate 15-20%. Персонализированные дайджесты с подборкой под интересы конкретного читателя — 35-50%. Технически это pipeline: профиль читателя → выбор статей → адаптация темы письма.
Персонализированный дайджест
from anthropic import Anthropic
import pandas as pd
from collections import defaultdict
def generate_personalized_digest(user_profile: dict,
available_articles: list[dict],
n_articles: int = 5) -> dict:
"""
Подбор и компоновка персонального дайджеста.
user_profile: {'topics': {'tech': 0.4, 'politics': 0.3}, 'read_ids': set()}
"""
llm = Anthropic()
# Фильтруем уже прочитанное
read_ids = user_profile.get('read_ids', set())
unread = [a for a in available_articles if a['id'] not in read_ids]
# Скоринг статей по интересам
topics = user_profile.get('topics', {})
scored = []
for article in unread:
topic_score = topics.get(article.get('topic', 'general'), 0.05)
freshness = max(0, 1.0 - article.get('hours_old', 24) / 48)
quality = article.get('editorial_score', 0.7)
scored.append({
**article,
'score': topic_score * 0.5 + freshness * 0.3 + quality * 0.2
})
top_articles = sorted(scored, key=lambda x: -x['score'])[:n_articles]
# Генерация персонализированной темы письма
article_titles = [a['title'] for a in top_articles]
response = llm.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=80,
messages=[{
"role": "user",
"content": f"""Write a compelling email subject line for a news digest in Russian.
Articles: {article_titles[:3]}
Reader's main interests: {list(topics.keys())[:3]}
Max 55 chars. No clickbait. Be specific."""
}]
)
return {
'articles': top_articles,
'subject': response.content[0].text.strip(),
'personalization_applied': True
}
Персонализированные дайджесты требуют минимум 10-15 прочитанных статей для качественного профиля. До этого порога — категорийная персонализация (выбор раздела) без статейного уровня. Технический стек: Redis для хранения профилей, Apache Kafka для event streaming, batch-генерация за 1-2 часа до отправки.







