扣子智能体实战:一键生成公众号图文,AI时代文盲也能写公众号,赚钱秘籍

news2024/9/21 1:20:36

文章目录

  • 一,需求简述
  • 二,智能体制作
    • 1,智能体人设和技能
    • 2,流程开发
      • 2.1 设置开始节点
      • 2.2 增加一个生成标题的大模型节点
      • 2.3 增加一个代码节点
    • 2.4 增加一个插件节点用以生成文章配图
      • 2.4 增加一个大模型节点-根据标题和思路生成文章大纲
      • 2.5 增加一个代码节点-提取大纲以便后续使用
      • 2.6 增加五个大模型节点用于生成对应大纲的每个部分的内
      • 2.7 增加5个文生图插件节点
      • 2.8 汇总结点

在这里插入图片描述

一,需求简述

公众号文章的流程梳理:

  1. 用户输入文章主题
  2. 工作流节点自动根据文章主题拟订多个文章备选标题和创作思路
  3. 通过文章标题生成封面图
  4. 通过文章主题、标题和创作思路拟订文章大纲
  5. 结合文章大纲的主題和要求,分批次生成内容,并进行配图
  6. 对生成的内容进行整合
  7. 调用插件上传内容到微信草稿箱
  8. 人工审核校对,内容无误后,发表文章到微信公众号
内容无误
需修改
用户输入文章主题
自动拟订备选标题与创作思路
生成封面图
拟订文章大纲
生成内容并配图
整合内容
上传至微信草稿箱
人工审核校对
发表文章
返回整合内容

说明:分批次生成文章内容的主要原因是目前大模型不太擅长长文本的内容创作

二,智能体制作

1,智能体人设和技能

# 角色
你是一个专业且严谨的自媒体写作助手,能够高效引导用户完整、准确地填写文章所需信息,必填项有 AppID、AppSecret、文章主题、文章作者。

## 技能
### 技能 1: 文章信息收集
1. 当用户开始填写信息时,依序问询 AppID、AppSecret、文章主题、文章作者。
2. 若发现任何一项空缺,即刻提醒用户予以补充。
3. 当上述所有信息均填写完毕,向用户反馈:
=====
您填写的信息为:
AppID:{AppID}
AppSecret:{AppSecret}
文章主题:{文章主题}
文章作者:{文章作者}
请确认是否有误,回复“确认”将开始自动生成及发布文章;回复其他内容将重新开始文章信息收集流程。
=====

### 技能 2: 处理确认信息
1. 若用户回复“确认”,将{AppID}、{AppSecret}、{文章主题}、{文章作者}当作参数,调用“auto_post_article_to_wechat”工作流。
2. 若用户输入其他内容,重新开始文章信息收集流程。

## 限制:
- 严格按照流程收集和处理信息,不得跳过任何步骤。
- 仅专注处理与文章信息收集相关事宜,坚决拒绝回答无关问题。

2,流程开发

创作一篇图文并茂的公众号文章是一个比较复杂的过程,所以需要工作流支持。

2.1 设置开始节点

需要用户输入:

  • app_id ,微信公众号的app_id,用来投递文章到公众号草稿箱
  • app_secret,微信公众号app_secret,用来投递草稿箱
  • theme,文章主题
  • author,文章作者
    在这里插入图片描述

2.2 增加一个生成标题的大模型节点

在这里插入图片描述

这个标题用于根据主题生成爆款标题,提示词包含了一些爆款标题的经验总结,大模型基于这些经验生成9种不同类型的标题,如下:

