一、项目简介

TikTok批量上传助手是基于影刀RPA开发的自动化工具,旨在帮助内容创作者、营销人员和企业高效地批量上传视频到TikTok平台。该工具通过读取Excel表格中的视频信息,自动完成视频上传、描述填写、封面设置、权限配置和发布流程,极大地提高了工作效率,减少了重复劳动。

无论是短视频创作者还是社交媒体运营团队,都可以通过本工具实现TikTok内容的快速批量发布,节省大量时间和人力成本。

二、项目结构

xbot_robot/
├── __init__.py
├── imagesV2.xml
├── main.py
├── package.json
├── package.py
├── package.sigstore
├── process1.py
├── process2.py
├── process3.py
├── process4.pybx
├── selectorsV2.xml
├── settings.json
main.pyprocess1.pyprocess2.pyprocess3.pyprocess4.pybxpackage.pyselectorsV2.xmlimagesV2.xml.dev/

三、项目特点和核心代码

1. 批量处理机制

# main.py 核心批量处理逻辑
def main(args):
    try:
        _ = xbot_visual.process.run(process="process3", package=__name__, inputs={
            }, outputs=[
        ], _block=("main", 1, "调用流程"))
        datatable = xbot_visual.programing.databook.read_data_from_workbook(read_way="column", cell_row_num="1", cell_column_name="", area_begin_row_num="1", area_begin_column_name="", area_end_row_num="1", area_end_column_name="", row_row_num="1", get_display_text=False, has_header_row=False, column_column_name="E", _block=("main", 2, "读取数据表格内容"))
        
        # 循环处理每一行数据
        for loop_datatable, loop_item_rownum, _ in xbot_visual.programing.databook.loop_data_from_workbook_with_return_item_location(loop_way="loop_range", begin_row_num="1", end_row_num="-1", begin_column_name="", end_column_name="", has_header_row=False, range_begin_row_num="1", range_begin_column_name="A", range_end_row_num="-1", range_end_column_name="-1", get_display_text=False, _block=("main", 5, "循环数据表格内容")):
            xbot_visual.programing.log(type="info", text="======== 开始处理第 " + xbot_visual.sh_str(loop_item_rownum) + " 行 ========", _block=("main", 6, "打印日志"))
            try:
                # 调用process1上传单个视频
                _ = xbot_visual.process.run(process="process1", package=__name__, inputs={
                    "file_path": lambda: loop_datatable[1],
                    "desc": lambda: loop_datatable[0],
                    "cover_path": lambda: loop_datatable[2],
                    "permission": lambda: loop_datatable[3],
                    }, outputs=[
                ], _block=("main", 8, "调用流程"))
                # 标记成功
                xbot_visual.programing.databook.write_data_to_workbook(write_range="area", write_way="append", write_column_way="override", row_num=loop_item_rownum, column_name="E", begin_row_num="1", begin_column_name="", content="成功", _block=("main", 9, "写入内容至数据表格"))
            except Exception as exception:
                # 标记失败并记录错误信息
                exception = xbot_visual.trace(exception)
                xbot_visual.programing.databook.write_data_to_workbook(write_range="area", write_way="append", write_column_way="override", row_num=loop_item_rownum, column_name="E", begin_row_num="1", begin_column_name="", content="失败", _block=("main", 12, "写入内容至数据表格"))
                xbot_visual.programing.databook.write_data_to_workbook(write_range="area", write_way="append", write_column_way="override", row_num=loop_item_rownum, column_name="F", begin_row_num="1", begin_column_name="", content=exception, _block=("main", 13, "写入内容至数据表格"))

2. 视频上传与发布流程

