公众号选题生成:基于HarmonyOS + ArkTS的AI智能内容规划助手开发实践

一、对齐(Align):项目背景与需求分析

1.1 项目背景

内容创作是公众号运营的核心工作,而选题则是内容创作的第一步,也是最关键的一步。一个好的选题决定了内容的传播潜力和用户价值。然而,持续产出高质量的选题对运营者来说是一个巨大的挑战——创意枯竭、选题重复、缺乏新意是常见的问题。

"公众号选题生成"应用旨在利用AI技术,帮助运营者根据领域、受众和格式要求,自动生成选题列表、大纲和关键词,实现系统化的内容规划。
在这里插入图片描述

1.2 原始需求与边界确认

核心需求:用户输入领域、受众和文章格式,AI生成选题列表、大纲和关键词。

需求边界确认:

  • 输入范围:领域(如"职场成长")、受众(如"职场新人")、文章格式(如"干货分享")
  • 输出范围:选题列表(多个选题标题)、大纲(每个选题的结构框架)、关键词(核心关键词列表)
  • 非功能需求:选题多样性、大纲结构清晰、关键词相关性强
  • 排除范围:不包含完整文章生成、不包含配图设计、不包含排版建议

1.3 用户场景分析

场景一:月度内容规划
运营者需要提前规划下个月的内容选题,AI可以快速生成一个月的选题列表。

场景二:系列内容策划
针对某个主题,需要策划系列文章,AI可以生成系列文章的大纲和衔接方案。

场景三:热点内容快速响应
遇到热点事件,需要快速生成相关选题,AI可以基于热点关键词生成多个角度。

1.4 技术栈

技术层 选择 说明
操作系统 HarmonyOS 跨设备运行
开发语言 ArkTS 静态类型安全
UI框架 ArkUI 声明式UI
架构模式 Model-Service-Page 三层架构
AI能力 大语言模型 内容生成与规划

二、架构(Architect):技术架构设计

2.1 整体架构

┌─────────────────────────────────────────────────┐
│                   Page层                          │
│   ┌─────────────────┐  ┌─────────────────────┐  │
│   │ 输入区域          │  │ 结果展示区域          │  │
│   │ - 领域/定位       │  │ - 选题列表            │  │
│   │ - 角度            │  │ - 内容大纲            │  │
│   │                   │  │ - 关键词推荐          │  │
│   └────────┬────────┘  └──────────┬──────────┘  │
│            │                      ▲              │
│            ▼                      │              │
│   ┌────────────────────────────────────────┐    │
│   │          "AI 生成" 按钮                  │    │
│   └────────────────┬───────────────────────┘    │
│                    │                            │
└────────────────────┼────────────────────────────┘
                     │
┌────────────────────┼────────────────────────────┐
│                    ▼                             │
│               Service层                          │
│   ┌────────────────────────────────────────┐    │
│   │  MPTopicService                        │    │
│   │   - generateData(input)                │    │
│   │   - 选题多样性算法                       │    │
│   │   - 大纲结构生成                        │    │
│   │   - 关键词提取                          │    │
│   └────────────────┬───────────────────────┘    │
│                    │                            │
└────────────────────┼────────────────────────────┘
                     │
┌────────────────────┼────────────────────────────┐
│                    ▼                             │
│               Model层                            │
│   ┌────────────────────────────────────────┐    │
│   │  MPTopicData                           │    │
│   │   - niche: string     (领域/定位)      │    │
│   │   - angle: string     (角度)           │    │
│   │   - topics: Record[]  (选题列表)       │    │
│   └────────────────────────────────────────┘    │
└──────────────────────────────────────────────────┘

2.2 Model层设计

export class MPTopicData {
  niche: string = ''                        // 公众号领域/定位
  angle: string = ''                        // 文章角度/切入点
  topics: Record<string, string>[] = []     // 选题列表

  constructor() {
    this.niche = ''
    this.angle = ''
    this.topics = []
  }
}

