讲师中心 微信公众号
AI工具推荐 视频效率加速

腾讯营销投放-创意管理

Polar Sponsor
爱发电 赞助
.NET 9.0

腾讯营销(原腾讯广告)展示广告管理 - 创意管理。用于管理动态创意(dynamic_creatives)和创意形式(creative_template),以及素材标签(material_labels)。当用户需要创建或管理广告创意(含组件字段填写/审核详情)、或管理素材标签(素材标签查询、新建、更新和素材绑定)时使用此技能。排除搜索创意(search_dynamic_creatives)。

腾讯广告 - 创意管理

功能概述

腾讯广告 - 创意管理是一项面向实际任务的技能,主要用于前置依赖 :运行脚本前需安装 CLI — npm install tencentads-cli@1.0.0 (需要 Node.js ≥ 20);管理腾讯广告展示广告的动态创意(组件化创意);

核心要点

  • 重要提示 : 本技能基于腾讯广告营销 API(api.e.qq.com)API v3.0 展示广告 接口;
  • 以本文档和官方文档为准 : 字段名称、参数结构可能与旧版或其他广。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

腾讯广告 - 创意管理

前置依赖:运行脚本前需安装 CLI — npm install tencentads-cli@1.0.0(需要 Node.js ≥ 20)

管理腾讯广告展示广告的动态创意(组件化创意)。

重要提示: 本技能基于腾讯广告营销 API(api.e.qq.com)API v3.0 展示广告接口。

  • 以本文档和官方文档为准: 字段名称、参数结构可能与旧版或其他广告平台不同,请勿依赖旧经验。
  • 串行执行约束: 同一广告组下,创意的新建、更新和删除操作必须串行执行,不可并发。
  • 禁止修改用户意图: 用户明确指定的参数值必须原样传递,严禁静默修改或忽略。若用户要求的参数值脚本不支持,必须明确报错告知用户,不得擅自使用默认值替代。

⚠️ 跨平台 JSON 参数传递规则(经实测验证)

脚本调用格式为 node scripts/<脚本名>.mjs '',但 JSON 参数的引号包裹方式因操作系统/终端而异,传递不当会导致 JSON.parse 报错(如 Expected property name or '}' in JSON at position 1)。

终端环境 正确写法 说明
Linux / macOS (Bash/Zsh) node scripts/xxx.mjs '{"key":"value"}' ✅ 单引号包裹,内部双引号原样保留
Windows Git Bash node scripts/xxx.mjs '{"key":"value"}' ✅ 同 Bash
Windows CMD node scripts/xxx.mjs "{"key":"value"}" ✅ 双引号包裹 + 反斜杠转义
Windows CMD (备选) node scripts/xxx.mjs "{""key"":""value""}" ✅ 双引号包裹 + 双双引号转义
Windows PowerShell 5.x node --% scripts/xxx.mjs "{"key":"value"}" ✅ 必须加 --% 停止解析符
Windows PowerShell 5.x (备选) node scripts/xxx.mjs "{`"key`":`"value`"}" ✅ 反斜杠 + 反引号组合转义

⛔ PowerShell 5.x 是重灾区:单引号 '...'、反引号 `" 、反斜杠 " 三种常见写法全部失败(双引号会被吞掉)。必须使用 --% 停止解析符或 `" 组合转义。 ⛔ Windows CMD 不支持单引号包裹字符串,单引号会被当作普通字符传入脚本,导致 JSON 解析失败。

脚本列表