# process1.py 视频上传核心逻辑
def main(args):
    if args is None:
        file_path = "C:\Users\wn\Downloads\测试.mp4"
        desc = "这是一个测试视频"
        cover_path = "C:\Users\wn\Downloads\demp.png"
        permission = "仅自己"
    else:
        file_path = args.get("file_path", "C:\Users\wn\Downloads\测试.mp4")
        desc = args.get("desc", "这是一个测试视频")
        cover_path = args.get("cover_path", "C:\Users\wn\Downloads\demp.png")
        permission = args.get("permission", "仅自己")
    try:
        # 打开TikTok上传页面
        web_page = xbot_visual.web.create(web_type=glv['glv_mode'], value="https://www.tiktok.com/tiktokstudio/upload?from=creator_center", silent_running=False, wait_load_completed=True, load_timeout="20", stop_load_if_load_timeout="handleExcept", chrome_file_name=None, edge_file_name=None, ie_file_name=None, bro360_file_name=None, firefox_file_name=None, arguments=None, _block=("上传视频", 1, "打开网页"))
        
        # 点击上传按钮
        xbot_visual.web.element.click(browser=web_page, element=package.selector("选择视频_按钮"), simulate=True, move_mouse=False, clicks="click", button="left", keys="null", delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("上传视频", 3, "点击元素(web)"))
        
        # 处理上传对话框
        xbot_visual.web.handle_upload_dialog(web_type="edge", dialog_result="OK", filename=file_path, simulate=False, clipboard_input=False, input_type="automatic", wait_appear_timeout="20", force_ime_ENG=False, send_key_delay="50", focus_timeout="1000", _block=("上传视频", 7, "处理上传对话框"))
        
        # 等待上传完成
        try:
            web_wait_result = xbot_visual.web.element.wait(browser=web_page, element=package.selector("已上传_标志"), state="appear", iswait=True, timeout="300", _block=("上传视频", 10, "等待元素(web)"))
        except Exception as e:
            xbot_visual.programing.log(type='info',text=e,_block=("上传视频", 10,"等待元素(web)"))
            web_wait_result = False
        if xbot_visual.workflow.test(operand1=web_wait_result, operator="is false", operand2="", operator_options="{}", _block=("上传视频", 11, "IF 条件")):
            raise Exception("300s 未完成上传视频")
        
        # 填写视频描述
        xbot_visual.web.element.input(browser=web_page, element=package.selector("视频描述_输入框"), text=desc, append=False, simulate=False, driver_input=False, save_to_clipboard=True, input_type="clipboard", contains_hotkey=False, force_ime_ENG=False, send_key_delay="50", focus_timeout="1000", delay_after="1", click_before_input=True, anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("上传视频", 16, "填写输入框(web)"))
        
        # 上传封面
        # ... (代码省略) ...
        
        # 设置视频权限
        # ... (代码省略) ...
        
        # 点击发布
        xbot_visual.web.element.click(browser=web_page, element=package.selector("发布_按钮"), simulate=True, move_mouse=False, clicks="click", button="left", keys="null", delay_after="1", anchor_type="center", sudoku_part="MiddleCenter", offset_x="0", offset_y="0", timeout="20", _block=("上传视频", 41, "点击元素(web)"))
        
        # 等待发布完成
        web_wait_result2 = xbot_visual.web.element.wait(browser=web_page, element=package.selector("视频已发布"), state="appear", iswait=True, timeout="20", _block=("上传视频", 42, "等待元素(web)"))
        web_wait_result2 = xbot_visual.web.element.wait(browser=web_page, element=package.selector("视频已发布"), state="disappear", iswait=True, timeout="20", _block=("上传视频", 43, "等待元素(web)"))
        xbot_visual.programing.log(type="info", text="视频发布成功", _block=("上传视频", 44, "打印日志"))
    finally:
        pass

四、适用场景

  1. 内容创作者:对于需要定期发布大量短视频的创作者,本工具可以实现一键批量上传,节省大量时间和精力。

  2. 社交媒体运营团队:企业或机构的社交媒体运营团队,需要在多个账号上发布相同或相似的视频内容时,可以通过本工具快速完成。

  3. 电商营销人员:电商平台商家可以利用本工具批量上传产品宣传视频,提高产品曝光率。

  4. 跨境电商卖家:针对TikTok国际版的跨境电商卖家,可以通过本工具高效管理和发布多语言版本的产品视频。

  5. 自媒体矩阵运营:拥有多个TikTok账号的自媒体运营者,可以通过本工具实现内容的统一分发和管理。

五、常见问题与建议

1. 上传失败怎么办?

  • 问题原因:可能是网络不稳定、视频格式不支持、TikTok服务器繁忙等原因导致。
  • 处理建议:工具会自动记录失败信息到Excel表格中,用户可以查看失败原因后进行针对性处理。对于网络问题,可以尝试重新上传;对于格式问题,建议转换为TikTok支持的视频格式(MP4、MOV等)。

2. 如何设置视频封面?

  • 问题原因:部分用户可能不清楚如何为视频设置封面。
  • 处理建议:在Excel表格中指定封面图片路径,工具会自动上传并设置为视频封面。建议使用清晰、吸引人的图片作为封面,以提高视频点击率。

3. 视频权限设置有哪些选项?

  • 问题原因:用户可能不清楚TikTok的视频权限设置。
  • 处理建议:工具支持设置"仅自己"、“公开"等权限选项。对于测试视频,建议先设置为"仅自己”;对于正式发布的视频,可以设置为"公开"以获得更多曝光。

4. 如何提高上传速度?

  • 问题原因:视频文件过大或网络带宽不足可能导致上传速度慢。
  • 处理建议:建议压缩视频文件大小,确保网络连接稳定。同时,可以在非高峰时段进行批量上传,以提高上传效率。

六、源码下载

  1. 应用市场

  2. 私聊

七、后续扩展方向

  1. 多平台支持:扩展支持其他短视频平台,如抖音、快手、YouTube Shorts等,实现一站式多平台发布。

  2. 智能优化:添加视频内容分析功能,自动生成优化的标题和标签,提高视频曝光率。

  3. 定时发布:增加定时发布功能,用户可以设置视频发布时间,工具自动在指定时间上传发布。

  4. 数据统计:添加视频数据统计功能,自动收集和分析视频播放量、点赞数、评论数等数据。

  5. AI辅助创作:集成AI生成视频描述、自动剪辑等功能,进一步提高内容创作效率。



  • 作者:RPA+AI十二工作室

欢迎关注我的CSDN博客,获取更多RPA自动化开发技巧和项目源码。如有问题或合作意向,可私聊我。


版权声明:本文档内容仅供学习交流使用,未经作者允许,请勿用于商业用途。

如果觉得本文对你有帮助,欢迎分享给更多朋友,关注我的CSDN博客,获取更多RPA自动化开发技巧和项目源码更新。

任何问题或建议,欢迎在评论区留言!