在本地生活赛道,探店内容创作需求爆发,但真人出镜耗时、成本高、难量产。现在借助魔珐星云具身智能平台,零基础、零建模、零复杂开发,就能快速打造一个本地探店生活博主数字人,自动生成城市美食、景点推荐、本地生活攻略口播内容,实现 7×24 小时内容输出与实时互动。本文从平台介绍、环境准备、代码搭建、效果优化到内容创作,给出完整可落地指南,新手直接照着做即可上线。

一、场景介绍

1.1 本地探店数字人适配场景

本地探店生活博主数字人,聚焦城市美食、网红景点、平价好物、生活攻略四大核心场景:

  • 美食探店:推荐火锅、奶茶、特色小吃,讲解口味、人均、地址

  • 景点打卡:介绍公园、古镇、网红地,给出游玩路线、拍照机位

  • 本地攻略:分享交通、住宿、周末遛娃、平价消费技巧

  • 实时互动:用户提问 “XX 餐厅好吃吗”,数字人实时回复并口播

二、前期准备

2.1 平台注册与密钥获取

  1. 访问魔珐星云官网:https://xingyun3d.com/

  2. 注册账号→进入控制台→应用管理→创建驱动应用

  3. 选择生活探店风格数字人形象(清新 / 活力人设)

  4. 生成并保存 AppID 与 AppSecret(代码必备)

2.2 开发环境准备

  • 安装 Node.js 16+(自带 npm)

  • 代码编辑器:VS Code

  • 浏览器:Chrome/Edge

  • 基础 Vue 项目(或直接使用魔珐星云 Vue Demo)

2.3 项目基础结构

vue-local-blogger/
├── src/
│   ├── components/
│   │   └── LocalBlogger.vue  # 探店数字人主界面
│   ├── services/
│   │   ├── xingyun.service.js  # 星云SDK封装
│   │   └── llm.service.js      # 探店文案生成
│   └── main.ts
├── index.html
└── package.json

三、项目初始化与依赖安装

3.1 安装依赖

npm install

3.2 启动项目

npm run dev

访问:http://localhost:3000,默认数字人加载成功。

四、核心代码修改(探店主题适配)

4.1 配置星云 SDK(xingyun.service.js)

填入你的 AppID 和 AppSecret:

this.sdkInstance = new window.XmovAvatar({appId: '你的AppID',appSecret: '你的AppSecret',gatewayServer: 'https://nebula-agent.xingyun3d.com/user/v1/ttsa/session'})

4.2 配置探店人设(llm.service.js)

大模型提示词,锁定本地探店博主风格:

systemPrompt = '你是一个专业的本地探店生活博主,擅长美食、景点、本地生活攻略口播文案创作,语言活泼有网感'

4.3 完整主界面代码(CustomerService.vue)

<template>
  <div class="blogger-container">
    <header class="header">
      <div class="logo">
        <h1>本地探店数字人(技术演示)</h1>
        <p>美食|景点|生活攻略|实时互动</p>
      </div>
      <div class="status" :class="{connected:isConnected}">
        {{ isConnected ? '数字人已上线' : '加载中' }}
      </div>
    </header>
    <div class="main">
      <div class="avatar-section">
        <div class="avatar-box" :id="containerId"></div>
        <div class="status-text">{{ currentState }}</div>
      </div>
      <div class="chat-section">
        <div class="quick-btns">
          <button v-for="a in quickActions" :key="a.id" @click="sendQuick(a)">
            {{ a.label }}
          </button>
        </div>
        <div class="chat-history" ref="chatRef">
          <div v-for="(m,i) in chatHistory" :key="i" :class="['msg', m.type]">
            {{ m.content }}
          </div>
        </div>
        <div class="input-area">
          <input
            v-model="text"
            placeholder="输入你的问题..."
            @keyup.enter="send"
          />
          <button @click="send">发送</button>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted, nextTick } from 'vue'
import AvatarSDK from '@/services/avatar.service'
import LLM from '@/services/llm.service'

const containerId = 'avatar-box'
const isConnected = ref(false)
const currentState = ref('准备就绪')
const text = ref('')
const chatHistory = ref([])
const chatRef = ref(null)

const quickActions = [
  { id: 1, label: '美食推荐', text: '推荐一家本地好吃的平价火锅', type: 'query' },
  { id: 2, label: '景点打卡', text: '推荐一个免费的网红景点', type: 'query' },
  { id: 3, label: '周末遛娃', text: '推荐亲子游玩好去处', type: 'query' },
  { id: 4, label: '平价奶茶', text: '推荐性价比高的奶茶店', type: 'query' },
  { id: 5, label: '一日游', text: '帮我规划一条城市一日游路线', type: 'query' }
]

onMounted(async () => {
  await AvatarSDK.initSDK({
    appId: '你的AppID',
    appSecret: '你的AppSecret',
    onStateChange: (s) => {
      currentState.value = s
      if (s === 'speak') isConnected.value = true
    },
    onSubtitle: (t) => add('avatar', t)
  })
  add('avatar', '你好,我是本地生活数字助手,有美食、景点相关问题都可以问我。')
})

const send = async () => {
  if (!text.value.trim()) return
  add('user', text.value)
  const reply = await LLM.sendMessage(text.value)
  AvatarSDK.speak(reply)
  add('avatar', reply)
  text.value = ''
}

const sendQuick = (a) => {
  text.value = a.text
  send()
}

const add = (type, content) => {
  chatHistory.value.push({ type, content })
  nextTick(() => {
    chatRef.value.scrollTop = chatRef.value.scrollHeight
  })
}

onUnmounted(() => {
  AvatarSDK.disconnect()
})
</script>

五、效果优化与内容创作

5.1 数字人形象定制

  • 在控制台选择清新、活力型数字人形象
  • 调整发型、穿搭为休闲日常风格
  • 音色选择亲切女声,语速建议 1.1 倍

5.2 探店口播文案技巧

本地探店文案超好写,固定模板直接套用:

  • 美食:“XX 巷这家火锅绝了!人均 50+,毛肚超新鲜,欢迎体验~”

  • 景点:“免费网红公园!日落绝美,拍照超出片,地铁直达~”

  • 攻略:“周末遛娃好去处!游乐园 + 动物园,一天玩不够~”

六、常见问题排查

  1. 数字人不显示:核对 AppID/AppSecret,检查网络

  2. 文案不接地气:优化提示词,加入 “平价、接地气” 关键词

  3. 动作僵硬:选择探店适配动作(挥手、介绍)

七、总结

本文从技术实践角度,完整演示了基于具身智能平台快速搭建本地探店风格 3D 数字人的流程。整体方案具备低门槛、易部署、可量产等特点,适合用于生活服务类内容辅助创作、虚拟主播演示、互动体验项目等场景。

随着 AIGC 与具身智能技术的发展,虚拟数字人将在更多领域成为内容生产与用户互动的重要辅助工具。希望本文能为相关方向的开发者提供可参考的实践思路。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