用RPA全自动化批量生产【生僻字】图片做小红书商单,保姆级工具开发教程(附工具下载)

今天带大家一起来实战前段时间比较火的小红书【生僻字】项目。工具在最后,也免费分享给大家。通过生僻字做小红书商单,快速涨粉起号,商单200元/单,一个月小几千还是非常香的,而且还可以矩阵做号,于是我就通过【影刀RPA+cursor】开发了一个批量自动化生产生僻字的工具,最后给粉丝们提供了工具下载,可免费试用,无费用。

这个项目比较固定,不仅可以做小红书,视频号、抖音也同样可以发。于是就在思考怎么通过RPA达到批量生产做矩阵的目的。接下来,我将我通过批量生产生僻字的步骤分享给大家,一键启动RPA机器人,机器人就会自动逐个读取excel,并将生僻字转成图片保存在本地文件夹。

开发工具为:影刀+cursor

一、怎么将生僻字生成图片呢?

我的方法比较简单,核心是2点:拼音字体和ppt导出图片。

1.1、安装拼音字体

拼音字体的意思就是,粘贴汉字过来后,会自动显示拼音,如图:

我用的是一个叫做【萌神拼音】的免费商用字体库,点击下载字体库 ,安装也很简单,以windows为例,ctrl+r调出运行,输入control进入外观与个性化,再将上面的字体拖入到下面的字体库区域即可。

 

验证的话,在ppt里面选择字体名称即可。

 

1.2、生僻字PPT模板制作

我参考了小红书上面的很多博主案例封面,于是自己也做了一款。

要注意的是词语区和词语解释区,这2个区域的文本必须先默认是【词语】和【解释】,方便RPA脚本自动替换,其他的地方随便你自己怎么改都行。

当然,我知道很多大老板很忙又很懒,ppt模板我也贴出来供你下载(文章最后有说明)。

二、通过AI批量生产生僻字和解释。

2.1、怎么获取生僻字资源?

答案肯定是通过ai来进行生产,我一开始是用的kimi但发现输出一部分之后,特别容易出错,例如有时候就生成了重复的一个生僻字。 于是改为通过豆包生成(百度搜豆包即可),我的提示词为:

帮我列举出200个中国生僻字,出错率比较高的。用表格的形式展示:第一列是生僻字2-4个字(无需写拼音),第二列是该生僻字的解释30-100个字。

生成的效果如下:

 

然后复制到excel表格,于是得到了几百条数据,每个词语发一个作品,那也可以发几百个作品了。

 

三、用影刀自动批量生产生僻字图片

可以说,这一步是批量化最关键的步骤,我们选用的工具是影刀,自动读取excel,并替换ppt中的生僻字并导出图片。

关键代码是我用AI生成的,也分享给大家(看不懂跳过即可,我也是通过cursor生成的代码):