角色
你是一个微信公众号爆款标题创作专家,能够精准针对不同专业领域的需求,生成极具吸引力的文章标题,现在请你根据主题{{theme}},生成爆款标题,以利于后续不同智能体协同完成文章创作。
 
 
技能
技能 1: 关键词吸睛式标题创作
1. 了解用户给定的主题,确定相关的对号入座关键词(如年龄、性别、地区、职业、星座等)、升维词(将普通词升维成更吸睛的词)以及可抱大腿的名人、热点话题、KOL 等元素。
2. 结合这些元素,创作关键词吸睛式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "解释标题中关键词、升维词、抱大腿元素的运用"
}
 
 
技能 2: 冲突反差式标题创作
1. 分析用户给定的主题,找到可以形成数字对比或造成认知矛盾的点。
2. 基于这些点,创作冲突反差式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "说明数字对比或认知矛盾的体现"
}
 
 
技能 3: 提问式标题创作
1. 深入理解用户主题,判断是否为干货教程类。
2. 如果是,根据纯痛点疑问或自问自答的格式创作提问式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "解释是纯痛点疑问还是自问自答,以及为何这样提问"
}
 
 
技能 4: 悬念式标题创作
1. 挖掘用户主题中的悬念元素。
2. 采用省略号留白或描述具体场景的方式创作悬念式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "说明是省略号留白还是场景描述,以及悬念的设置"
}
 
 
技能 5: 场景式标题创作
1. 熟悉用户主题,描绘与读者密切相关的具体场景。
2. 创作让读者能够感同身受、产生共鸣的场景式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "阐述场景的选取和与读者的关联"
}
 
 
技能 6: 经验分享式标题创作
1. 明确用户主题中的经验、干货技巧。
2. 直接在标题中透露这些内容,创作经验分享式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "说明经验、干货技巧在标题中的体现"
}
 
 
技能 7: 情绪式标题创作
1. 洞察用户主题,分析可能引发的读者情绪。
2. 以煽动情绪的方式创作情绪式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "解释所煽动的情绪类型和原因"
}
 
 
技能 8: 强调式标题创作
1. 把握用户主题的重点和关键。
2. 使用强调词(如最好、注意、必须、一定、千万、刚刚等)创作强调式标题。回复示例:
{
  "标题": "生成的标题",
  "思路": "说明强调词的运用和强调的效果"
}
 
 
技能 9: 直言式标题创作
1. 清晰理解用户主题的核心内容。
2. 以简洁明了的方式创作直言式标题,直接阐明主题核心。回复示例:
{
  "标题": "生成的标题",
  "思路": "解释标题如何直接表达核心内容"
}
 
 
技能 10:按照要求进行json格式输出,不要输出其他信息,格式:
[
  {
    "title_type": "关键词吸睛式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "冲突反差式 ",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "提问式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "悬念式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "场景式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "经验分享式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "情绪式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "强调式",
    "title": "示例标题",
    "idea": "思路",
  },
  {
    "title_type": "直言式",
    "title": "示例标题",
    "idea": "思路",
  },
] 
 
 
限制:
- 所生成的标题必须紧密围绕用户给定的主题,不得出现违禁敏感词。
- 标题要符合微信公众号爆款标题的特点和要求。
- 每个回复示例都要按照给定的格式进行组织。

2.3 增加一个代码节点

这个节点的作用是将爆款标题大模型生成的标题进行解析,方便后续的节点引用,否则后面的结点不方便使用这些混在一坨的标题。

这个工作流为了演示,直接选择生成的9个标题中的第一个标题,后续可以优化:

  • 选评分最高的标题
  • 每个标题都生成一篇文章

代码节点的代码参考:

import json

async def main(args: Args) -> Output:
    params = args.params
    data_array = json.loads(params["input"])

    # 为了简化工作流,这里默认选第一个
    data = data_array[0]

    ret: Output = {
        "data": data
    }
    return ret

注意代码节点的输出:
在这里插入图片描述

2.4 增加一个插件节点用以生成文章配图

使用ByteArtist文生图插件。

在这里插入图片描述

这个文生图插件需要配置几个关键的参数,微信公众号的图片默认是600*200,所以不要修改这两个数字。

  • width 图片宽度
  • height 图片高度
  • prompt 生成图片的提示词

在这里插入图片描述

2.4 增加一个大模型节点-根据标题和思路生成文章大纲

前面的代码解析出了标题title和亮点思路idea,我们根据这两个关键内容生成文章大纲,文章大纲分为5部分,后续根据文章大纲逐一生成正文内容。

之所以需要根据文章大纲逐一生成内容,原因就在于现在的大模型的长文创作能力有限,所以要用分而治之的思想。

在这里插入图片描述

提示词如下:

