Com a AI Function do Hologres, você gera imagens temáticas de personagens, storyboards de anúncios e vídeos promocionais de 10 segundos a partir de assets brutos de jogos diretamente via SQL. Este tópico usa como exemplo o jogo de tower defense dos Três Reinos Arrow Tower: Defend Hanzhong.
Contexto
A produção de criativos para anúncios é fundamental na aquisição de usuários e no lançamento de versões na indústria de jogos. No marketing de performance, as equipes precisam produzir rapidamente criativos com diferentes estilos, temas e argumentos de venda para testar taxas de cliques, taxas de conversão e preferências dos usuários.
A produção tradicional de anúncios depende da coleta manual de assets, planejamento criativo, design de pôsteres, redação de storyboards e edição de vídeo. Essa abordagem apresenta vários pontos de dor:
Assets brutos dispersos: Artes de personagens, imagens de cenários, ícones de itens, descrições do jogo e textos publicitários estão espalhados por diferentes sistemas, o que dificulta o gerenciamento centralizado.
Baixa eficiência criativa: Cada anúncio exige brainstorming de tema, seleção de assets, escrita de roteiro e produção de vídeo do zero.
Alto custo em testes multiversão: Anúncios de marketing de performance exigem testes A/B extensivos, e os métodos manuais não suportam iterações de alta frequência.
Desconexão entre criativos e desempenho: Sem um sistema unificado para rastrear criativos de anúncios, versões de roteiros e dados de desempenho das campanhas, torna-se difícil criar um ciclo de otimização.
A AI Function do Hologres conecta todo o pipeline — desde o gerenciamento de assets de jogos e a geração criativa até a produção de conteúdo publicitário e a análise de desempenho — em um fluxo de trabalho unificado de criação de vídeos impulsionado por IA.
Vantagens
Esta solução utiliza o Hologres como um hub de produção criativa com IA e integra múltiplas capacidades de modelos para automatizar a geração de criativos publicitários.
Fluxo de trabalho SQL de ponta a ponta: Engenheiros de dados podem chamar modelos de IA, integrar assets e gerar conteúdo de marketing inteiramente via SQL no Hologres, o que reduz significativamente a barreira técnica.
Gerenciamento unificado de assets de jogos: Armazene assets multimodais de jogos — imagens, vídeos e áudio — em tabelas do Hologres e analise-os juntamente com os dados de desempenho dos anúncios.
Automação completa: O fluxo abrange a geração de variações de personagens, a criação de storyboards e a síntese de vídeo, entregando resultados em minutos.
Alta escalabilidade: Gere conteúdo publicitário em lote para diversos cenários e melhore a eficiência da produção de conteúdo e da veiculação de anúncios.
Fluxo de trabalho
O fluxo de trabalho de ponta a ponta para gerar vídeos de anúncios de jogos com a AI Function consiste nas seguintes etapas:
Armazene os assets brutos do jogo e os metadados no Hologres.
Use o modelo qwen-image-2.0-pro para gerar uma biblioteca de imagens temáticas a partir dos assets brutos.
Com base em um prompt, recupere as imagens temáticas e use o modelo qwen3.7-plus para gerar um storyboard.
Combine as imagens temáticas e o storyboard com o modelo wan2.7-t2v para gerar o vídeo do anúncio do jogo.
Escolha o vídeo de anúncio mais adequado para sua campanha.
Pré-requisitos
Você criou uma instância do Hologres que executa uma das seguintes versões: V4.0.40 ou posterior, V4.1.26 ou posterior, V4.2.5 ou posterior, ou V5.0 ou posterior. A AI Function com modelos gerenciados está disponível nas regiões China (Beijing), China (Shanghai), China (Hangzhou), China (Shenzhen) e Singapore.
Adquira recursos de modelos de IA do Hologres na página de compra de recursos de modelos de IA. O faturamento é pagamento conforme o uso. Selecione a mesma região da sua instância do Hologres. Para mais informações, consulte Modelos gerenciados.
Implante os modelos gerenciados necessários do Hologres no console do Hologres, incluindo um modelo de geração de imagens (como qwen-image-2.0-pro), um modelo de geração de texto (como qwen3.7-plus) e um modelo de geração de vídeo (como wan2.7-t2v). Para implantar modelos gerenciados: faça logon no console do Hologres e acesse a página de detalhes da instância. No painel de navegação à esquerda, escolha AI Model, clique em Deploy Model, defina o provedor do modelo como Hologres-managed model, selecione as categorias de modelos desejadas (é possível implantar vários modelos de uma vez), configure os parâmetros e o mecanismo de nova tentativa e clique em Confirm. Para mais informações, consulte Modelos gerenciados.
-
Este tutorial implanta os seguintes modelos:
Modelo de geração de imagens: qwen-image-2.0-pro
Modelo de geração de texto (para geração de storyboard): qwen3.7-plus
Modelo de geração de vídeo: wan2.7-t2v
-
Tenha um bucket do Object Storage Service (OSS) para armazenar as imagens e os vídeos gerados e configure a autorização de função do RAM necessária (para mais informações, consulte Preparações). Caso ainda não tenha ativado o OSS, consulte Ativar o OSS. O bucket do OSS deve estar na mesma região da sua instância do Hologres. Caso contrário, a função
to_file()não conseguirá acessar o OSS por meio de um endpoint interno. Para mais informações sobre as funções ai_gen e to_file(), consulte Usar a AI Function para gerar imagens ou vídeos.O endpoint interno do OSS usado nos exemplos deste tópico é
oss-cn-hangzhou-internal.aliyuncs.compara a região China (Hangzhou). Se sua instância estiver em outra região, substitua o endpoint pelo correspondente à sua região. O formato éoss-cn-<region>-internal.aliyuncs.com. Por exemplo, o endpoint para a região China (Shanghai) éoss-cn-shanghai-internal.aliyuncs.com. -
Os nomes dos modelos usados nos exemplos deste tópico, como
qwen-image-2.0-pro,qwen3.7-plusewan2.7-t2v, são os nomes de implantação configurados no console do Hologres. Substitua-os pelos seus nomes de implantação reais. Execute a seguinte instrução SQL para consultar a lista de modelos implantados na instância atual:SELECT * FROM pg_catalog.hg_ai_models;
A função do RAM deve atender às seguintes condições. Para mais informações, consulte Modos de autorização de função do RAM.
-
Política de confiança: A política de confiança deve permitir que o service do Hologres assuma essa função. Edite a política de confiança da função no console do RAM para garantir que ela inclua o seguinte conteúdo:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "hologres.aliyuncs.com" ] } } ], "Version": "1" } -
Política de permissões: A função deve ter permissões para acessar o OSS. Anexe a política de sistema
AliyunOSSFullAccessou crie uma política personalizada para conceder apenas permissões de leitura e gravação em um bucket específico:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:GetObject", "oss:PutObject", "oss:GetBucketInfo" ], "Resource": [ "acs:oss:*:*:<BucketName>", "acs:oss:*:*:<BucketName>/*" ] } ] }
Etapa 1: Preparar os assets do jogo
Crie uma tabela no Hologres para armazenar os metadados do jogo e os caminhos dos assets brutos.
-- Create the game information table
DROP TABLE IF EXISTS game_info;
CREATE TABLE game_info(
name TEXT,
intro TEXT,
motivation TEXT,
art_style TEXT,
material_list TEXT[]
);
-- Insert the game information
INSERT INTO game_info (name, intro, motivation, art_style, material_list)
VALUES (
'Arrow Tower: Defend Hanzhong',
'Arrow Tower: Defend Hanzhong is a casual tower defense game set in the Three Kingdoms period. In this turbulent era, you will take on the role of a commander responsible for defending your territory!
Gameplay:
1. Drag and drop various defense towers onto the preset paths.
2. Click to upgrade existing towers to increase their power.
3. At critical moments, click to release hero skills to instantly turn the tide of battle.',
'Strategy Tower Defense',
'Flat, Chinese style, minimalist characters',
ARRAY[
'oss://<BucketName>/images/liubei.png',
'oss://<BucketName>/images/lvbu.png'
]
);
A coluna material_list armazena os caminhos no OSS das imagens originais dos personagens.
Exemplos de assets: Imagens reais do jogo contendo personagens, cenários e outros elementos.
|
oss://<BucketName>/images/liubei.png |
oss://<BucketName>/images/lvbu.png |
|
|
|
|
Liu Bei |
Lü Bu |
Etapa 2: Criar prompts de tema
Gere variações temáticas das imagens originais dos personagens para uso como criativos de anúncios.
-- Create the theme style prompt table
DROP TABLE IF EXISTS video_style;
CREATE TABLE video_style(
name TEXT PRIMARY KEY,
prompt TEXT
);
-- Insert prompts for different themes
INSERT INTO video_style VALUES
('Northern Warlord', 'Keep the character portrait unchanged, and generate a Q-style character wearing heavy, black, fur-collared metal armor with frost and battle scars. Use cold blue lighting, an epic cinematic feel, and stunningly detailed Q-style characters.'),
('Cloud Sea Sword Immortal', 'Keep the character portrait unchanged, and transform an elegant Three Kingdoms strategist into an ethereal sword immortal. The Q-style character wears a moon-white, wide-sleeved robe with faint ink-wash landscape patterns.'),
('Netherworld Nightwalker', 'Keep the character portrait unchanged, and transform the character into a mysterious shadow assassin. The Q-style character wears matte black, form-fitting night gear and a mask that covers half of their face.'),
('Golden Armor', 'Keep the character portrait unchanged, and generate a Q-style character wearing a magnificent suit of golden armor adorned with dragon motifs and jewels, with a crimson silk cape.');
Etapa 3: Gerar imagens temáticas
Gere imagens temáticas para cada personagem. Este exemplo produz quatro variações temáticas por personagem ao chamar a função ai_gen() com o modelo qwen-image-2.0-pro.
-- Create a results table for the generated images
DROP TABLE IF EXISTS generated_images;
CREATE TABLE generated_images(
game_name TEXT,
style_name TEXT,
style_desc TEXT,
character1 TEXT,
character2 TEXT
);
-- Batch generate themed images and store the results
WITH person_prompt AS (
SELECT game_info.name AS game_name,
video_style.name AS style_name,
material_list[1] AS character1,
material_list[2] AS character2,
prompt
FROM game_info, video_style
WHERE game_info.name = 'Arrow Tower: Defend Hanzhong'
),
gen_image AS (
SELECT game_name, style_name, prompt AS style_desc,
ai_gen('qwen-image-2.0-pro', json_build_object(
'prompt', prompt,
'reference_urls', array[character1],
'parameters', json_build_object(
'size', '1280*720',
'n', 1,
'watermark', false
),
'output_dir', 'oss://<BucketName>/images/'
)::text, to_file(character1, 'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')) AS obj1,
ai_gen('qwen-image-2.0-pro', json_build_object(
'prompt', prompt,
'reference_urls', array[character2],
'parameters', json_build_object(
'size', '1280*720',
'n', 1,
'watermark', false
),
'output_dir', 'oss://<BucketName>/images/'
)::text, to_file(character2, 'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')) AS obj2
FROM person_prompt
),
image_urls AS (
SELECT game_name, style_name, style_desc,
obj1::json->'image_oss_paths' ->> 0 AS character1,
obj2::json->'image_oss_paths' ->> 0 AS character2
FROM gen_image
)
INSERT INTO generated_images SELECT * FROM image_urls;
Após a conclusão da consulta, a tabela generated_images armazena os caminhos no OSS das imagens geradas para cada personagem e tema.
|
Nome do jogo |
Nome do estilo |
Descrição do estilo |
Personagem 1 |
Personagem 2 |
|
Arrow Tower: Defend Hanzhong |
Golden Armor |
Keep the character portrait unchanged, and generate a Q-style character wearing a magnificent suit of golden armor adorned with dragon motifs and jewels, with a crimson silk cape. |
oss://<BucketName>/images/142ac543-d241-4127-ad47-75a02d7b8b32.png |
oss://<BucketName>/images/838d2735-e9fa-4a52-9124-880941203103.png |
|
Arrow Tower: Defend Hanzhong |
Cloud Sea Sword Immortal |
Keep the character portrait unchanged, and transform an elegant Three Kingdoms strategist into an ethereal sword immortal. The Q-style character wears a moon-white, wide-sleeved robe with faint ink-wash landscape patterns. |
oss://<BucketName>/images/596bb585-1722-4752-aaa7-a48d53184e2b.png |
oss://<BucketName>/images/1703a30c-be46-4128-88d0-ee3eea0c72a3.png |
|
Arrow Tower: Defend Hanzhong |
Netherworld Nightwalker |
Keep the character portrait unchanged, and transform the character into a mysterious shadow assassin. The Q-style character wears matte black, form-fitting night gear and a mask that covers half of their face. |
oss://<BucketName>/images/914873db-8dd5-47b5-98ed-d5ba1e0cdba0.png |
oss://<BucketName>/images/d09e4316-8f69-4926-b58f-59054b381c6d.png |
|
Arrow Tower: Defend Hanzhong |
Northern Warlord |
Keep the character portrait unchanged, and generate a Q-style character wearing heavy, black, fur-collared metal armor with frost and battle scars. Use cold blue lighting, an epic cinematic feel, and stunningly detailed Q-style characters. |
oss://<BucketName>/images/29a02d94-7da9-43e7-a272-0e7d0bf1b55a.png |
oss://<BucketName>/images/0c41e5a2-2930-4895-a5ee-3bca1e060b2f.png |
|
Liu Bei |
Lü Bu |
|
|
|
|
|
|
|
|
|
|
|
|
Etapa 4: Gerar um storyboard
Use as imagens temáticas como assets de vídeo e chame um modelo de linguagem grande (LLM) para gerar um storyboard de anúncio.
-- Create the prompt template table
DROP TABLE IF EXISTS prompts;
CREATE TABLE prompts (
id BIGINT,
prompt TEXT
);
-- Insert the prompt template for storyboard generation
INSERT INTO prompts VALUES (10,
'Your task is to generate copy for a 10-second video ad creative for a mobile game.
<game_name>{0}</game_name>
<game_intro>{1}</game_intro>
<player_motivation>{2}</player_motivation>
<art_style>{3}</art_style>
<image_assets>{4} {5}</image_assets>
Video creative structure:
1. Opening (2 seconds): Select one image, display the game name, and show exaggerated special effects.
2. Middle (6 seconds): Showcase one core gameplay mechanic. Select two images and describe the character''s actions and effects.
3. Ending (2 seconds): Feature all characters and include a call to action.
Requirements: Focus on the player''s motivation. The script must not exceed 10 seconds. Use the full image paths.');
Chame o modelo qwen3.7-plus com o template para gerar um storyboard:
-- Generate the storyboard
WITH game_material AS (
SELECT * FROM game_info
LEFT JOIN generated_images ON name = game_name
WHERE game_name = 'Arrow Tower: Defend Hanzhong' AND style_name = 'Cloud Sea Sword Immortal'
),
tmp_prompt AS (
SELECT json_build_object(
'prompt', prompt,
'args', json_build_array(
name, intro, motivation, art_style,
to_file(character1, 'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>'),
to_file(character2, 'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')
)
) AS prompt, character1, character2
FROM game_material, prompts WHERE id = 10
),
story_script AS (
SELECT ai_gen('qwen3.7-plus', prompt::text,
to_file(character1,
'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')) AS script,
character1, character2
FROM tmp_prompt
)
SELECT script FROM story_script;
Exemplo de storyboard:
**Video script: 10-second placement creative for “Arrow Tower: Defend Hanzhong”**
**Duration:** 10 seconds
**Core selling points:** Chinese-style strategy, casual gameplay, troop deployment
| Time | Visual | Audio/Copy | Notes |
| :--- | :--- | :--- | :--- |
| **00:00 - 00:02**<br>(Opening) | **Asset:** `oss://<BucketName>/images/b1b4c3a7-ee08-4c2c-9db0-ec33f5d93432.png`<br><br>Show a full-body character shot. Blue VFX bursts outward around the character. Big title text appears in the center: **“Arrow Tower: Defend Hanzhong”**. | **(SFX: deep bass rumble + sword ring)**<br>VO: In the chaos of the Three Kingdoms, who will rise? | Use high-appeal visuals to drive clicks and showcase the game name. |
| **00:02 - 00:08**<br>(Middle) | **Asset:** `oss://<BucketName>/images/a1b3dabc-05b5-4f5c-9907-27fd1818cd45.png`<br><br>The chibi character swings a sword. A sweeping sword wave cuts across the screen. Arrow towers rise in the background to block enemies.<br>On-screen text: **Deploy troops · Casual tower defense** | **(SFX: upbeat percussion + arrow shots)**<br>VO: Deploy with your fingertips—build arrow towers and hold back an army! | Combine the strengths of both images (realistic face + chibi body) to show “strategy” + “casual.” |
| **00:08 - 00:10**<br>(Ending) | Freeze on the chibi character’s sword pose. A button pops up at the bottom: **[Challenge now]**.<br>Multiple chibi silhouettes appear in the background (hinting at a hero roster). | **(SFX: victory horn)**<br>VO: Join “Arrow Tower: Defend Hanzhong” and defend Hanzhong! | Strong call to action (CTA). |
**Video script: 10-second placement creative for “Arrow Tower: Defend Hanzhong”**
**Total duration:** 10 seconds
**Core motivation:** Strategy tower defense / Casual gameplay
---
**[0-2s] Opening: Hook with VFX and brand reveal**
* **Visual:** Use `oss://<BucketName>/images/596bb585-1722-4752-aaa7-a48d53184e2b.png`.
* **Action:** A huge game logo “Arrow Tower: Defend Hanzhong” appears in the center. A strong blue shockwave explodes behind the character. The sword glows to create a “god-tier hero arrives” feel.
* **SFX/VO:** “In the chaos of the Three Kingdoms, who will rise?” (with emphasis)
**[2-8s] Middle: Show the core mechanic (strategic placement)**
* **Visual:** Cut to `oss://<BucketName>/images/1703a30c-be46-4128-88d0-ee3eea0c72a3.png`.
* **Action:**
* **2-5s:** Zoom in on the glowing sword. The sword tip points to the right side of the screen (to suggest incoming enemies). The character’s robe flutters as they take a defensive stance.
* **5-8s:** An ink-wash defensive formation effect appears around the character. A crisp “ding” sound sells the feel of “one-tap deployment.”
* **Text:** “Easy placement, arrow towers strike!”
**[8-10s] Ending: Call to action**
* **Visual:** Freeze on the final sword pose. Overlay a “Download now” button style.
* **Action:** The character looks straight at the camera. A download arrow pops up at the bottom.
* **VO:** “Come to ‘Arrow Tower: Defend Hanzhong’ and defend your city!”
Etapa 5: Gerar o vídeo
Após gerar o storyboard, passe-o juntamente com as imagens temáticas para um modelo de geração de vídeo a fim de produzir o vídeo do anúncio. Este exemplo usa o modelo wan2.7-t2v.
-- Generate the ad video (combines storyboard and video generation in one step)
WITH game_material AS (
SELECT * FROM game_info
LEFT JOIN generated_images ON name = game_name
WHERE game_name = 'Arrow Tower: Defend Hanzhong' AND style_name = 'Cloud Sea Sword Immortal'
),
tmp_prompt AS (
SELECT json_build_object(
'prompt', prompt,
'args', json_build_array(
name, intro, motivation, art_style,
to_file(character1, 'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>'),
to_file(character2, 'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')
)
) AS prompt, character1, character2
FROM game_material, prompts WHERE id = 10
),
story_script AS (
SELECT ai_gen('qwen3.7-plus', prompt::text,
to_file(character1,
'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')) AS script,
character1, character2
FROM tmp_prompt
)
SELECT character1, character2,
ai_gen('wan2.7-t2v', json_build_object(
'prompt', script,
'reference_urls', array[character1, character2],
'parameters', json_build_object(
'size', '1280*720',
'duration', 10,
'shot_type', 'multi',
'audio', true,
'watermark', true
),
'output_dir', 'oss://<BucketName>/videos/'
)::text,
to_file(character1,
'oss-cn-hangzhou-internal.aliyuncs.com',
'acs:ram::<AccountId>:role/<RoleName>')) AS video_result,
script
FROM story_script;
Após a conclusão da consulta, o campo video_url no resultado contém a URL do vídeo de anúncio gerado. O vídeo também é salvo no diretório especificado do OSS.
Etapa 6: Visualizar vídeos
Vídeos gerados:
-
Northern Warlord
-
Cloud Sea Sword Immortal









