目录
产品功能亮点
产品介绍及开发背景
开发要求及实现流程
产品功能亮点
1. 支持多账号多平台一键 授权管理
2.支持矩阵视频批量剪辑,批量发布
3. 多平台关键词布局,提升企业及产品曝光
4. 评论区关键词自动回复,意向线索智能挖掘
5. 多账号投放数据统计,省时省力
6. 留资线索,私信线索,意向线索,智能收集
7. 7*24小时智能在线客服,实时接待提升转化
产品介绍及开发背景
云罗企客短视频矩阵系统主要是云罗科技基于抖音开放平台研发的集账号管理、视频创作。视频发布、数据统计、线索收集等为一体的短视频营销SaaS工具,致力于为通过技术为企业营销赋能。
短视频自媒体时代,各大中小企业营销方式发生了巨大的转变,从传统的“双微”模式,到现在的“南抖北快”,凡是具体流量的地方,必然少不了各大企业,短视频的巨大流量,也成为了企业争相逐鹿的新战场。面对企业巨大的营销需求,营销工具的开发与转变也变的十分重要。
开发要求及实现流程
Scope: video.create 需要申请权限 需要用户授权 该接口用于上传视频文件到文件服务器,获取视频文件video_id
(该 ID 为加密后的 ID)。该接口适用于抖音。
注意:
- 抖音的OAuth API以https://open.douyin.com/开头。
- 超过50m的视频建议采用分片上传,可以降低网关超时造成的失败。超过128m的视频必须采用分片上传。视频总大小4GB以内。单个分片建议20MB,最小5MB。
视频文件要求:
- 为了更好的观看体验,推荐上传16:9,分辨率为720p(1280x720)及以上的竖版视频。
- 支持常用视频格式,推荐使用 mp4 、webm。
- 视频文件大小不超过128M,时长在15分钟以内。
- 带品牌logo或品牌水印的视频,会命中抖音的审核逻辑,有比较大的概率导致分享视频推荐降权处理/分享视频下架处理/分享账号被封禁处理。强烈建议第三方应用自行处理好分享内容中的不合规水印。
- 视频审核逻辑与端上一致。
部分功能实现流程展示——剪辑
工作总台,所有短视频制作的数据总览统计,以及其他50+其他辅助运营工具在线跳转实用
1. 创建自己的视频计划(任务)
2. 批量根据所选模式上传所需要的素材
3. 可视化选择横屏、竖屏、标题,内容,文案布局的预设设定
4. 多个窗口投放入口,选择效果好的视频一键多账号,多平台发布投放
5. 投放数据分析,视频分析,点赞,粉丝趋势,关注,回复,意向线索概览分析
代码展示
//标题、文案配置参数
$title_font = $this->request->getStrParam('title_font');
$title_size = $this->request->getIntParam('title_size', 12);
$title_color = $this->request->getStrParam('title_color');
$title_position = $this->request->getIntParam('title_position', 80);
$write_font = $this->request->getStrParam('write_font');
$write_size = $this->request->getIntParam('write_size', 14);
$write_color = $this->request->getStrParam('write_color');
$write_position = $this->request->getIntParam('write_position', 340);
$video_bg = $this->request->getIntParam('video_bg', 1);
$sigma_val = $this->request->getStrParam('sigma');
$color_bg = $this->request->getArrParam('color');
$color_list = [];
foreach ($color_bg as $color => $val) {
array_push($color_list, $color);
}
$select_type = $this->request->getIntParam('select_type', 1);
$vcn = $this->request->getArrParam('a_vcn');
$bgm = $this->request->getIntParam('bgm', 20);
$vcn_on = [];
foreach ($vcn as $key => $val) {
if ($val == 'on') {
$vcn_on[$key] = $key;
}
}
if ($video_duration > 120) $this->displayJsonError('视频长度不建议超过2分钟');
if ($video_use < 3 || $video_use > 60) {
$this->displayJsonError('场景或组合数,需介于3-60');
}
$video_cfg = [
'title_font' => $title_font,
'title_size' => $title_size,
'title_color' => $title_color,
'title_position'=> $title_position,
'write_font' => $write_font,
'write_size' => $write_size,
'write_color' => $write_color,
'write_position'=> $write_position,
'select' => $select_type,
'vcn' => $vcn_on,
'yushu' => 50,
'yinliang' => 50,
'bgm' => $bgm,
'videobg' => $video_bg,
'bgcolor' => $color_list,
'sigma' => $sigma_val,
];
//主表数据
$updata = [
'dv_title' => $video_name,
'dv_video_mode' => $video_mixed,
'dv_video_layout' => $video_layout,
'dv_video_shot' => $video_shot,
'dv_video_count'=> $video_count,
'dv_video_use' => $video_use,
'dv_video_duration' => $video_duration,
'dv_video_open' => 0, //随机视频开幕
'dv_video_transition' => $video_transition,
'dv_video_filter' => $video_filter,
'dv_video_effect' => $video_effect,
'dv_de_id' => $select_type,//字幕配音形式
'dv_use_only' => $use_only,
'dv_use_platform' => json_encode($platform_list),
];
if (empty($dv_id)) {//新增
$indata = [
'dv_s_id' => $this->sid,
'dv_platform' => json_encode($video_cfg),
'dv_create_time'=> time(),
];
$indata = array_merge($updata, $indata);
$ret = $video_model->insertValue($indata);
} else {//编辑
$video_item = $video_model->getRowByIdSid($dv_id, $this->sid);
if (empty($video_item)) {
$this->displayJsonError('参数错误');
}
$curr_platform = json_decode($video_item['dv_platform'], 1);
$curr_platform = is_null($curr_platform) ? [] : $curr_platform;
$updata['dv_platform'] = json_encode(array_merge($curr_platform, $video_cfg));
$ret = $video_model->updateById($updata, $dv_id);
//切换模式或更改场景组合数,则需要重新生成组合
if($video_item['dv_video_mode'] != $video_mixed || $video_item['dv_video_use'] != $video_use){
//清空素材排列组合及缓存视频
$VideoMaterialPailie_model = new App_Model_Douyin_MysqlVideoMaterialPailieStorage();
$VideoMaterialPailie_model->clearPailie($dv_id);
//清除素材
$video_meta_model = new App_Model_Douyin_MysqlVideoMaterialStorage();
$vm_where = [
['name' => 'dvm_ds_id', 'oper' => '=', 'value' => $this->sid],
['name' => 'dvm_dv_id', 'oper' => '=', 'value' => $dv_id],
];
$video_meta_list = $video_meta_model->getList($vm_where, 0, 0);
foreach ($video_meta_list as $item) {
//新旧模式相同,并且视频对应场景不大于新的场景数
if ($item['dvm_video_mixed_mode'] == $video_mixed && $item['dvm_scene'] <= $video_use) {
continue;
//与新模式不同,则清除
}
//场景顺序组合,减少了场景数
/*
if ($item['dvm_scene'] > $video_use) {
}
*/
//智能混剪模式1,删除视频素材
if ($item['dvm_video_mixed_mode'] == 1 && $item['dvm_material_type'] == 1) {
$file_path = PLUM_DIR_ROOT.$item['dvm_material_content'];
if (is_file($file_path)) {
unlink($file_path);
}
}
//视频素材删除ts素材
if ($item['dvm_material_type'] == 1) {
$file_path = PLUM_DIR_ROOT.$item['dvm_material_videots'];
if (is_file($file_path)) {
unlink($file_path);
}
}