# 角色
你是一个精通各专业领域的文章大纲创作专家,能够精准针对不同专业领域的需求,构建条理清晰、分工明确的文章大纲,现在请你根据主题{{theme}}、标题{{title}}和思路{{idea}},生成文章大纲,确保大纲各部分相互独立、界限清晰,便于后续不同智能体协同完成文章创作。

## 技能
### 技能 1: 分析文章需求所属领域
1. 仔细研究用户提供的主题主题{{theme}}、标题{{title}},准确判断其所属的专业领域。
2. 依据判断结果,调用相应领域的专业知识和数据。

### 技能 2: 创作平均拆分的大纲
1. 将文章需求平均划分为 5 个部分,确保各部分内容均衡。
2. 为每个部分设定清晰明确、简洁扼要的标题。

### 技能 3: 制定具体编写要求
1. 对每个部分的编写内容进行详细描述,明确具体的创作方向和重点。
2. 默认每部分 300 字的标准,合理设定各部分的字数限制。

### 技能 4:按照要求进行json格式输出,不要输出其他信息,格式:
{ 
  "第一部分大纲标题": "示例标题 1",
  "第一部分编写要求": "详细描述编写这部分的具体要求,包括内容重点、字数限制等",
  "第二部分大纲标题": "示例标题 2",
  "第二部分编写要求": "详细描述编写这部分的具体要求,包括内容重点、字数限制等",
   "第三部分大纲标题": "示例标题 3",
  "第三部分编写要求": "详细描述编写这部分的具体要求,包括内容重点、字数限制等",
  "第四部分大纲标题": "示例标题 4",
  "第四部分编写要求": "详细描述编写这部分的具体要求,包括内容重点、字数限制等",
  "第五部分大纲标题": "示例标题 5",
  "第五部分编写要求": "详细描述编写这部分的具体要求,包括内容重点、字数限制等"
}

## 限制
- 不得出现违禁敏感词。
- 严格遵循给定的格式输出大纲,不得添加任何无关信息。
- 保证大纲的 5 个部分无重叠、无冲突,边界清晰。
- 仅依据用户提供的主题进行创作,不自行扩展或联想。
- 所调用的专业知识和数据必须准确、可靠。

2.5 增加一个代码节点-提取大纲以便后续使用

这个节点的作用是提取前一个大模型节点生成的大纲。

在这里插入图片描述

参考代码如下:

import json

async def main(args: Args) -> Output:
    params = args.params
    data = json.loads(params["input"])
    t1 = data.get("第一部分大纲标题")
    r1 = data.get("第一部分编写要求")
    t2 = data.get("第二部分大纲标题")
    r2 = data.get("第二部分编写要求")
    t3 = data.get("第三部分大纲标题")
    r3 = data.get("第三部分编写要求")
    t4 = data.get("第四部分大纲标题")
    r4 = data.get("第四部分编写要求")
    t5 = data.get("第五部分大纲标题")
    r5 = data.get("第五部分编写要求")
    

    ret: Output = {
        "t1": t1,
        "r1": r1,
        "t2": t2,
        "r2": r2,
        "t3": t3,
        "r3": r3,
        "t4": t4,
        "r4": r4,
        "t5": t5,
        "r5": r5,
    } 

    return ret

2.6 增加五个大模型节点用于生成对应大纲的每个部分的内

在这里插入图片描述
每个模型的提示词完全一样,注意,每个模型的输入的引用不一样,第一部分对应t1和r1,第二部分对应t2和r2,以此类推:

# 角色
你是一个专业的文章创作智能体,能够出色地分工协作。根据给定的完整大纲{{full_outline}}要求,精心创作{{t}}部分的内容,同时确保与整个大纲协调一致,自然融合,无任何冲突。

## 技能
### 技能 1: 参考完整大纲
1. 仔细阅读并理解{{full_outline}}的内容。
2. 明确{{r}}在大纲中的位置和作用。

### 技能 2: 创作第一部分文章内容
1. 严格按照{{r}}进行创作,尤其注意字数限制。
2. 准确分析文章所属类别专业,调用专业数据,确保内容专业严谨。


## 限制
- 不得出现违禁敏感词。
- 仅针对{{t}}进行创作,不涉及其他部分。
- 严格遵循规则要求,保证内容质量和格式规范。
- 所创作的内容必须基于给定的信息和要求,不得随意发挥。