脚本 功能 必填参数 可选参数
scripts/create-creative.mjs 创建动态创意(自动校验必填字段及创意数量上限,须先调用 build-creative-params.mjs 完成参数预处理) account_id, adgroup_id, creative_components -
scripts/update-creative.mjs 更新动态创意 account_id, dynamic_creative_id creative_components
scripts/delete-creative.mjs 删除动态创意 account_id, dynamic_creative_id -
scripts/get-component-list.mjs 按组件子类型查询账户下可用组件列表 account_id, component_sub_types -
scripts/get-components.mjs 查询组件库(按类型拉取可用组件列表) account_id, component_type -
scripts/get-creative-templates.mjs 查询可用创意形式,输出组件摘要 account_id, adgroup_id creative_template_id, dynamic_creative_type, delivery_mode, live_promoted_type
scripts/get-creative-template-list.mjs 查询可用创意形式列表(含 live_promoted_type_list) account_id adgroup_id
scripts/get-component-depends.mjs 查询组件字段联动约束,输出依赖摘要(含合法枚举值) account_id, adgroup_id, component_type creative_template_id, dynamic_creative_type, delivery_mode, live_promoted_type
scripts/query-adgroup-context.mjs 查询广告组上下文(marketing_asset_outer_spec 等) account_id, adgroup_id -
scripts/get-creative.mjs 查询动态创意详情(含 creative_components 完整结构) account_id, dynamic_creative_id fields
scripts/build-creative-params.mjs 构建并校验创意请求参数(不发起创建,输出 params+warnings+errors) account_id, adgroup_id, creative_components adgroup_context, creative_template_id, live_promoted_type, impression_tracking_url, click_tracking_url
scripts/get-playable-pages.mjs 查询小游戏试玩页列表,获取 playable_page_path account_id, app_id -
scripts/get-project-assets.mjs 查询全店托管商品列表(获取 marketing_asset_id) account_id, project_id(广告组ID) -
scripts/upload-image.mjs 上传图片到素材库(jpg/png/gif,≤10MB),返回 image_id account_id, file_path description, image_usage
scripts/get-images.mjs 查询素材库图片列表(按 ID 确认素材存在/查详情) account_id filtering, page, page_size
scripts/upload-video-svp.mjs 上传视频到素材库(SVP分片上传,支持大文件、断点续传) account_id, file_path description, concurrent, chunk_size, timeout
scripts/get-videos.mjs 查询素材库视频列表(按 ID 确认/查转码状态 system_status) account_id filtering, page, page_size
scripts/get-integrated-components.mjs 组件模式查询素材(含报表排序、起量潜力/首发/低质筛选) account_id, component_sub_types sort_field, sort_type, date_range, fuzzy_name, potential_status, first_publication_status, quality_status, generation_type, page, page_size, organization_id
scripts/get-integrated-media.mjs 素材库模式查询单图/视频(含可用性过滤、报表排序、多维筛选) account_id, type sort, sort_type, date_range, create_range, ratios, ratio_valids, fuzzy_name, label_id, similarity_status, quality_status, first_publication_status, generation_type, duration, watermark, page, page_size, organization_id
scripts/get-audios.mjs 查询妙思版权音频列表 account_id fields, page, page_size
scripts/get-dc-review-result.mjs 查询动态创意审核详情(含组件/元素审核结果、驳回原因、组件组合审核信息) account_id, dynamic_creative_id need_return_has_violation_reason_interpretation
scripts/dynamic-product-templates/get-dynamic-ad-image-templates.mjs 查询动态商品图片模版列表(MPA/DPA),返回可选模版 account_id, product_catalog_id, product_mode, dynamic_ad_template_width, dynamic_ad_template_height dynamic_ad_template_ownership_type, template_id_list, template_name
scripts/dynamic-product-templates/generate-dynamic-ad-image.mjs 从商品图片模版生成图片,返回 image_id account_id, product_catalog_id, product_mode, product_source, dynamic_ad_template_id, dynamic_ad_template_size remove_template_id
scripts/dynamic-product-templates/get-dynamic-ad-video-templates.mjs 查询动态商品视频模版列表(MPA/DPA),返回可选模版 account_id, product_catalog_id, adcreative_template_id, product_mode support_channel, template_id_list, template_name
scripts/dynamic-product-templates/generate-dynamic-ad-video.mjs 从商品视频模版生成视频,返回 video_id account_id, product_catalog_id, product_mode, product_source, dynamic_ad_template_id -
scripts/get-material-labels.mjs 查询账号下素材标签列表(图片/视频标签) account_id 或 organization_id label_id, label_name, business_scenario, page, page_size, need_count 等
scripts/add-material-labels.mjs 批量新建素材标签(一/二级类目、业务场景) account_id 或 organization_id, labels -
scripts/update-material-labels.mjs 更新单个素材标签的名称或一/二级类目 account_id 或 organization_id, label_id, label_name first_label_level_name, second_label_level_name
scripts/bind-material-labels.mjs 把图片/视频素材与标签建立绑定关系(覆盖/新增/解除) account_id 或 organization_id, label_id_list, image_id_list 或 media_id_list 至少一个 binding_type, business_scenario

工作流零:素材准备(可选)

若用户已有 image_id / video_id / component_id,直接跳到工作流一。