import win32com.client
import os
import datetime
#开发者:大胡子RPA
#功能:打开ppt,替换文本,并导出图片
class PowerPointEditor:
    def __init__(self, ppt_path):
        """
        初始化 PowerPoint 编辑器。
        
        参数:
            ppt_path (str): PowerPoint 文件路径。
        """
        if not os.path.exists(ppt_path):
            raise FileNotFoundError(f"File '{ppt_path}' does not exist.")
        
        self.ppt_path = ppt_path
        self.ppt_app = win32com.client.Dispatch("PowerPoint.Application")
        self.ppt_app.Visible = True  # 可见,方便调试
        self.presentation = self.ppt_app.Presentations.Open(ppt_path)

    def replace_text_in_slide(self, slide_index, old_text, new_text):
        """
        替换指定幻灯片中的所有文本框中的文本。
        
        参数:
            slide_index (int): 要替换的幻灯片序号(从 1 开始)。
            old_text (str): 要查找的旧文本。
            new_text (str): 要替换的新文本。
        """
        if slide_index < 1 or slide_index > len(self.presentation.Slides):
            raise ValueError(f"Slide index {slide_index} is out of range (1-{len(self.presentation.Slides)}).")
        
        slide = self.presentation.Slides(slide_index)

        for shape in slide.Shapes:
            if shape.HasTextFrame and shape.TextFrame.HasText:
                text_range = shape.TextFrame.TextRange
                if old_text in text_range.Text:
                    text_range.Replace(old_text, new_text)
    def export_slide_as_image(self, slide_index, export_folder, image_format="PNG"):
        """
        将指定幻灯片导出为图片,并返回图片的完整路径。
        
        参数:
            slide_index (int): 要导出的幻灯片序号(从 1 开始)。
            export_folder (str): 图片保存文件夹路径。
            image_format (str): 图片格式,支持 "PNG", "JPG", "GIF" 等(默认 PNG)。
        
        返回:
            str: 导出的图片完整路径。
        """
        if slide_index < 1 or slide_index > len(self.presentation.Slides):
            raise ValueError(f"Slide index {slide_index} is out of range (1-{len(self.presentation.Slides)}).")
        
        # 检查文件夹是否存在,不存在则创建
        if not os.path.exists(export_folder):
            os.makedirs(export_folder)

        # 自动生成文件名
        filename = self.gettimestamp()
        file_name = f"{filename}.{image_format.lower()}"
        export_path = os.path.join(export_folder, file_name)

        # 导出幻灯片为图片
        slide = self.presentation.Slides(slide_index)
        slide.Export(export_path, image_format)
        print(f"Slide {slide_index} exported as {image_format} to '{export_path}'.")
        return export_path
    def save(self, save_path=None):
        """
        保存 PowerPoint 文件。
        
        参数:
            save_path (str): 保存路径(默认覆盖原文件)。
        """
        if save_path is None:
            save_path = self.ppt_path
        
        self.presentation.SaveAs(save_path)
        print(f"Presentation saved as '{save_path}'.")
    def gettimestamp(self):
        # 获取当前时间
        now = datetime.datetime.now()
        # 格式化为 yyyymmddhhMMss
        formatted_time = now.strftime('%Y%m%d%H%M%S')
        # 获取毫秒部分
        milliseconds = now.microsecond // 1000  # 微秒除以1000得到毫秒
        # 将毫秒部分转换为字符串,并确保是三位数
        milliseconds_str = f'{milliseconds:03d}'
        # 拼接时间戳字符串
        timestamp_str = formatted_time + milliseconds_str
        print(timestamp_str)
        return timestamp_str
    def close(self):
        """
        关闭 PowerPoint 演示文稿和应用程序。
        """
        if self.presentation:
            self.presentation.Close()
            del self.presentation
        if self.ppt_app:
            self.ppt_app.Quit()
            del self.ppt_app


#ppt_path = r"E:\workspace\rpa\影刀\生僻字\temp.pptx"
#output_path = r"E:\workspace\rpa\影刀\生僻字\output_png"
ppt_path = dialog_result.ppt_path
output_path = ppt_path[:ppt_path.rfind('\')] + "\output"
# original_path = dialog_result.ppt_path
# ppt_dir = original_path[:original_path.rfind('\')]

title = loop_excel[0]
content = loop_excel[1]
# 初始化编辑器
editor = PowerPointEditor(ppt_path)
try:
    # 多次替换文本
    editor.replace_text_in_slide(1, "词语", title)
    editor.replace_text_in_slide(1, "解释", content)
    editor.export_slide_as_image(1,output_path)
    # 保存结果
    #editor.save(save_path)  //注释掉,暂无需保存
    
except Exception as e:
    print(f"Error: {e}")
finally:
    # 确保关闭 PowerPoint
   if 'editor' in locals():
        editor.close()

这个代码确实踩了很多坑,是通过cursor生成的,不得不说效率真的高,不仅流程快,而且解决bug也超快。

看下成品效果: 暂时无法在飞书文档外展示此内容

四、工具下载

影刀的流程是可以免费分享的:

https://api.winrobot360.com/redirect/robot/share?inviteKey=bad5fc9f3789d710 (密码:dahuzirpa)

还需要下载的有2个文件: 1、模板3-生僻字.pptx (建议改一下背景颜色、和提示文字,不然就跟我的作品重复了)

  

由于平台限制,可以参考该模板自行制作,也可以问硪

2、生僻字列表.xlsx (excel里面我已经汇总了500多个生僻字,够发500多个作品了,实在不行,修改下ppt模板,再生产一篇,不就又有了500多个作品吗)

最后,如果觉得这个工具有用,欢迎点赞在看哦~ 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值