2.7 增加5个文生图插件节点

为每个部分都生成一张图片,所以增加5个节点,用以生成图片。

在这里插入图片描述

5个节点的输入区别在于prompt不同,使用大纲提取结点提取出来的t1~t5作为提示词。

在这里插入图片描述

2.8 汇总结点

将前面生成的图片和文字整合起来成为一篇公众号文章。

这是一个代码节点,代码如下。

async def main(args: Args) -> Output:
    params = args.params

    t1 = params["t1"]
    t2 = params["t2"]
    t3 = params["t3"]
    t4 = params["t4"]
    t5 = params["t5"]

    t1_output = params["t1_output"]
    t2_output = params["t2_output"]
    t3_output = params["t3_output"]
    t4_output = params["t4_output"]
    t5_output = params["t5_output"]

    t1_img = params["t1_img"]
    t2_img = params["t2_img"]
    t3_img = params["t3_img"]
    t4_img = params["t4_img"]
    t5_img = params["t5_img"]

    
    content = f"""# {t1}\n\n{t1_output}\n\n![]({t1_img})\n\n# {t2}\n\n{t2_output}\n\n![]({t2_img})\n\n# {t3}\n\n{t3_output}\n\n![]({t3_img})\n\n# {t4}\n\n{t4_output}\n\n![]({t4_img})\n\n# {t5}\n\n{t5_output}\n\n![]({t5_img})\n\n"""

    ret: Output = {
        "content": content
    }
    return ret

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2150720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel--WPS 函数与公式技巧(轻松搞定各类排名)

一、直接按成绩或数值的排序(rank函数轻松搞定) 以上函数非常简单,记住两点: 1.rank排名同分作为同一名次,后面的名次需要占位,如,以上两个70分,同为第8名,那么第9名将被…

Shader 中的光源

1、Shader 开发中常用的光源属性 Unity当中一共支持四种光源类型: 平行光(Directional)点光源(Point)聚光灯(Spot)面光源(Area)— 面光源仅在烘焙时有用 不管光源类型到…

可视化工具箱-Visualization Toolkit(VTK)

一、Visualization Toolkit(VTK)简概 可视化工具箱(VTK),是一个用于3D计算机图形、图像处理和科学可视化的开源软件系统,其包含C类库和Tcl/Tk、Java与python的解释型接口层。VTK支持各种可视化算法&#xf…

软设9.20

1 已知一个文件中出现的各字符及其对应的频率如下表所示。若采用定长编码,则该文件中字符的码长应为()。若采用Hufman编码,则字符序列“face”的编码应为()。 1.() A.2 B.3 C.4 D.5 2.() A.110001001101…

小程序构建npm失败

小程序构建npm失败 项目工程结构说明解决方法引入依赖导致的其他问题 今天在初始化后的小程序中引入TDesign组件库,构建npm时报错。 项目工程结构说明 初始化后的项目中,包含miniprogram文件夹和一些项目配置文件,在project.config.json文件中…

VS运行程序时报错--无法定位程序输入点

发现问题: VS 在运行程序时,报错: 找到原因: 因为我在替换动态库的时候,只替换了lib库,没有替换运行目录下的dll库,运行时候的dll与程序中的lib库不对应。 替换库后就能解决这个问题。

秋意渐浓,温暖筹备——铁路职工御寒劳保鞋,寒冬无阻!

随着秋意渐浓,气温逐渐走低,冬日的寒风已在不远处蓄势待发。对于坚守在铁路一线的工友们来说,这不仅是季节的变换,更是工作装备升级换代的信号。意味着需要更加注重防寒保暖,以确保在寒冷的天气中能够安全、高效地工作…

前端大数据渲染:虚拟列表、触底加载与分堆渲染方案

前言 针对表格展示数据,用户提出要求前端在表格下面有一展示多少条数据的选项,如果要求一次性展示10000条数据,如果直接染会造成页面的卡顿,渲染速度下降,内容展示慢,如果有操作,操作会卡顿 下面总结常见…

工程师 - PFM介绍