当用户需要上传新素材或查找现有素材时,按以下方式操作。

上传新素材

# 上传图片
node scripts/upload-image.mjs '{"account_id":"123456789","file_path":"/tmp/banner.jpg"}'

# 上传视频
node scripts/upload-video-svp.mjs '{"account_id":"123456789","file_path":"/tmp/ad.mp4"}'

返回 image_id / video_id。视频上传后需转码,可用 get-videos.mjs 轮询 system_status 确认转码完成(MEDIA_STATUS_VALID)后再创建创意。

文件格式限制:图片 jpg/png/gif(≤10MB,GIF ≤5秒);视频 mp4/mov/avi(≤100MB,微信广告需 Progressive 扫描)。

详细接口规范:素材接口文档

查询已有素材

提供两种查询方式,根据用户需求选择:

方式一:素材库模式查询(推荐)

按素材粒度查询单图/视频,支持可用性过滤(比例+宽高+时长)、报表排序、标签/首发/相似度等筛选。

# 查询 16:9 可用视频,按消耗排序
node scripts/get-integrated-media.mjs '{"account_id":"123456789","type":"VIDEO","sort":"cost","ratios":["16:9"],"ratio_valids":[{"ratio":"16:9","file_size_kb_limit":102400,"min_width":1280,"min_height":720,"min_duration":6,"max_duration":900}]}'

# 按名称模糊搜索图片
node scripts/get-integrated-media.mjs '{"account_id":"123456789","type":"IMAGE","fuzzy_name":"产品主图"}'

详细参数说明:integrated-media-get.md

方式二:组件模式查询(用于选择已有组件)

按组件粒度查询,支持按消耗/曝光/ROI 排序,支持起量潜力/首发/低质等筛选。返回 component_id 可直接用于 creative_components。

# 查询视频组件,按消耗排序
node scripts/get-integrated-components.mjs '{"account_id":"123456789","component_sub_types":["VIDEO_16X9","VIDEO_9X16"],"sort_field":"report.cost","sort_type":"DESCENDING"}'

# 查询高潜图片组件
node scripts/get-integrated-components.mjs '{"account_id":"123456789","component_sub_types":["IMAGE_16X9"],"potential_status":["COMMON_POTENTIAL_STATUS_HIGH"]}'

详细参数说明:integrated-components-get.md

查询妙思版权音频

node scripts/get-audios.mjs '{"account_id":"123456789"}'

工作流零B:商品模版生成素材(可选)

当需要使用商品库素材时,可通过商品模版生成图片或视频。此流程是独立的素材生产流程,与广告组类型无关——只要账户有可用的 product_catalog_id 即可使用,生成的 image_id / video_id 是通用素材资产,可用于任意广告组的创意。

判断标识:get-creative-templates.mjs 输出中若包含 support_mpa_image_template: true,则图片组件支持商品模版;support_mpa_video_template: true,则视频组件支持商品模版。

MPA 广告组约束:若广告组为 MPA 模式(mpa_spec 非空),则该广告组的 image/video 组件只能通过商品模版生成,不支持本地上传素材。此约束仅适用于 MPA 广告组内部,不影响商品模版功能本身的使用范围。

参数来源

参数 来源 说明
product_catalog_id adgroup.product_spec.product_catalog_id(广告组字段)或用户已知的商品库 ID 商品库ID
product_source mpa_spec.product_series_id(优先)或 marketing_asset_outer_spec.marketing_asset_outer_sub_id 商品系列/单品来源ID
product_mode MPA 广告组(mpa_spec 非空)→ MULTIPLE;其他情况 → SINGLE 动态广告模式
dynamic_ad_template_width/height get-creative-templates 输出中 image 组件的尺寸(如 sub_types 中的 width/height) 图片尺寸要求
dynamic_ad_template_size 格式: SIZE_{width}_{height}(如 SIZE_1280_720) 图片生成尺寸枚举