Model设计要点:

  1. niche字段:标识公众号的垂直领域,如"科技资讯"、“情感生活”、"职场成长"等。领域信息是AI生成选题的核心上下文。

  2. angle字段:标识文章的切入角度或风格,如"深度分析"、“实用教程”、"故事分享"等。角度信息帮助AI确定选题的调性。

  3. topics数组:每个元素包含选题标题、大纲、关键词等完整信息。这种结构化的设计便于前端渲染和用户浏览。

2.3 Service层设计

import { MPTopicData } from './公众号选题生成Model'

export class MPTopicService {
  private model: MPTopicData

  constructor() {
    this.model = new MPTopicData()
  }

  generateData(input: Record<string, Object>): MPTopicData {
    let result: MPTopicData = new MPTopicData()
    // Mock data generation logic based on input
    return result
  }
}

Service层核心职责:

  1. 选题多样性控制:确保生成的选题覆盖不同的角度和维度,避免重复
  2. 大纲结构生成:为每个选题生成合理的文章结构(引言、主体、结论)
  3. 关键词提取:基于领域和选题,提取相关性高、搜索量适中的关键词
  4. 格式适配:根据用户指定的文章格式(干货、故事、盘点等),调整选题风格

2.4 Page层设计

@Entry
@Component
struct MPTopicPage {
  @State inputData: Record<string, Object> = {}
  @State resultData: MPTopicData | null = null
  @State showResult: boolean = false
  private service: MPTopicService = new MPTopicService()
}

交互流程:

  1. 用户输入公众号的领域定位(如"职场成长")
  2. 输入文章的角度(如"实用技巧")
  3. 点击"AI生成"按钮
  4. 系统展示选题列表、大纲和关键词

三、原子化(Atomize):AI提示词工程原理

3.1 选题生成的提示词设计

结构化提示词模板:

你是一个专业的公众号内容策划专家。请根据以下信息,生成选题方案。

===== 公众号领域 =====
{field}

===== 目标受众 =====
{audience}

===== 文章格式 =====
{format}(可选:干货分享/情感故事/行业分析/盘点总结/教程指南/观点评论)

===== 生成要求 =====
请生成5个选题,每个选题包含:
1. 选题标题(吸引眼球,包含关键词)
2. 内容大纲(3-5个要点,结构清晰)
3. 核心关键词(3-5个)

选题要求:
- 多样性:覆盖不同角度和维度
- 实用性:对目标受众有价值
- 传播性:具有分享和讨论的潜力
- 差异化:与同领域常见选题不同

===== 输出格式(JSON)=====
{
  "topics": [
    {
      "title": "选题标题",
      "outline": ["大纲要点1", "大纲要点2", "大纲要点3"],
      "keywords": ["关键词1", "关键词2", "关键词3"]
    }
  ]
}

3.2 提示词设计关键技术

1. 多样性控制

提示词明确要求"多样性:覆盖不同角度和维度",这通过以下机制实现:

  • 采样温度控制:设置较高的温度参数(如0.8),增加输出的多样性
  • 角度约束:要求每个选题从不同的角度切入
  • 重复检测:AI自动检测并避免生成相似的选题

2. 大纲结构生成

文章大纲是选题方案的重要组成部分。提示词要求生成3-5个要点的大纲,涵盖:

  • 引言:问题提出、背景介绍
  • 主体:核心内容、方法/观点
  • 结论:总结、行动建议

3. 关键词提取

关键词提取策略:

  • 核心关键词:与选题主题直接相关
  • 长尾关键词:更具体、搜索意图明确
  • 语义相关词:与领域相关的概念和术语

3.3 选题质量评估

AI生成的选题需要经过以下维度的评估:

评估维度 标准 权重
相关性 与公众号定位一致 30%
实用性 对目标受众有价值 25%
传播性 具有分享潜力 20%
差异化 与同领域不同 15%
时效性 符合当前趋势 10%

3.4 响应解析

private parseTopicResponse(response: string): MPTopicData {
  let result: MPTopicData = new MPTopicData()
  try {
    let parsed: Record<string, Object> = JSON.parse(response) as Record<string, Object>
    result.topics = parsed['topics'] as Record<string, string>[]
  } catch (e) {
    // 兜底处理
  }
  return result
}

