乙巳马年皇城大门春联生成终端W自动化脚本:使用Python批量生成节日海报

张开发
2026/4/8 7:53:55 15 分钟阅读

分享文章

乙巳马年皇城大门春联生成终端W自动化脚本:使用Python批量生成节日海报
乙巳马年皇城大门春联生成终端W自动化脚本使用Python批量生成节日海报每到年底市场部的小伙伴们就开始头疼。要给几百家门店、几十个合作客户定制春节宣传海报每家都要有独特的、带点文化味儿的春联。以前要么是设计师一张张手动P图要么是文案绞尽脑汁想对联费时费力不说还容易出错。今年我们团队用Python写了个自动化脚本把这事儿给搞定了。这个脚本的核心思路很简单把重复、机械的工作交给程序。我们有一个包含所有客户信息的Excel表格里面写着客户名字、门店地址、行业关键词。脚本读取这些信息调用一个能生成春联的AI模型为每家客户生成一副独一无二的对联然后自动把对联文字和客户信息“贴”到设计好的海报模板上最后批量输出成图片文件。整个过程从几百条数据到几百张成品海报可能只需要喝杯咖啡的时间。下面我就来详细拆解一下这个脚本是怎么工作的以及你如何把它用在自己的业务里。1. 脚本能帮你解决什么问题在讲具体代码之前我们先看看这个脚本到底解决了哪些实际痛点。首先是效率问题。手动为成百上千个对象设计海报是一个极其消耗人力的过程。设计师需要不断修改文案、调整排版、导出图片不仅速度慢而且难以保证批次间的质量统一。我们的脚本将这个过程自动化把人力从重复劳动中解放出来投入到更需要创造性的工作中。其次是定制化与一致性的平衡。春节营销既要体现对每个客户的专属祝福定制化又要保持品牌视觉的统一性一致性。脚本完美地解决了这个矛盾海报的版式、字体、Logo位置等视觉元素由统一的模板控制确保品牌形象一致而核心的春联文案则根据每个客户的关键词动态生成实现了“千店千面”。最后是创意的规模化生产。好的春联需要巧思但人的创意有瓶颈和疲劳期。借助AI模型我们可以为不同行业、不同偏好的客户生成贴合其特点的春联比如为餐饮客户生成“客似云来生意旺”为科技公司生成“创新驱动前程锦”。这相当于为每个客户配备了一个专属的“对联顾问”实现了创意内容的批量、高质量产出。简单来说这个脚本的价值就是用自动化保证效率和一致性用AI赋能创意和个性化最终实现节日营销物料的大规模、高质量、低成本生产。2. 脚本的工作原理与核心流程整个脚本的运行可以看作一条清晰的生产流水线。为了让你更直观地理解我们先来看一下它的核心工作流程图graph TD A[开始: 准备客户数据Excel] -- B[步骤1: 读取与解析数据] B -- C[步骤2: 调用AI模型生成春联] C -- D{生成成功?} D -- 是 -- E[步骤3: 合成海报图片] D -- 否 -- F[记录错误并跳过] E -- G[步骤4: 保存输出文件] F -- H[处理下一个客户] G -- H H -- I{是否还有下一个客户?} I -- 是 -- B I -- 否 -- J[结束: 生成报告]上图展示了脚本从数据到成品的完整闭环。接下来我们深入每个环节看看具体是怎么实现的。2.1 数据准备客户信息Excel表一切始于数据。我们准备一个结构清晰的Excel文件比如clients.xlsx它至少包含以下几列client_name: 客户或门店名称keywords: 用于生成春联的关键词例如“餐饮、火锅、红火”output_filename: 希望生成图片的文件名例如“某某火锅店_春节海报.png”脚本使用pandas库来读取和处理这个表格。import pandas as pd # 读取客户数据 def load_client_data(file_path): try: df pd.read_excel(file_path) # 确保必要的列存在 required_columns [client_name, keywords, output_filename] if not all(col in df.columns for col in required_columns): raise ValueError(fExcel文件必须包含以下列: {required_columns}) print(f成功加载 {len(df)} 条客户数据。) return df except Exception as e: print(f读取Excel文件失败: {e}) return None2.2 核心环节调用AI生成春联这是脚本的“大脑”。我们需要与一个能够理解指令并生成对联的AI模型进行交互。这里假设该模型提供了一个HTTP API接口。脚本的核心函数会构造一个符合模型要求的请求将客户关键词融入提示词中然后调用API并解析返回的春联文本。import requests import json import time def generate_couplet_with_ai(keywords, api_url, api_key): 调用AI API生成春联 :param keywords: 字符串客户关键词 :param api_url: AI模型的API端点地址 :param api_key: 用于认证的API密钥 :return: 生成的春联文本上下联加横批或None # 构造提示词将关键词融入其中 prompt f请创作一副春节商用春联要求体现喜庆、祝福的寓意并融入以下行业或场景关键词{keywords}。请直接输出上下联和横批格式为上联... 下联... 横批... headers { Authorization: fBearer {api_key}, Content-Type: application/json } payload { prompt: prompt, max_tokens: 150, # 控制生成文本长度 temperature: 0.8, # 控制创意随机性 } try: response requests.post(api_url, headersheaders, datajson.dumps(payload), timeout30) response.raise_for_status() # 如果状态码不是200抛出异常 result response.json() # 解析API返回的文本这里需要根据实际API响应结构调整 # 假设返回结构为 {text: 上联... 下联... 横批...} generated_text result.get(text, ).strip() if generated_text: return generated_text else: print(fAPI返回内容为空。) return None except requests.exceptions.RequestException as e: print(f调用API时发生网络错误: {e}) return None except json.JSONDecodeError as e: print(f解析API响应失败: {e}) return None # 添加短暂延迟避免请求过快 time.sleep(0.5)2.3 图片合成将文字“贴”到模板上生成春联文案后下一步就是将它可视化。我们预先设计好一张精美的海报模板一张PNG或JPG图片模板上留出了放置对联文字和客户名称的空白区域。脚本使用PIL(Python Imaging Library) 库来打开模板图片并在指定坐标位置绘制文字。from PIL import Image, ImageDraw, ImageFont def create_poster(template_path, couplet_text, client_name, output_path): 将春联和客户名合成到海报模板上 :param template_path: 海报模板图片路径 :param couplet_text: 生成的春联完整文本 :param client_name: 客户名称 :param output_path: 输出图片的保存路径 try: # 1. 打开模板图片 img Image.open(template_path) draw ImageDraw.Draw(img) # 2. 加载字体确保字体文件存在 # 可以使用系统字体或指定一个中文字体文件路径 try: font_title ImageFont.truetype(simhei.ttf, 60) # 客户名称用大字体 font_couplet ImageFont.truetype(simkai.ttf, 45) # 春联用楷体 except: # 如果指定字体失败使用默认字体可能不支持中文 print(警告未找到指定字体使用默认字体可能影响中文显示。) font_title ImageFont.load_default() font_couplet ImageFont.load_default() # 3. 解析春联文本假设格式固定 # 这里需要根据API返回的实际格式进行解析以下为示例逻辑 lines couplet_text.split( ) upper_line, lower_line, horizontal , , for line in lines: if line.startswith(上联): upper_line line[3:].strip() elif line.startswith(下联): lower_line line[3:].strip() elif line.startswith(横批): horizontal line[3:].strip() # 4. 定义绘制坐标这些坐标需要根据你的模板实际测量确定 # (x, y) 坐标原点在图片左上角 title_position (400, 150) # 客户名称位置 upper_line_position (300, 350) # 上联位置 lower_line_position (300, 450) # 下联位置 horizontal_position (450, 550) # 横批位置 # 5. 绘制文字 draw.text(title_position, f{client_name} 恭贺新禧, fill(200, 30, 30), fontfont_title) # 红色 draw.text(upper_line_position, upper_line, fill(0, 0, 0), fontfont_couplet) # 黑色 draw.text(lower_line_position, lower_line, fill(0, 0, 0), fontfont_couplet) draw.text(horizontal_position, horizontal, fill(200, 30, 30), fontfont_title) # 6. 保存图片 img.save(output_path) print(f海报已生成: {output_path}) except FileNotFoundError: print(f错误未找到模板文件 {template_path}) except Exception as e: print(f合成海报时发生未知错误: {e})2.4 主流程把一切串联起来最后我们写一个主函数把数据读取、AI调用、图片合成这三个模块像流水线一样组装起来并加入必要的错误处理和日志记录。import os def main(): # 配置参数 EXCEL_FILE clients.xlsx TEMPLATE_IMAGE poster_template.jpg OUTPUT_DIR generated_posters API_URL YOUR_AI_API_ENDPOINT # 替换为实际的API地址 API_KEY YOUR_API_KEY # 替换为你的API密钥 # 创建输出目录 os.makedirs(OUTPUT_DIR, exist_okTrue) # 1. 加载数据 df load_client_data(EXCEL_FILE) if df is None: return success_count 0 fail_records [] # 2. 遍历每一个客户 for index, row in df.iterrows(): client_name row[client_name] keywords row[keywords] filename row[output_filename] print(f\n正在处理客户 [{index1}/{len(df)}]: {client_name}) # 3. 生成春联 couplet generate_couplet_with_ai(keywords, API_URL, API_KEY) if not couplet: print(f 失败未能为 {client_name} 生成春联。) fail_records.append({client: client_name, reason: AI生成失败}) continue print(f 生成春联成功: {couplet[:50]}...) # 打印前50字符预览 # 4. 合成海报 output_path os.path.join(OUTPUT_DIR, filename) create_poster(TEMPLATE_IMAGE, couplet, client_name, output_path) success_count 1 # 5. 生成报告 print(f\n{*50}) print(f批量处理完成) print(f成功: {success_count} 张) print(f失败: {len(fail_records)} 张) if fail_records: print(失败详情:) for record in fail_records: print(f - {record[client]}: {record[reason]}) print(f生成的海报保存在: {os.path.abspath(OUTPUT_DIR)}) if __name__ __main__: main()3. 如何应用到你的实际业务中看完了核心代码你可能会想这套东西怎么才能搬到自己的项目里用起来呢这里有一些实用的建议。第一步准备好你的“原材料”。最重要的是设计一张高质量的海报模板。你可以用任何设计工具比如Photoshop、Figma甚至PPT来做关键是要留出足够清晰、位置合适的空白区域来放文字。然后整理好你的客户数据表确保格式和脚本要求的一致。第二步搞定AI模型接口。你需要找到一个提供文本生成能力特别是能理解中文指令生成对联的AI服务。现在这类服务很多注册后通常能获得一个API地址和密钥。把脚本里的API_URL和API_KEY换成你自己的就行了。第一次对接时建议先用一个客户测试确保返回的文本格式是脚本能解析的。第三步调试和微调。运行脚本后你可能会发现文字位置对不上或者字体不好看。这时就需要调整create_poster函数里的坐标和字体设置。这是个“细活儿”可能需要反复调整几次才能达到完美效果。另外也可以优化提示词prompt让AI生成的春联更符合你的品牌调性比如更文艺、更幽默或者更正式。第四步扩展脚本能力。这个基础脚本可以玩出很多花样。比如你可以准备多套不同风格的模板传统、现代、卡通根据客户类型自动匹配。你还可以让脚本在生成后自动压缩图片以方便微信发送或者自动打包成一个ZIP文件。甚至可以加入一个简单的Web界面让非技术同事也能上传Excel、点击按钮运行。4. 总结回过头来看这个Python脚本的技术原理并不复杂无非是数据读取、API调用、图像处理这几个常见操作的组合。但它带来的业务价值是实实在在的将市场、设计人员从节日前的加班噩梦中解救出来实现了营销内容的“一键量产”。在实际使用中我们团队用这个脚本在两天内生成了超过一千张定制海报用于门店装饰和社交媒体宣传反馈非常好。更重要的是它为我们打开了一扇门看到了AI自动化与具体业务场景结合的巨大潜力。它不仅仅是一个节省时间的工具更是一种新的内容生产模式。如果你也在为类似的重复性、批量化的创意内容生产发愁不妨试试这个思路。从一个小而具体的场景开始用自动化脚本把流程跑通你会发现技术真的能让工作变得更简单、更有趣。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章