图片模版流程

  1. 从 get-creative-templates.mjs 输出中确认 support_mpa_image_template: true,并获取 image 组件的尺寸要求
  2. 查询可用图片模版:
    node scripts/dynamic-product-templates/get-dynamic-ad-image-templates.mjs '{"account_id":"123","product_catalog_id":456,"product_mode":"MULTIPLE","dynamic_ad_template_width":1280,"dynamic_ad_template_height":720}'
    
  3. 展示模版列表供用户选择(或仅有一个时自动选中)
  4. 用户选择模版后,生成图片:
    node scripts/dynamic-product-templates/generate-dynamic-ad-image.mjs '{"account_id":"123","product_catalog_id":456,"product_mode":"MULTIPLE","product_source":"789","dynamic_ad_template_id":12345,"dynamic_ad_template_size":"SIZE_1280_720"}'
    
  5. 返回的 image_id 用于 creative_components 中 image/image_list 等组件

视频模版流程

  1. 从 get-creative-templates.mjs 输出中确认 support_mpa_video_template: true
  2. 查询可用视频模版(需传入创意形式 template_id):
    node scripts/dynamic-product-templates/get-dynamic-ad-video-templates.mjs '{"account_id":"123","product_catalog_id":456,"adcreative_template_id":720,"product_mode":"MULTIPLE"}'
    
  3. 展示模版列表供用户选择
  4. 用户选择模版后,生成视频:
    node scripts/dynamic-product-templates/generate-dynamic-ad-video.mjs '{"account_id":"123","product_catalog_id":456,"product_mode":"MULTIPLE","product_source":"789","dynamic_ad_template_id":67890}'
    
  5. 返回的 video_id 用于 creative_components 中 video 组件(video_preview_image_id 可作为 cover_id)

注意:

  • 生成的 image_id / video_id 后续流程与普通素材完全一致——传入 creative_components 对应组件的 value 即可
  • 若 product_source 为空(mpa_spec.product_series_id 和 marketing_asset_outer_sub_id 均无值),需传 0

详细接口规范:动态商品模版接口文档

工作流一:创建创意

第一步:确认 adgroup_id 并查询广告组上下文

adgroup_id 必须由用户提供,或在上下文中已知。

每次创建创意前,必须先查询广告组上下文,帮助理解广告组的信息:

node scripts/query-adgroup-context.mjs '{"account_id":"123456789","adgroup_id":987654321}'

第二步:查询创意形式及组件联动约束

始终执行以下命令获取可用创意形式列表(含 live_promoted_type_list):

node scripts/get-creative-template-list.mjs '{"account_id":"123456789","adgroup_id":987654321}'

live_promoted_type 填写规则(live_promoted_type_list 来自上述命令输出):

  • 若 live_promoted_type_list 不为空 → 必须填写 live_promoted_type(顶层参数,与 creative_components 同级):
    • 默认填 LIVE_PROMOTED_TYPE_SHORT_VIDEO(落地页为视频号直播间、视频号主页等均用此值)
    • 仅当用户明确要求"直播实时画面"(推广内容本身是直播流)时 → 填 LIVE_PROMOTED_TYPE_NATIVE_VIDEO
    • ⚠️ 注意:落地页类型是 PAGE_TYPE_WECHAT_CHANNELS_WATCH_LIVE 不代表 NATIVE_VIDEO,仍填 SHORT_VIDEO
  • 若 live_promoted_type_list 为空/null → 不填此字段

若用户指定了 creative_template_id,须确认该 ID 在上述返回列表中,不在则拦截并告知用户。若使用默认(template_id=0,不指定创意形式),则跳过此验证。

始终执行以下命令获取组件列表摘要(若用户未指定 creative_template_id,默认使用 template_id=0,不指定创意形式,required=false 的可选组件默认不加):

⚠️ 可选组件规则:required=false 的组件(如浮层 floating_zone/floating_zone_list、标签 label、社交互动 social_skill、数据外显 show_data 等)未经用户许可禁止自行构建和添加。仅在用户明确要求该组件时才加入。

node scripts/get-creative-templates.mjs '{"account_id":"123456789","adgroup_id":987654321}'

对结果中所有 has_depend=true 的组件,逐一调用以下命令查询联动约束:

node scripts/get-component-depends.mjs '{"account_id":"123456789","adgroup_id":987654321,"component_type":"WECHAT_CHANNELS"}'

若 depends 为空数组,说明该组件无联动约束,可直接填写。若命令返回失败或 Mock not found,忽略该错误,直接跳到第三步继续。

监测链接(impression_tracking_url / click_tracking_url)

若 get-creative-templates.mjs 输出包含 support_impression_tracking_url: true 或 support_click_tracking_url: true,说明该创意形式支持第三方监测链接,用户提供时将其作为顶层参数传入后续脚本。详见 dynamic-creatives-add.md。

