当前位置: 首页 > news >正文

程序化广告行业(52/89):程序化创意深度剖析

程序化广告行业(52/89):程序化创意深度剖析

大家好!我一直对程序化广告领域充满热情,在学习过程中发现其中有很多有趣又实用的知识。今天写这篇博客,就是希望能和大家一起学习进步,深入探索程序化广告的世界。在上一篇博客中,我们了解了程序化广告的Cookie映射、移动设备ID映射等基础知识,今天咱们接着深入探讨程序化创意相关的内容,包括DCO的后续流程、创意制作流程以及商品信息库对接方式。

一、DCO流程详解(承接上一篇)

在上一篇我们讲到DCO流程的前4步,今天接着从第5步开始。

(一)浏览器请求与创意渲染

流程5:当浏览器收到DSP发送的Ad Tag后,会向PCP创意渲染服务发起创意请求,这个请求里带着当前用户的唯一标识User ID。就好比用户拿着自己的“身份牌”去创意工厂,告诉工厂“我来了,快给我展示适合我的广告”。
流程6:创意渲染服务收到请求后,带着Ad Tag对应的商品规则,向推荐引擎要这个User ID对应的创意内容。这时候创意渲染服务就像个“传声筒”,把用户的需求和商品规则传达给推荐引擎。
流程7:推荐引擎拿到User ID后,去用户数据中心查询这个用户的信息,比如兴趣爱好、行为数据等。这一步就像是在一个大的“用户信息仓库”里找特定用户的资料,了解这个用户的喜好和习惯。
流程8:用户数据中心把查询到的用户信息返回给推荐引擎,为推荐引擎提供“决策依据”。
流程9:推荐引擎根据用户信息和商品规则,决定要推荐展示的商品,然后从商品库中查询调用商品信息,再把这些信息返回到创意渲染服务。这一步就像是推荐引擎在根据用户的“口味”挑选合适的“商品大餐”。
流程10:创意渲染服务根据推荐引擎返回的商品信息和Ad Tag对应的创意样式等,生成个性化创意,并展示到浏览器中。此时,用户就能看到专门为自己定制的广告啦,这就像是创意渲染服务把“商品大餐”精心摆盘后呈现在用户面前。

二、创意制作流程

为了实现程序化自动批量生成创意,我们得在创意管理平台好好制作和管理创意。这就好比盖房子,得先有个好的设计图,这个设计图就是创意模板。

(一)创意模板元素

创意模板里的内容可以分成几个部分,这里列举了5个通用元素,但实际情况中,这5个元素不需要同时存在,也不局限于这5个。

  1. Key Vision(主视觉):这是创意的主要展示内容,通常就是商品图片,就像商店橱窗里最显眼的商品展示,吸引用户的第一目光。
  2. Logo(品牌标识):用于显示广告主的Logo,让用户知道这个广告是谁家的,就像商店门口的招牌。
  3. Information(文案说明):是主视觉的补充信息,像商品名称、价格、折扣信息等,帮助用户更详细地了解商品,就像商品旁边的小标签。
  4. Call to Action(行为召唤):这是和用户互动的部分,一般是转化通道,比如下载、注册、购买按钮等,引导用户采取下一步行动,就像在你耳边轻轻说“快点击这里,有惊喜哦”。
  5. Background(背景图):背景图主要用来美化衬托创意,让整个广告看起来更舒服,就像给商品搭配了一个漂亮的背景布。

(二)动态创意制作步骤

  1. 上传元素内容,形成物料库:把Logo、商品信息(包括图片、名称、价格、折扣等)、按钮等内容上传,商品信息一般是对接广告主商品库批量导入。这一步就像是把建房子需要的各种材料都准备好,放在仓库里备用。
  2. 制作模板,定义好尺寸比例、各元素的位置及内容来源:确定模板的尺寸,规定每个元素放在哪里,以及从哪里获取内容。比如主视觉引用商品库的商品图片,文案说明引用商品库对应商品的名称和价格。这就好比设计房子的图纸,规划好每个房间的大小和用途。
  3. 设置创意规则:根据不同的条件设置展示规则,比如对女性用户展示模板A,展示该用户加入到购物车的信息,每个动态创意自动轮播展示5个商品,商品展现顺序按热销度降序排列等。这就像是给房子的使用制定规则,规定不同的人在不同情况下怎么使用房子里的空间。
  4. 将模板和规则应用到广告投放,程序化自动生成创意展现给用户:把设计好的模板和规则运用到实际广告投放中,系统就会自动生成创意展示给用户。这就好比按照图纸和规则把房子建好,然后展示给大家看。

以淘宝创意为例,我们常见的淘宝广告有淘宝Logo标识(品牌标识)、整体橙色背景框架(背景图)、登山鞋商品图(主视觉)、商品名称、价格、原价、销量等信息(文案说明)、还有一些引导购买的按钮(行为召唤),如果需要展示多个商品并自动循环轮播,还会加上页码方便用户切换查看。

