首页 > 其他分享 >抖音SEO矩阵系统如何运营?如何开发?

抖音SEO矩阵系统如何运营?如何开发?

时间:2023-03-18 19:07:18浏览次数:29  
标签:count 视频 item 如何 抖音 video time SEO model


抖音SEO,顾名思义抖音搜索排名优化,目前短视频平台如火如荼,抖音也凭借自身优势,迅猛发展,据相关数据统计,目前抖音平台日活用户已超8亿,抖音搜索超4亿,商业价值巨大,这无疑也是2023年企业入驻抖音可以把握的新一轮的流量红利。


那么企业应该如何借助抖音实现价值转化呢?

答案只有两个字“矩阵”

1. 什么是抖音账号矩阵?

抖音账号矩阵是账号运营的高阶玩法,指一个运营主体开设或联动多个账号,做账号之间相关引流,诱导流量分类,转化精准流量,以账号分组的形式,实现企业曝光价值最大化。

2. 抖音矩阵的几种具体玩法?

(1)不同的ip合拍作品

(2)关注账号里只留矩阵内部账号

(3)标题中@矩阵账号

(4)评论中@矩阵号

(5)通过个性签名引流

不同平台的矩阵运营方法也是共通的,视觉志创始人沙小皮说过:“做矩阵一般有两点考虑,扩大用户覆盖和增加营收”

3. 抖音矩阵系统如何开发?

都应矩阵系统前端采用vue和React技术语言,后端采用PHP后台技术语言。首先,我们需要去抖音开放平台申请开放平台网页的授权接口和视频分发接口。

抖音官方申请流程:

注册官方开放平台账号-应用服务商-相关申请-申请权限-等待审批。

同样,我们可以嫁接其他平台,达到多平台矩阵的目的。这里需要根据各平台官方开发者的背景做一个应用。至少现在我们已经收录了(快手、今日头条、西瓜视频)并打算添加(b站,好看视频等等)。

抖音SEO矩阵系统如何运营?如何开发?_ide

抖音SEO矩阵系统如何运营?如何开发?_sql_02

编辑

下面这里重点说下视频制作板块的核心点:
市面上大多数的视频制作都是阿里云的混剪接口
混剪的代码逻辑:
智能混剪合成:仅需上传1个长度为15-60秒的长视频即可,系统将抽取音频,随后裁剪为多个小片段,用户发布视频时系统随机选择该模式下多个片段进行组合,再和抽取的音频合成。
智能随机组合:需上传至少6个(越多越好)6秒以内的短视频,系统将视频转静音,用户发布视频时系统随机选择该模式下的5个短视频素材随机组合,再和音频素材合成。
场景顺序组合:需在5个场景中分别上传至少1个或多个6秒以内的短视频,系统将视频转静音,用户发布视频时系统在每个场景中随机选择1个短视频素材组合,再和音频素材合成。
随机选定发布:需上传尽可能多的不限长度的短视频,用户发布视频时系统随机选择该模式下的特定视频,发布后将自动删除已使用视频素材。
*:模式一旦选定后,请勿轻易切换视频合成模式,否则将导致素材清空,缓存视频清空。
 

