【应用快速开发 02】儿童故事天地,一键生成故事内容

99 阅读2分钟

项目介绍

story.and2long.tech

项目背景

最近,我家孩子非常喜欢听故事,就想着自己动手写一个儿童故事软件吧。 一方面为了试试各种 AI IDE,一方面试一试各种大模型的内容输出质量。

项目需求

  1. 首页的故事系列展示
  2. 故事播放列表
  3. 音乐播放器,支持后台播放
  4. 倒计时关闭

功能截屏

应用商店下载

App 开放源代码

github.com/and2long/st…

内容生成

儿童故事主要使用【扣子工作流】来实现。

主要流程为:

  1. 用豆包来给我们自动生成很多的故事标题
  2. 调用【大模型】节点来根据故事来生成完整的故事内容
  3. 调用【语音合成】节点将故事内容的文字转为语音文件
  4. 将以上所有信息整理到数据库中,然后写一个后台服务来提供这些内容让App去使用

工作流搭建好之后,我们就可以写一个Python脚本来批量生产儿童故事内容了。

这里提供一下自动生成内容并存入 csv 文件的 Python 脚本核心代码:

# Our official coze sdk for Python [cozepy](https://github.com/coze-dev/coze-py)

import csv
import json
import os

from cozepy import COZE_CN_BASE_URL, Coze, TokenAuth

coze_api_base = COZE_CN_BASE_URL
COZE_API_TOKEN = os.getenv('COZE_API_TOKEN')
WORKFLOW_ID = os.getenv('WORKFLOW_ID')
# 生成故事
coze = Coze(auth=TokenAuth(token=COZE_API_TOKEN), base_url=coze_api_base)


def generate_story(category, title) -> dict:
    workflow = coze.workflows.runs.create(
        workflow_id=WORKFLOW_ID,
        parameters={
            "input": f"{category} - {title}"
        }
    )
    return json.loads(workflow.data)


category = "孙悟空"
titles = [
    '大闹天宫',
]

# Define the path to the CSV file
csv_path = "data/stories.csv"

# Create the data folder if it doesn't exist
if not os.path.exists("data"):
    os.makedirs("data")

# Write headers if file doesn't exist
if not os.path.exists(csv_path):
    with open(csv_path, 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow(["category_name", "name", "url_gaoleng", "url_roumei", "url_wennuan", "url_yangguang"])

for index, title in enumerate(titles):
    print(f"{index + 1}. {title}")
    data = generate_story(category, title)
    # Append the data to CSV file
    with open(csv_path, 'a', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow([category, title, data['url_gaoleng'], data['url_roumei'], data['url_wennuan'], data['url_yangguang']])

踩坑记录

  1. 苹果商店,这个儿童故事软件无法发布到 中国大陆。
    • 因为根据中国法律规定,在网络上分发音频内容这种行为,需要提供图书出版资质证明。