小游戏落地页监测链接(mini_game_tracking_parameter)

与上方顶层监测链接不同,mini_game_tracking_parameter 是小游戏落地页(PAGE_TYPE_WECHAT_MINI_GAME)专属字段,位于 wechat_mini_game_spec 内部。用户描述落地页时若提供了"监测链接"(如 ?state=xxx、?gameplay_concept=1),必须将其填入对应 jump_info 的 page_spec.wechat_mini_game_spec.mini_game_tracking_parameter。

  • 适用组件:main_jump_info、action_button、text_link、mini_card_link 等所有包含小游戏落地页的 jump_info
  • 同一广告下所有小游戏落地页的 mini_game_tracking_parameter 应保持一致(使用用户提供的值)

关键:component_depends/get 响应中,target_options[].support_options[].value 是该字段唯一合法的枚举值,必须直接使用,不可凭经验填写其他枚举名。例如 show_data.conversion_data_type 的值只能取 support_options 中列出的(如 CONVERSION_DATA_ADMETRIC),而非 CONVERSION_DATA_TYPE_CONVERSION 等臆测值。

第三步:通过组件库获取 component_id

第二步的摘要输出中,每个组件包含 sub_types 字段(如 ["BRAND"]、["VIDEO_16X9","VIDEO_9X16",...])。如用户未提供 component_id,调用以下命令按组件子类型查询账户下可用组件:

node scripts/get-component-list.mjs '{"account_id":"123456789","component_sub_types":["BRAND"]}'
  • component_sub_types 填对应组件的 sub_types 值,同类型有多个 sub_type 时一次性全部传入(如 ["BRAND","BRAND_WECHAT_CHANNEL"]),不要拆开多次调用
  • list 为空时:说明 integrated_list 无数据,改用 get-components.mjs fallback 查询:
    node scripts/get-components.mjs '{"account_id":"123456789","component_type":"BRAND"}'
    
    若仍为空,才告知用户该类型组件不存在。
  • 查询失败时(返回错误或 Mock not found):立即跳过,不重试,不换参数重试。已成功获取其他组件的 component_id 时,直接用已有数据继续执行创意创建;若所有必填组件均无法获取,才告知用户。
  • 严禁用 0、null、-1 等无效值占位 component_id:查询失败的组件条目整体省略,不填虚假 ID。
  • video 组件查询失败时:绝对不可生成 [{}](空对象数组)——这会让 API 收到无效的空视频条目。查询失败时直接整体省略 video,或告知用户提供视频 ID。
  • image_showcase / video_showcase 是复合展示位,value 内嵌套 image/video + image_list,不能拆成独立组件分别传入。详见 references/creative-components.md

通用选择规则(适用于所有组件类型)

获取到组件列表后,按以下规则决策,严禁随机取第一个:

  1. 用户已明确指定(提供了名称、ID 或描述)→ 从列表中匹配,使用用户指定的
  2. 列表只有一个可用 → 直接使用,无需确认
  3. 列表有多个,但用户意图可唯一确定(如视频号场景下只有一个 wechat_channels 型 brand)→ 直接使用
  4. 列表有多个,无法从上下文确定 → 询问用户,列出名称(component_custom_name)让用户选择,不可自行决定

若用户提供了 component_id 但查询结果中不存在该 ID,应立即告知用户,不可继续使用该 ID 创建。

brand 组件的类型过滤

get-component-list.mjs 返回的 brand 条目含 brand_type 字段,是第3条"意图可唯一确定"判断的依据:

brand_type 含义 适用场景
common 普通品牌形象(brand_name + brand_image_id) 小游戏、APP 等非视频号场景
wechat_channels 视频号品牌形象(含视频号 jump_info) 视频号投放场景
h5_profile 品牌简介(H5 主页) H5 场景
search_brand 搜一搜超级品专 搜索场景
wechat_official 公众号品牌形象 公众号场景
wecom 企业微信 企业微信场景

先按当前投放场景过滤出匹配 brand_type 的组件,再套用上方通用规则。过滤后为空时,告知用户当前场景下无对应类型品牌组件,询问如何处理。

wechat_channels 自动推断