四、审批(Approve):核心功能实现详解

4.1 UI组件层次结构

MPTopicPage (根组件)
├── Header (导航栏)
│   ├── "← 返回" 按钮
│   ├── "公众号选题" 标题
│   └── 占位元素
├── Scroll (可滚动容器)
│   └── Column (主内容列)
│       ├── 输入区域
│       │   ├── "输入信息" 标题
│       │   ├── "领域/定位" 标签 + TextInput
│       │   └── "角度" 标签 + TextInput
│       ├── "AI 生成" 按钮
│       └── 结果区域 (条件渲染)
│           ├── "生成结果" 标题
│           ├── "选题生成" 副标题
│           ├── 选题列表(每个包含标题、大纲、关键词)
│           └── 操作按钮(收藏、导出、分享)

4.2 输入区域实现

// 领域/定位输入
Text('领域/定位')
  .fontSize(14)
  .fontWeight(FontWeight.Bold)
  .fontColor($r('app.color.text_primary'))
  .margin({ top: 12, bottom: 4 })
TextInput({ placeholder: '请输入领域/定位' })
  .fontSize(14)
  .height(44)
  .backgroundColor('#FFFFFF')
  .borderRadius(8)
  .padding({ left: 12, right: 12 })
  .onChange((val: string) => { this.inputData['niche'] = val })

// 角度输入
Text('角度')
  .fontSize(14)
  .fontWeight(FontWeight.Bold)
  .fontColor($r('app.color.text_primary'))
  .margin({ top: 12, bottom: 4 })
TextInput({ placeholder: '请输入角度' })
  .fontSize(14)
  .height(44)
  .backgroundColor('#FFFFFF')
  .borderRadius(8)
  .padding({ left: 12, right: 12 })
  .onChange((val: string) => { this.inputData['angle'] = val })

4.3 结果展示区域

if (this.showResult && this.resultData !== null) {
  Text('生成结果')
    .fontSize(18)
    .fontWeight(FontWeight.Bold)
    .fontColor($r('app.color.text_primary'))
    .width('100%')
    .margin({ top: 16, bottom: 8 })

  Text('选题生成')
    .fontSize(14)
    .fontColor($r('app.color.text_secondary'))
    .width('100%')
    .margin({ bottom: 16 })
}

4.4 页面布局

Column() {
  Row() {
    Text('← 返回')
      .onClick(() => { router.back() })
    Blank()
    Text('公众号选题')
      .fontWeight(FontWeight.Bold)
    Blank()
    Text('')
  }
  // ... 样式设置

  Scroll() {
    Column() {
      // 输入区域
      // 生成按钮
      // 结果区域
    }
  }
  .layoutWeight(1)
}
.width('100%')
.height('100%')
.backgroundColor('#F8FAFC')

五、自动化执行(Automate):用户体验优化

5.1 选题多样性增强

1. 角度轮换

在同一领域内,从不同角度生成选题,避免重复:

  • 问题解决角度:针对用户痛点提供解决方案
  • 趋势分析角度:分析行业趋势和未来方向
  • 案例分享角度:分享成功案例和经验教训
  • 对比评测角度:对比不同方案/产品的优劣

2. 格式多样化

根据用户指定的格式,调整选题风格:

  • 干货分享:实用技巧、方法总结
  • 情感故事:个人经历、情感共鸣
  • 行业分析:数据驱动、深度洞察
  • 盘点总结:清单列举、对比分析

5.2 大纲编辑功能

1. 大纲展开/折叠

每个选题的大纲默认为折叠状态,用户点击展开查看详情。这种设计节省了页面空间,避免信息过载。

2. 大纲自定义

用户可以对AI生成的大纲进行编辑和调整,包括添加/删除要点、重新排序等。

3. 大纲导出

支持将选题方案导出为Markdown或文本格式,方便在写作工具中使用。

5.3 关键词优化

1. 关键词扩展

用户可以选择某个关键词,AI自动扩展相关的长尾关键词和语义相关词。

