[深度]OpenClaw广告质量评分体系:从CTR预测模型到素材审核自动化

阿里云推广

广告质量评分体系深度解析

广告质量评分是影响广告排名的核心因素之一,直接决定你在同等出价下能否赢得展示。本文拆解OpenClaw的质量分构成,教你如何系统性提升广告分。

一、质量分的构成公式

# 最终排名分 = eCPM = bid * pCTR * quality_score
#
# quality_score 构成:
# quality_score = (
#     0.35 * creative_score     # 素材质量分
#     0.30 * landing_score      # 落地页体验分
#     0.25 * historical_ctr     # 历史点击率(归一化)
#     0.10 * relevance_score    # 广告与内容相关性
# )
#
# 示例对比:
# 广告A: bid=5元, pCTR=2%, quality=0.9  -> eCPM=5*0.02*0.9*1000=90
# 广告B: bid=8元, pCTR=2%, quality=0.5  -> eCPM=8*0.02*0.5*1000=80
# A出价比B低37%,但质量分高,反而赢得竞价!

二、CTR预测模型详解

# 工业界CTR预测演进路径:
# LR(逻辑回归) -> GBDT+LR -> FM/FFM -> DNN -> Wide&Deep -> DeepFM

# 简化版CTR预测特征工程
import pandas as pd
import lightgbm as lgb
from sklearn.preprocessing import LabelEncoder

def build_ctr_features(df):
    features = pd.DataFrame()

    # 用户特征
    features['user_age_bucket'] = pd.cut(df['user_age'], [0,18,25,35,45,100], labels=[0,1,2,3,4])
    features['user_gender'] = df['gender'].map({'M':0, 'F':1})
    features['user_7d_click_rate'] = df['user_7d_clicks'] / df['user_7d_impressions'].clip(1)

    # 广告特征
    features['ad_category'] = LabelEncoder().fit_transform(df['ad_category'])
    features['ad_historical_ctr'] = df['ad_clicks'] / df['ad_impressions'].clip(1)
    features['ad_age_days'] = (pd.Timestamp.now() - df['ad_create_time']).dt.days

    # 上下文特征
    features['hour_of_day'] = df['request_time'].dt.hour
    features['is_weekend'] = df['request_time'].dt.weekday >= 5
    features['ad_position_index'] = df['position']  # 1=首位, 2=次位

    # 交叉特征 (LightGBM自动处理)
    return features

# 训练
X = build_ctr_features(train_df)
y = train_df['clicked']
model = lgb.LGBMClassifier(n_estimators=500, learning_rate=0.05)
model.fit(X, y, eval_metric='auc')

三、素材质量自动审核

# 素材审核规则引擎
import re

class CreativeAuditor:
    """广告素材自动审核"""

    FORBIDDEN_WORDS = ['最低价', '第一', '绝对', '保证', '包赚']
    MAX_TITLE_LEN = 30
    MAX_DESC_LEN = 60

    def audit(self, creative):
        issues = []

        # 文案规范检查
        if len(creative['title']) > self.MAX_TITLE_LEN:
            issues.append(f'标题超长: {len(creative["title"])}字 (最多{self.MAX_TITLE_LEN}字)')

        for word in self.FORBIDDEN_WORDS:
            if word in creative['title'] or word in creative.get('description', ''):
                issues.append(f'含违禁词: "{word}"')

        # 图片尺寸检查
        img = creative.get('main_image', {})
        if img.get('width', 0) < 600:
            issues.append(f'主图宽度不足: {img["width"]}px (最小600px)')

        # 落地页可访问性检查
        import requests
        try:
            r = requests.head(creative['landing_url'], timeout=3)
            if r.status_code >= 400:
                issues.append(f'落地页HTTP状态异常: {r.status_code}')
        except:
            issues.append('落地页无法访问')

        status = 'rejected' if issues else 'approved'
        return {'status': status, 'issues': issues, 'score': 100 - len(issues) * 10}

四、提升质量分的实用建议

质量维度 低分原因 提升方法 预期效果
素材质量 图片模糊/文案违规 使用高清图,避免绝对化用语 quality+10~20%
落地页体验 加载慢/内容不匹配 优化LCP<2.5s,内容与广告匹配 转化率+15%
历史CTR 新广告无数据 小预算冷启动,积累数据 3-7天后数据稳定
相关性 广告与媒体内容不匹配 精细化定向,选合适媒体 CTR+5~10%

总结:质量分不是孤立指标,它反映了用户对广告的真实感受。投入时间优化素材和落地页,比单纯提高出价性价比更高——同样的展示机会,高质量广告能获得更多点击和转化。

发表评论