wechat_channels 组件(视频号账号)完全由脚本自动处理,禁止 Agent 在 creative_components 中传入 wechat_channels 键。脚本会按以下路径自动推断:

  1. 广告组上下文(优先):自动调用 adgroups/get 获取 marketing_asset_outer_spec.marketing_asset_outer_id(v2_xxx@finder 格式);也可通过 adgroup_context 参数传入
  2. brand inline value:若 brand 以 inline value 传入且 jump_info.page_type == PAGE_TYPE_WECHAT_CHANNELS_PROFILE,从 wechat_channels_profile_spec.username 提取
  3. brand 携带 wechat_channels_username 临时字段:直接使用
  4. 以上均无时,调用 wechat_channels_accounts/get 获取账号列表,自动选择(多账号时先结合 video_id 过滤,再结合名称匹配消歧)

多账号消歧:当用户在品牌组件中指定了视频号名称(如"视频号profile页(视频号名称: A+肖像摄影门店)"),Agent 应在 brand 的 inline value 中携带 wechat_channels_account_name 临时字段,脚本会用它在多个可用账号中精确匹配。

⚠️ 禁止手动填写以下字段(全部由脚本自动处理):

  • wechat_channels 组件本身:❌ 不要在 creative_components 中包含 wechat_channels 键,脚本自动生成
  • wechat_channels_account_id(export/xxx 格式):脚本自动从 brand profile_spec 或 API 获取并补全
  • finder_object_visibility:脚本根据是否存在 export/ 账号自动决定是否添加
  • live_promoted_type:顶层参数(与 creative_components 同级),❌ 禁止写入 wechat_channels.value

第四步A:构建参数并预校验

组装好 creative_components 后,先调用 build-creative-params.mjs 进行预处理和校验(不发起创建):

node scripts/build-creative-params.mjs '{
  "account_id": "123456789",
  "adgroup_id": 987654321,
  "live_promoted_type": "LIVE_PROMOTED_TYPE_SHORT_VIDEO",
  "creative_components": {
    "video":         [{ "component_id": 1905866436402 }],
    "brand":         [{ "component_id": 1895897993168 }],
    "description":   [{ "value": { "content": "限时优惠,立即了解" } }],
    "action_button": [{ "value": { "button_text": "查看详情", "jump_info": { "page_type": "PAGE_TYPE_OFFICIAL", "page_spec": { "official_spec": { "page_id": 3767098217 } } } } }],
    "main_jump_info":[{ "value": { "page_type": "PAGE_TYPE_OFFICIAL", "page_spec": { "official_spec": { "page_id": 3767098217 } } } }]
  }
}'

处理输出结果:

  • errors 非空 → 参数有问题,逐项修正后重调此脚本,不得直接进入创建步骤
  • warnings 非空 → 向用户说明,确认后继续(如自动补全失败、cover_id 未查到等)
  • errors 为空 → 继续第四步B,将 params 直接传给 create-creative.mjs

字段传递规则:

字段 用户未指定时 用户明确指定时 说明
delivery_mode 脚本默认 DELIVERY_MODE_COMPONENT 必须传入用户指定的值(如DELIVERY_MODE_CUSTOMIZE) 用户说"自定义创意"→传CUSTOMIZE,"组件化创意"或不提→不传
dynamic_creative_type 根据creative_template_id自动推断(0→PROGRAM,>0→COMMON) 必须传入用户指定的值(如DYNAMIC_CREATIVE_TYPE_PROGRAM) 用户说"自动匹配"/"程序化"→传PROGRAM,"指定创意形式"→传COMMON
dynamic_creative_name 脚本自动生成 传入用户提供的名称 未提供时不传,由脚本生成
wechat_channels 脚本自动推断 禁止 Agent 传入,由脚本处理 无论从 brand 还是广告组上下文推断
video.cover_id 自动查询补全 传入用户指定的 cover_id 未提供时脚本自动查询
impression_tracking_url / click_tracking_url 不传 原样透传用户提供的值 校验长度不超过 1024 字符
smart_delivery_spec 脚本自动从广告组获取 传入用户选择的商品 ID 全店托管场景必填
configured_status 不传(由系统默认) 必须传入用户指定的值 用户说"状态:有效"→传AD_STATUS_NORMAL,"状态:暂停"→传AD_STATUS_SUSPEND
auto_derived_program_creative_switch 不传 传入用户指定的开关值 true 开启自动衍生
program_creative_info 【不支持】 【当前不支持】传入会报错 需根据素材动态生成,暂不支持用户传入
site_set_validate_model 不传 传入用户指定的校验模式 如 SITE_SET_VALIDATE_MODEL_STRICT
page_track_url 不传 原样透传用户提供的值 校验长度不超过 1024 字符