2. 关键词热度标注

使用标签形式展示关键词,标签大小表示搜索热度,颜色表示竞争度。

3. 关键词布局建议

提示每个关键词在文章中的最佳布局位置(标题、摘要、正文)。

5.4 选题管理

1. 选题日历

将生成的选题按日期分配到日历中,形成月度内容规划。

2. 选题状态追踪

跟踪每个选题的状态(待写作、写作中、已发布),方便运营管理。

3. 选题收藏

用户可以将满意的选题收藏到个人收藏夹,方便后续使用。

六、评估(Assess):性能优化与最佳实践

6.1 ArkTS语法约束实践

1. 类型安全

// 正确:显式声明类型
@State inputData: Record<string, Object> = {}
@State resultData: MPTopicData | null = null

2. 循环渲染

// 正确:使用ForEach渲染选题列表
ForEach(this.resultData.topics, (topic: Record<string, string>, index: number) => {
  this.buildTopicCard(topic, index)
}, (topic: Record<string, string>, index: number) => index.toString())

3. 条件渲染

// 正确:使用if条件渲染
if (this.showResult && this.resultData !== null) {
  // 渲染结果
}

6.2 性能优化

1. 选题缓存

选题生成结果可以缓存,避免重复请求:

  • 缓存最近10次生成结果
  • 相同输入参数直接返回缓存
  • 缓存有效期24小时

2. 增量加载

对于大量选题,采用分页加载策略,每次加载5个选题。

3. 渲染优化

  • 使用@Builder封装选题卡片组件
  • 使用LazyForEach实现懒加载
  • 避免在渲染过程中进行复杂计算

6.3 内容质量保证

1. 选题去重

AI生成多个选题时,自动检测并去除重复或高度相似的选题。

2. 大纲结构检查

确保大纲包含引论、本论、结论的完整结构,避免头重脚轻。

3. 关键词相关性检查

生成的关键词需要与选题主题高度相关,避免无关词的干扰。

6.4 测试策略

测试场景 输入 预期输出
职场领域选题 领域"职场",格式"干货" 生成5个职场干货选题
情感领域选题 领域"情感",格式"故事" 生成5个情感故事选题
大纲结构检查 任意选题 大纲包含3-5个要点,结构完整
关键词相关性 选题"时间管理" 关键词包括"时间管理"相关术语

七、总结与展望

7.1 项目总结

公众号选题生成应用是AI辅助内容规划的重要工具。通过Model-Service-Page架构,实现了从用户输入到AI选题生成再到结果展示的完整流程。

核心价值:

  1. 系统化规划:帮助运营者实现系统化的内容规划,告别"临时选题"
  2. 多样化的创意:AI提供多样化的选题角度,激发创作灵感
  3. 结构化输出:每个选题都包含完整的大纲和关键词,降低了写作门槛
  4. 效率提升:从选题规划到大纲生成,时间从数小时缩短到数秒

7.2 未来展望

1. 智能排期
基于选题的热度、时效性和用户偏好,自动排定发布顺序和发布时间。

2. 系列选题策划
自动识别可以形成系列文章的选题,生成系列文章的衔接方案。

3. 热点关联
实时监测热点事件,自动关联到已有的选题库,生成热点相关选题。

4. 数据反馈闭环
接入文章发布后的数据(阅读量、分享量、涨粉数),反馈到选题模型,持续优化选题质量。

5. 竞品选题监测
自动监测同领域头部公众号的选题策略,提供差异化建议。

7.3 开发者建议

  1. 选题质量优先于数量:5个高质量选题的效果远好于50个平庸选题
  2. 大纲是核心:大纲的质量直接影响后续写作的效率和文章质量
  3. 关键词不可忽视:好的关键词策略可以显著提升文章的搜索曝光
  4. 持续迭代:公众号运营环境不断变化,需要持续优化选题策略

公众号选题生成应用展示了AI在内容规划领域的强大能力。通过智能化的选题生成和大纲规划,帮助内容创作者从"选题困难"中解放出来,将更多精力投入到内容创作本身。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