三、商品信息库对接

商品信息库对接是程序化创意中很重要的一环,常用的对接方式有FTP、FEED、JS代码形式这三种。

(一)FTP方式

数据提供方通过离线传输文件的方式把商品信息发送给PCP平台。这就好比把商品信息写在一个大文件里,用一个“包裹”(文件传输)寄给PCP平台,平台收到后再打开“包裹”使用里面的信息。虽然这种方式比较传统,但在一些数据量不大、对实时性要求不那么高的场景下还是很实用的。

(二)FEED方式

通过URL拉取商品信息,又分为xml方式和json方式。

  1. xml方式示例:请求URL类似于http://xxx.com/xxx.xml?date=KaTeX parse error: Expected 'EOF', got '&' at position 7: {date}&̲since={lastupdatetime} ,这里的{date}表示获取该日期的商品信息,{lastupdatetime}表示上次更新时间的时间戳。返回的数据格式像下面这样:
<?xml version="1.0" encoding="utf-8"?>
<products>
    <product>
        <pid>${商品id}</product_pid> 
        <name><![CDATA[${商品名称}]]></name> 
        <price><![CDATA[${商品价格}]]></price> 
        <image_url>${商品图片url}</image_url> 
        <url><![CDATA[${商品落地页URL}]]></product_url> 
        <c1n>${商品分类}</c1n> 
        <discount>${商品折扣}</discount> 
        <views>${浏览量}</views> 
    </product>
</products>

在Python中,我们可以使用xml.etree.ElementTree库来解析这种XML格式的数据,示例代码如下:

import xml.etree.ElementTree as ET
import requests

url = 'http://xxx.com/xxx.xml?date=20240101&since=1672531200'
response = requests.get(url)
if response.status_code == 200:
    root = ET.fromstring(response.text)
    for product in root.findall('product'):
        pid = product.find('pid').text
        name = product.find('name').text
        print(f"商品ID: {pid}, 商品名称: {name}")
else:
    print('获取商品信息失败')
  1. json方式示例:请求URL类似http://xxx.com/path/xxx.json?date=KaTeX parse error: Expected 'EOF', got '&' at position 7: {date}&̲since={lastupdatetime} 。返回的数据格式是JSON数组,示例如下:
{
    "products": [
        {"pid":"商品id1", "name":"商品名称1"},
        {"pid":"商品id2", "name":"商品名称2"}
    ]
}

在Python中,使用requests库获取数据后,用json库解析就很方便,示例代码如下:

import requests

url = 'http://xxx.com/path/xxx.json?date=20240101&since=1672531200'
response = requests.get(url)
if response.status_code == 200:
    data = response.json()
    for product in data['products']:
        pid = product['pid']
        name = product['name']
        print(f"商品ID: {pid}, 商品名称: {name}")
else:
    print('获取商品信息失败')

写作不易,希望这篇文章能帮助大家更好地理解程序化创意相关的知识。如果您觉得这篇博客对您有帮助,请关注我的博客,点赞并在评论区分享您的想法和疑问。让我们一起在程序化广告的学习道路上不断前行!

http://www.dtcms.com/a/106521.html

相关文章:

  • Python自定义消费Kafka至HDFS
  • 记录学习的第十九天
  • JAVA学习小计之IO流02--字符流篇
  • TypeScript装饰器与元编程
  • 美军用通信技术调研
  • C++ 新特性 | C++ 11 | std::move
  • maven如何使用
  • 《UNIX网络编程卷1:套接字联网API》第4章 基本TCP套接字编程
  • 一周掌握Flutter开发--9. 与原生交互(下)
  • 04-08核心配置和映射配置文件解析
  • 14.主从Reactor+线程池模式,Connection对象引用计数的深入分析
  • 【UE5】发现意外的文件尾解决方法
  • 国产系统服务器识别不到stata盘
  • C语言--统计输入字符串中的单词个数
  • 前端新增数据,但数据库里没有新增的数据
  • k8s 污点常用操作
  • Qt进阶开发:QFileSystemModel的使用
  • Rust 开发提效神器:lombok-macros 宏库
  • 吴恩达深度学习复盘(5)神经网络的前向传播TesorFlow与NumPy实现比对
  • 【高并发内存池】第八弹---脱离new的定长内存池与多线程malloc测试
  • 【redis】redis实现红锁
  • 关于文化和软件技术的传承
  • resttemplate设置params
  • C++与Python初始化最小和最大整数
  • 多传感器融合SLAM中如何检验编写的Factor是否有效
  • 黑马点评。1 导入黑马点评项目
  • C++ 中的 **CRTP
  • 鸿蒙定位开发服务
  • 论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)
  • HTML 媒体(Media)学习笔记