在电子电路设计中,PFM(Pulse Frequency Modulation,脉冲频率调制)是一种调制技术,其主要特点是在负载变化时调整脉冲的频率,而保持脉冲的宽度(时间长度)相对恒定。与PWM(…

lambda 自调用递归

从前序与中序遍历序列构造二叉树 官方解析实在是记不住&#xff0c;翻别人的题解发现了一个有意思的写法 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {auto dfs [](auto&& dfs, auto&&…

深度学习-图像处理篇1.1-1.2神经网络

1.1卷积神经网络基础 卷积层 对彩色RGB图像进行卷积 1.卷积核的通道数与输入特征层的通道数相同 2.卷积输出的特征矩阵通道数与卷积核个数相同 池化层 池化中一般池化核大小和步长大小一样 思考 加上偏移量bias该如何计算? 卷积计算时加上偏移量即可 加上激活函数该如何计…

Nomad Web服务终于成熟了!

大家好&#xff0c;才是真的好。 9月份HCL Notes/Domino相关产品发布的还真不少&#xff0c;前脚刚发布了HCL Notes Domino 14.5 EA1&#xff0c;后脚就迎来了Notes Domino 14.0FP2IF1&#xff0c;还有Nomad 1.0.13版本。 在我的记忆中&#xff0c;他们不喜欢数字13&#xff…

分布式消息中间件kafka

文章目录 什么是kafka?整体架构 kafka核心概念1. 生产者 (Producer)2. 消费者 (Consumer)3. 主题 (Topic)4. 分区 (Partition)5. 经纪人 (Broker)6. 复制 (Replication)7. 消费者组 (Consumer Group)8. 日志段 (Log Segment) 主要功能1. 高吞吐量2. 可靠的消息传递3. 发布/订阅…

打印菱形(图像打印)

//打印菱形 // ---* // *** // ***** // ******* // ***** // *** // * //一共需要line行&#xff0c;分成两边&#xff0c;上半部分需要line/21行 //下半部分需要line/2行 #include<stdio.h> #define L 11 //行 #define R 11 //列 int main() {int …

十三 系统架构设计(考点篇)试题

A 对&#xff0c;B对&#xff0c;C好像是分布式中间件吧&#xff0c;D对。选C 第一题&#xff0c;感觉肯定有交互支持&#xff0c;选B;第二B。实际答案&#xff1a;D和B。 在一个分布式系统中&#xff0c;中间件通常提供两种不同类型的支持&#xff1a; &#xff08;1&#xff…

【读书笔记-《30天自制操作系统》-23】Day24

本篇内容依然比较简单&#xff0c;主要是优化窗口功能以及开发定时器应用程序。首先是优化窗口的切换功能&#xff0c;实现通过键盘和鼠标切换窗口&#xff0c;然后是实现通过鼠标关闭窗口。接着实现不同窗口输入状态的切换&#xff0c;最后是实现定时器的API与应用程序。 1.…

mybatisplus乐观锁

使用方法&#xff1a; 1.添加version锁标记字段 2.实体类添加对应字段&#xff0c;并加上Version注解 3.添加配置类 Configuration public class MpComfig {Beanpublic MybatisPlusInterceptor mpInterceptor(){MybatisPlusInterceptor mpInterceptor new MybatisPlusIntercep…

VuePress搭建文档网站/个人博客(详细配置)主题配置-侧边栏配置

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

沟通更高效:微信群转移至企业微信操作攻略!

微信群转移到企业微信并不难&#xff0c;具体操作如下&#xff1a; 打开移动端企业微信主页&#xff0c;找到微信聊天栏中的【接收微信中的工作消息】&#xff1b; 点击【前往微信选择群聊】&#xff0c; 跳转到微信&#xff1b; 选择微信上的工作群聊&#xff0c;只能选择作…

elasticsearch同步mysql方案

文章目录 1、1. 使用数据库触发器2. 使用定时任务3. 监听MySQL二进制日志&#xff08;binlog&#xff09;4. 使用数据管道5. 使用第三方工具或服务6. 编写自定义脚本注意事项 2、1. 使用Logstash步骤&#xff1a;示例配置&#xff1a; 2. 使用Debezium步骤&#xff1a; 3. 自定…