关键原则:用户明确指定了参数值(如"投放模式:自定义创意"、"动态创意类型:自动匹配"),Agent 必须将该值传入 build-creative-params.mjs,不要依赖脚本默认值。

第四步B:发起创建

创意数量上限:每个广告组下最多创建 100 个创意(仅自定义创意允许 1000)。create-creative.mjs 在发起创建前会自动查询已有创意数量,超限时拦截并返回错误,无需 Agent 额外处理。若用户遇到上限提示,应引导其先删除部分已有创意后重试。

将第四步A输出的 params 直接传入 create-creative.mjs:

node scripts/create-creative.mjs '<第四步A输出的 params JSON>'

⚠️ 文案含引号时:改用 heredoc 方式(引号无需转义):

node scripts/create-creative.mjs <<'EOF'
{
  "account_id": "123456789",
  "adgroup_id": 987654321,
  "creative_components": {
    "description": [{ "value": { "content": "别再夸"聪明",要夸这一点" } }]
  }
}
EOF

组件 value 字段填写原则:

  • 内联 value 时,严格按用户为该组件明确提供的信息填写,不得从其他组件的参数推断/复制字段
  • 只传用户明确指定的字段,多余字段即使看似合理也应省略
  • 组件可用字段以 get-creative-templates 输出的 fields 为准,未在 fields 中列出的字段不得填写
  • 中文名到字段名映射:用户用中文描述组件(如"多卡轮播"、"卖点图")时,在 creative-components.md 的「常用组件类型」表格 中根据「中文名」查找对应的「组件类型」(即字段名)

jump_info 嵌套结构说明:

所有包含跳转链接的组件(action_button, brand, mini_card_link 等)的 jump_info 字段采用 page_type + page_spec. 嵌套结构,不能平铺。

  • ✅ 正确:{ "page_type": "PAGE_TYPE_OFFICIAL", "page_spec": { "official_spec": { "page_id": 123 } } }

page_type → page_spec 完整映射(含每种 page_type 的 page_spec 结构示例)见 references/enums.md。

creative_components 格式规则及各组件详解见 references/creative-components.md。

dynamic_creative_name 命名规则:

  • 用户明确提供了创意名称 → 传入该名称
  • 用户未提供 → 无需传入,脚本自动生成含北京时间时间戳的默认名

返回(成功): { "success": true, "dynamic_creative_id": 8362490722 }

接口详情见: references/dynamic-creatives-add.md

工作流二:更新创意

第一步:获取创意当前完整信息

dynamic_creative_id 必须由用户提供,或在上下文中已知。

无论用户描述了哪些组件,都必须先调用以下命令查询创意当前状态:

node scripts/get-creative.mjs '{"account_id":"123456789","dynamic_creative_id":111222333}'

返回的 creative.creative_components 即为当前完整结构,更新时须以此为基础修改(全量覆盖)。用户只描述了要改哪些组件,其余组件必须从此处获取后原样保留。

第二步:更新

注意:creative_components 为全量覆盖,需基于第一步获取的完整结构修改,不可只传要变更的部分。

如何从 GET 结果构造更新参数:

GET 接口返回的每个组件格式为 { "component_id": xxx, "value": {...}, "is_deleted": false }。

传给 update 接口时,规则如下:

  1. 未更改的组件:保留 component_id 和 is_deleted 字段,去掉 value,原样传入
  2. 需要用组件库中已有组件替换的:传 { "component_id": 新ID }(无 is_deleted)
  3. 需要用全新参数(inline value)更新的组件:用 { "value": {...} } 格式传入
  4. jump_info 字段:GET 返回中可能包含 jump_info 顶层组件,不要将其传入 update,跳转信息已包含在 main_jump_info 中
node scripts/update-creative.mjs '{
  "account_id": "123456789",
  "dynamic_creative_id": 111222333,
  "creative_components": {
    "video":         [{ "component_id": 1905866436402 }],
    "brand":         [{ "component_id": 1895897993168 }],
    "description":   [{ "component_id": 1895897993169 }],
    "action_button": [{ "value": { "button_text": "立即咨询", "jump_info": { "page_type": "PAGE_TYPE_WECHAT_CONSULT", "page_spec": { "wechat_consult_spec": { "page_url": "https://work.weixin.qq.com/xxx" } } } } }],
    "main_jump_info": [{ "component_id": 1906127499786 }]
  }
}'