class App_Controller_Dydqtshoppc_VideoController extends App_Controller_Dydqtshoppc_InitController {
const VIDEO_PLAY_POSTER = "/public/dydqt/img/video-zw.png";
//支持的视频平台
private $platform = [
'dou_yin' => '抖音',
'kuai_shou' => '快手',
'bai_jia_hao' => '好看视频',
'xiao_hong_shu'=> '小红书',
'xi_gua' => '西瓜',
'tou_tiao' => '头条',
'bili_bili' => '哔哩哔哩',
];
/*
* AI视频创意工作台
*/
public function indexAction() {
//面包屑
$breadcrumbs = [
['title' => 'AI视频创意', 'link' => '#zhyy'],
['title' => '工作台', 'link' => '/video/index'],
];
$this->buildBreadcrumbs($breadcrumbs);
//视频数量统计
$collect_model = new App_Model_Douyin_MysqlCollectShopStorage();
$collect_data = $collect_model->getCollectSurplusBySid($this->sid);
//视频创意统计
$video_model = new App_Model_Douyin_MysqlVideoStorage();
$vt_where = [
['name' => 'dv_s_id', 'oper' => '=', 'value' => $this->sid]
];
$video_total = $video_model->getCount($vt_where);
//素材数量统计
$attachment_model = new App_Model_Douyin_MysqlShopAttachmentStorage();
$attachment_count = $attachment_model->getTotalByGroup($this->sid);
$count_data = [
'image_count' => 0,
'image_size' => '0B',
'audio_count' => 0,
'audio_size' => '0B',
'video_count' => 0,
'video_size' => '0B',
];
foreach ($attachment_count as $count) {
switch ($count['dsa_type']) {
case 1 :
$count_data['image_count'] = $count['total'];
$count_data['image_size'] = plum_compute_byte($count['size']);
break;
case 2 :
$count_data['audio_count'] = $count['total'];
$count_data['audio_size'] = plum_compute_byte($count['size']);
break;
case 3 :
$count_data['video_count'] = $count['total'];
$count_data['video_size'] = plum_compute_byte($count['size']);
break;
}
}
$count_data['video_remain'] = $collect_data['cs_surplus'];
$count_data['video_create'] = $collect_data['cs_rest_num'];
$count_data['video_release']= $collect_data['cs_scan_count'];
$count_data['video_download'] = $collect_data['cs_download_num'];
$count_data['video_total'] = $video_total;
$this->output['count_data'] = $count_data;
if ($this->front_module == 'eui') {
$this->displaySmarty('dspui/video/index.html');
} else {
$this->displaySmarty('dydqtshoppc/video/index.tpl');
}
}
public function itemListAction() {
//面包屑
$breadcrumbs = [
['title' => 'AI视频创意', 'link' => '#'],
['title' => '创意工程', 'link' => '#'],
];
$this->buildBreadcrumbs($breadcrumbs);

$mode = $this->request->getIntParam('mode', 0);
$this->output['mode'] = $mode;
$time_range = $this->request->getStrParam('time_range');
$keyword_type = $this->request->getStrParam('keyword_type');
$keyword = $this->request->getStrParam('keyword');

$where = [
['name' => 'dv_s_id', 'oper' => '=', 'value' => $this->sid]
];
if(!empty($time_range)){
$add_time_range_arr = explode('~',$time_range);

$where[] = ['name' => 'dv_create_time', 'oper' => '>=', 'value' => strtotime($add_time_range_arr[0])];
$where[] = ['name' => 'dv_create_time', 'oper' => '<', 'value' => strtotime($add_time_range_arr[1]) + 86400];
}
if(!empty($keyword_type)){
$where[] = ['name' => $keyword_type, 'oper' => 'like', 'value' => "%{$keyword}%"];
}
if ($mode > 0) {
$where[] = ['name' => 'dv_video_mode', 'oper' => '=', 'value' => $mode];
}

$sort = ['dv_create_time' => 'DESC'];
//获取视频列表
$Video_model = new App_Model_Douyin_MysqlVideoStorage();
$video_list = $Video_model->getList($where,$this->index,$this->count,$sort);
$temp_video_model = new App_Model_Douyin_MysqlVideoTempVideoStorage($this->sid);
$pailie_video_model = new App_Model_Douyin_MysqlVideoMaterialPailieStorage();
foreach ($video_list as &$item) {
$item['cache_num'] = $temp_video_model->getTempVideoCountByItem($item['dv_id']);
$item['pailie'] = $pailie_video_model->getRowByDvid($item['dv_id']);

$progerss = 40;
if ($item['video_num'] > 0 || $item['image_num'] > 0) {
$progerss += 10;
}
if ($item['audio_num'] > 0 || $item['write_num'] > 0) {
$progerss += 10;
}
if ($item['pailie']['dvmp_is_zuhe']) {
$progerss += 20;
}
if ($item['cache_num'] > 0) {
$progerss += 20;
}

$item['progress'] = $progerss;
}

//计算分页
$active_list_all = $Video_model->getCount($where);
$page_libs = new Libs_Pagination_Paginator($active_list_all,$this->count,'jquery',true);
$pageHtml = $page_libs->render();

$this->output['time_range'] = $time_range;
$this->output['keyword_type'] = $keyword_type;
$this->output['keyword'] = $keyword;
$this->output['video_list'] = $video_list;
$this->output['pageHtml'] = $pageHtml;

$this->output['progress_line'] = [
20 => ['color' => 'red', 'tip' => '创建创意工程已完成'],
40 => ['color' => 'red', 'tip' => '选择混剪模式已完成'],
50 => ['color' => 'orange', 'tip' => '添加音视频素材未完成'],
60 => ['color' => 'orange', 'tip' => '添加音视频素材已完成'],
70 => ['color' => 'blue', 'tip' => '视频混剪组合已完成'],
80 => ['color' => 'blue', 'tip' => '视频混剪组合已完成'],
90 => ['color' => 'green', 'tip' => '视频缓存已完成'],
100 => ['color' => 'green', 'tip' => '工程所有步骤已完成'],
];
$this->output_mode_link();
$this->displaySmarty('dydqtshoppc/video/item-list.tpl');
}
/*
* 剪辑模式链接
*/
private function output_mode_link() {
$video_mixed_mode = plum_parse_config('project_mixed_mode', 'dydqt/project');
array_unshift($video_mixed_mode, [
'title' => '全部',
'mode' => 0,
'desc' => '',
]);

foreach ($video_mixed_mode as &$item) {
$item['link'] = "/dydqtshoppc/video/itemList?mode=".$item['mode'];
}
$this->output['video_mixed_mode'] = $video_mixed_mode;
}
/**
* 视频列表
*/
public function videoListAction() {
//面包屑
$breadcrumbs = [
['title' => '账号运营', 'link' => '#zhyy'],
['title' => '短视频管理', 'link' => '/video/videoList'],
];
$this->buildBreadcrumbs($breadcrumbs);

$add_time_range = $this->request->getStrParam('add_time_range');
$keyword_type = $this->request->getStrParam('keyword_type');
$keyword = $this->request->getStrParam('keyword');

$where = [
['name' => 'dv_s_id', 'oper' => '=', 'value' => $this->sid]
];
if(!empty($add_time_range)){
$add_time_range_arr = explode('~',$add_time_range);

$where[] = ['name' => 'dv_create_time', 'oper' => '>=', 'value' => strtotime($add_time_range_arr[0])];
$where[] = ['name' => 'dv_create_time', 'oper' => '<', 'value' => strtotime($add_time_range_arr[1]) + 86400];
}
if(!empty($keyword_type)){
$where[] = ['name' => $keyword_type, 'oper' => 'like', 'value' => "%{$keyword}%"];
}

$sort = ['dv_create_time' => 'DESC'];
//获取视频列表
$Video_model = new App_Model_Douyin_MysqlVideoStorage();
$video_list = $Video_model->getList($where,$this->index,$this->count,$sort);
$material_model = new App_Model_Douyin_MysqlVideoMaterialStorage($this->sid);
$temp_video_model = new App_Model_Douyin_MysqlVideoTempVideoStorage($this->sid);
$pailie_video_model = new App_Model_Douyin_MysqlVideoMaterialPailieStorage();
foreach ($video_list as &$item) {
$item['video_num'] = $material_model->getMaterialCountByVideo($item['dv_id'], 1);
$item['audio_num'] = $material_model->getMaterialCountByVideo($item['dv_id'], 2);
$item['image_num'] = $material_model->getMaterialCountByVideo($item['dv_id'], 3);
$item['title_num'] = $material_model->getMaterialCountByVideo($item['dv_id'], 4);
$item['write_num'] = $material_model->getMaterialCountByVideo($item['dv_id'], 5);
$item['cache_num'] = $temp_video_model->getTempVideoCountByItem($item['dv_id']);
$item['pailie'] = $pailie_video_model->getRowByDvid($item['dv_id']);

$progerss = 40;
if ($item['video_num'] > 0 || $item['image_num'] > 0) {
$progerss += 10;
}
if ($item['audio_num'] > 0 || $item['write_num'] > 0) {
$progerss += 10;
}
if ($item['pailie']['dvmp_is_zuhe']) {
$progerss += 20;
}
if ($item['cache_num'] > 0) {
$progerss += 20;
}

$item['progress'] = $progerss;
}

//计算分页
$active_list_all = $Video_model->getCount($where);
$page_libs = new Libs_Pagination_Paginator($active_list_all,$this->count,'jquery',true);
$pageHtml = $page_libs->render();

$this->output['add_time_range'] = $add_time_range;
$this->output['keyword_type'] = $keyword_type;
$this->output['keyword'] = $keyword;
$this->output['video_list'] = $video_list;
$this->output['pageHtml'] = $pageHtml;
$video_mixed_mode = plum_parse_config('project_mixed_mode', 'dydqt/project');
$this->output['video_mixed_mode'] = $video_mixed_mode;
$this->output['progress_line'] = [
20 => ['color' => 'red', 'tip' => '创建创意工程已完成'],
40 => ['color' => 'red', 'tip' => '选择混剪模式已完成'],
50 => ['color' => 'orange', 'tip' => '添加音视频素材未完成'],
60 => ['color' => 'orange', 'tip' => '添加音视频素材已完成'],
70 => ['color' => 'blue', 'tip' => '视频混剪组合已完成'],
80 => ['color' => 'blue', 'tip' => '视频混剪组合已完成'],
90 => ['color' => 'green', 'tip' => '视频缓存已完成'],
100 => ['color' => 'green', 'tip' => '工程所有步骤已完成'],
];
if ($this->front_module == 'eui') {
$this->displaySmarty('dspui/video/videoList.html');
} else {
$this->displaySmarty('dydqtshoppc/video/videoList.html');
}
}

抖音SEO矩阵系统如何运营?如何开发?_App_03

但是只是单纯的混剪不过平台去重审核的概率很大,现在平台审核的力度越来越大。
所以我们在混剪的基础上再做视频的渲染,随机抽帧,针对画面做轻微的画面切割,翻转的技术处理,这样有效的减少批量视频的重复概率。

抖音SEO矩阵系统如何运营?如何开发?_ide_04

当然,小编相信,肯定还有更多视频剪辑优化及矩阵系统的开发优化方案,也欢迎各位伙伴评论区交流讨论。 


标签:count,视频,item,如何,抖音,video,time,SEO,model
From: https://blog.51cto.com/u_16015078/6129727

相关文章

  • vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度
    vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度Author:zhoulujun Date:2023-03-06 Hits:5解决文本溢出,鼠标悬浮展示tooltips,要解决2大难题。第一个是解决文本宽......
  • webpack原理(2):ES6 module在Webpack中如何Tree-shaking构建
    Tree-shaking最早由​​打包工具Rollup​​ 提出DCE作用于模块内(webpack的DCE通过UglifyJS完成),而Tree-shaking则是在打包的时候通过模块之间的信息打包必须的代......
  • 线程池的参数如何设置?(蚂蚁一面)
    核心线程数:如果任务是CPU密集型,即计算任务比较多,可以设置线程数为核心数+1,这样可以让CPU资源得到充分利用。如果任务是IO密集型,即网络请求比较多,可以根据实际情况设......
  • blogseo
    title:Hexo博客SEO优化tags:seoabbrlink:f360date:2023-03-1523:45:43个人博客SEO优化的三大重点站点地图(Sitemap)优化配置robots.txt关键词和描述的优化配......
  • webpack原理(2):ES6 module在Webpack中如何Tree-shaking构建
    Tree-shaking最早由打包工具Rollup 提出DCE作用于模块内(webpack的DCE通过UglifyJS完成),而Tree-shaking则是在打包的时候通过模块之间的信息打包必须的代码。We......
  • vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度
    vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度Author:zhoulujun Date:2023-03-06 Hits:5解决文本溢出,鼠标悬浮展示tooltips,要解决2大难题。第一个是解决文......
  • 哔哩哔哩(bilibili)如何下载视频
    一:哔哩哔哩bilibili下载视频名称推荐在线哔哩哔哩(bilibili)视频解析下载工具哔哩哔哩下载中心、唧唧、下载姬脚本插件工具NDM、哔哩哔哩助手、增强脚本......
  • 新手如何入门性能测试?一文4个章节带你学会性能测试
    本文介绍一下性能测试的基础内容和一些学习经验,主要讲针对服务器端的性能测试。其他代码级性能测试、前端性能测试等属于比较细分的领域,建议大家有需要的时候针对性得去学......
  • UE4/5 如何查看类的继承关系
    问题由来实际开发中常常会碰到以下问题找到某个C++类被那些类所继承那些BP/脚本类继承了某个C++类一些有用的工具Rider看C++类的继承关系Rider在类名右键,(Sh......
  • 谈谈ConcurrentHashMap是如何保证线程安全的?
    jdk1.7中是采用Segment+HashEntry+ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node+CAS+Synchronized来保证并发安全进行实现......