返回(成功): { "success": true, "dynamic_creative_id": 111222333 }

接口详情见: references/dynamic-creatives-update.md

其他操作(删除)

删除创意

串行执行:同一广告组下创意的新建、更新、删除不可并发。

node scripts/delete-creative.mjs '{
  "account_id": "123456789",
  "dynamic_creative_id": 111222333
}'

接口详情见: references/dynamic-creatives-delete.md

工作流三:素材标签管理

素材标签(material_labels)用于把一组图片/视频素材聚合成"标签包",便于素材组织与检索。本 skill 提供 查询 / 新建 / 更新 / 绑定 4 个标签接口。

用户意图 推荐脚本
查询账号/业务单元下的素材标签列表(含每个标签的素材数量) scripts/get-material-labels.mjs
批量新建素材标签(可指定一/二级类目与业务场景) scripts/add-material-labels.mjs
修改单个标签的名称或一/二级类目 scripts/update-material-labels.mjs
把图片/视频素材绑定到标签上(覆盖 / 新增 / 解除三种 binding_type) scripts/bind-material-labels.mjs

调用示例、参数 schema、字段约束、枚举值、错误码处理详见 references/material-labels.md。

接口文档索引

接口 文档 说明
dynamic_creatives/add dynamic-creatives-add.md 完整请求参数、枚举值
dynamic_creatives/get dynamic-creatives-get.md 查询创意详情(get-creative.mjs 使用)
creative_components 组件详解 creative-components.md 格式规则及各组件字段说明
枚举值完整参考 enums.md 创意组件枚举(delivery_mode/page_type/show_data/floating_zone/label 等)+ 素材枚举(source_type/system_status/image_usage/aigc_flag 等)
dynamic_creatives/update dynamic-creatives-update.md 可更新字段、示例
dynamic_creatives/delete dynamic-creatives-delete.md 必填参数
creative_template/get creative-template-get.md 查询可用创意形式及组件配置(get-creative-templates.mjs 使用)
creative_template_list/get creative-template-list-get.md 验证用户指定的 creative_template_id 是否在可用列表中
component_depends/get component-depends-get.md 查询组件字段联动约束(get-component-depends.mjs 使用)
images/add materials/images-add.md 上传图片(upload-image.mjs 使用)
images/get materials/images-get.md 查询图片列表(get-images.mjs 使用)
videos/add materials/videos-add.md 上传视频(upload-video.mjs 使用)
videos/get materials/videos-get.md 查询视频列表(get-videos.mjs 使用)
integrated_list_multiaccount/get integrated-components-get.md 组件模式查询素材(get-integrated-components.mjs 使用),含报表排序、起量潜力/首发/低质筛选
integrated_image_list/get & integrated_media_list/get integrated-media-get.md 素材库模式查询单图/视频(get-integrated-media.mjs 使用),含可用性过滤、报表排序
muse_audios/get materials/muse-audios-get.md 查询妙思版权音频(get-audios.mjs 使用)
dc_review_result/get dc-review-result-get.md 查询动态创意审核详情(get-dc-review-result.mjs 使用),返回组件/元素的审核状态、驳回原因、组件组合审核信息
dynamic_ad_image_templates/get dynamic-ad-templates.md 查询商品图片模版列表(MPA/DPA,get-dynamic-ad-image-templates.mjs 使用)
dynamic_ad_images/add dynamic-ad-templates.md 从商品模版生成图片(generate-dynamic-ad-image.mjs 使用)
dynamic_ad_video_templates/get dynamic-ad-templates.md 查询商品视频模版列表(MPA/DPA,get-dynamic-ad-video-templates.mjs 使用)
dynamic_ad_video/add dynamic-ad-templates.md 从商品模版生成视频(generate-dynamic-ad-video.mjs 使用)
material_labels/get·add·update·bind material-labels.md 素材标签查询 / 新建 / 更新 / 绑定(get-material-labels / add-material-labels / update-material-labels / bind-material-labels 使用)

相关技能

  • tencentads-adgroups - 管理广告组(创意需关联到广告组,创建前先获取 adgroup_id)
目录

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

0

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

0

2026.11.04

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn