Skill: fengbabao0929/financial-contant-writer (version 1.0.0)

--- name: finance-content-generator description: 财税审计内容生成器 - 快速生成专业财税公众号文章，支持多种文章类型和主题 --- # 财税审计内容生成器 ## 触发方式 当用户说类似以下内容时触发： - "帮我写一篇财税文章" - "生成一篇关于XX的审计文章" - "我要写公众号内容" - "写一篇政策解读" - "/fin" 开头的命令 --- ## 功能概览 | 功能 | 命令 | 说明 | |------|------|------| | **交互模式** | `/fin` | 进入交互式内容生成对话 | | **生成文章** | `/fin-article {topic}` | 生成财税审计文章（公众号格式） | | **完整文章** | `/fin-full {topic}` | 生成完整版文章 | | **案例分析** | `/fin-case {topic}` | 生成案例分析类文章 | | **政策解读** | `/fin-policy {topic}` | 生成政策解读类文章 | | **风险提示** | `/fin-risk {topic}` | 生成风险提示类文章 | | **经验分享** | `/fin-share {topic}` | 生成经验分享类文章 | | **实务指南** | `/fin-guide {topic}` | 生成实务指南类文章 | | **技术教程** | `/fin-tutorial {topic}` | 生成技术教程类文章 | | **行业洞察** | `/fin-insight {topic}` | 生成行业洞察类文章 | | **查看主题** | `/fin-topics` | 查看所有热门文章主题 | | **按领域查看** | `/fin-audit` `/fin-finance` `/fin-tax` 等 | 查看特定领域热门主题 | | **生成大纲** | `/fin-outline {topic}` | 生成文章大纲 | | **生成标题** | `/fin-titles {topic}` | 生成文章标题选项 | | **生成配图** | `/fin-images {article_path}` | 为财税文章生成配图 | --- ## 支持的文章类型 | 类型 | 适用场景 | 示例主题 | |------|----------|----------| | 案例分析 | 真实案例解读 | "上市公司财务造假案例" | | 政策解读 | 新政影响分析 | "新《公司法》解读" | | 风险提示 | 合规风险警示 | "金税四期风险点" | | 经验分享 | 实务经验总结 | "审计新人避坑指南" | | 实务指南 | 操作指南 | "小公司内控制度" | | 技术教程 | 专业技能教学 | "Excel财务建模" | | 行业洞察 | 趋势分析 | "2024财税行业趋势" | --- ## 支持的专业领域 | 领域 | 命令 | 热门主题示例 | |------|------|--------------| | 审计 | `/fin-audit` | 财务造假、内控审计、尽职调查 | | 财务 | `/fin-finance` | 报表分析、成本控制、预算管理 | | 税务 | `/fin-tax` | 个税汇算、税务筹划、发票管理 | | 政策 | `/fin-policy-topics` | 公司法、税法、会计准则 | | 技术 | `/fin-tech` | Excel、Python、财务系统 | --- ## 编辑部评审工作流 完整的多角色评审流程： | 角色 | 命令 | 评审视角 | |------|------|----------| | **完整流程** | `/fin-review {topic}` | 全流程评审 | | **架构师** | `/fin-review-architect` | 流量+转化 | | **主笔管** | `/fin-review-writer` | 结构+深度 | | **毒舌编辑** | `/fin-review-acid` | 找错+质量 | | **改稿人** | `/fin-review-ghost` | 表达+可读性 | | **包装人** | `/fin-review-pack` | 爆款+变现 | --- ## 配图生成 | 命令 | 说明 | |------|------| | `/fin-images {path}` | 财税文章配图 | | `/fin-images-tax {path}` | 税务文章配图 | | `/fin-images-audit {path}` | 审计文章配图 | | `/fin-images-finance {path}` | 财务文章配图 | | `/fin-images-policy {path}` | 政策解读配图 | | `/fin-images-risk {path}` | 风险提示配图 | --- ## 使用流程 ### 方式一：直接生成文章 ``` 用户: /fin-article 小公司财务混乱 ``` ### 方式二：先查看热门主题 ``` 用户: /fin-topics → 获取热门主题列表 用户: /fin-article 新《公司法》实施影响 ``` ### 方式三：完整创作流程 ``` 1. /fin-outline {主题} # 生成大纲 2. /fin-titles {主题} # 生成标题选项 3. /fin-article {主题} # 生成文章 4. /fin-images {文章路径} # 生成配图 ``` --- ## 文章格式特点 - **公众号格式**：适配微信公众号编辑器 - **专业准确**：基于财税专业知识库 - **实用导向**：注重实务操作和落地建议 - **风格多样**：支持严肃干货和趣味科普 --- ## 文件结构 ``` finance-content-generator/ ├── SKILL.md # 本文件 ├── finance-content-skill.json # 命令配置 ├── finance-content-generator.js # 内容生成脚本 ├── finance-image-generator.cjs # 配图生成脚本 └── editorial-workflow.js # 编辑部评审脚本 ```

path: finance-content-generator.js
content: #!/usr/bin/env node

/**
 * 财税自媒体内容生成器 (增强版)
 * 用法: node finance-content-generator.js [选项]
 *
 * 功能:
 *   - 交互式选题
 *   - 热门主题推荐 (财务/税务/审计/政策/技术)
 *   - 多种文章模板
 *   - 公众号专用格式
 *   - 自动保存到 articles 目录
 *
 * 示例:
 *   node finance-content-generator.js
 *   node finance-content-generator.js --topic "增值税新政" --type 政策解读 --save
 *   node finance-content-generator.js --list-topics
 */

import fs from 'fs';
import path from 'path';
import readline from 'readline';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 颜色输出
const colors = {
  reset: '\x1b[0m',
  bright: '\x1b[1m',
  dim: '\x1b[2m',
  cyan: '\x1b[36m',
  green: '\x1b[32m',
  yellow: '\x1b[33m',
  blue: '\x1b[34m',
  magenta: '\x1b[35m',
  red: '\x1b[31m'
};

function colorize(text, color) {
  return `${colors[color]}${text}${colors.reset}`;
}

// ==================== 数据模块 ====================

// 热门主题库 (按领域分类)
const HOT_TOPICS = {
  // 2026年1月热点
  2026_01: [
    // 审计类
    { topic: '2025年度财务报表审计重点', domain: '审计', category: '年报审计', hot: 5, description: '新一年年报审计的关注要点和风险提示' },
    { topic: 'ESG审计实务指南', domain: '审计', category: '新兴领域', hot: 5, description: 'ESG报告审计的程序和方法' },
    { topic: '数据资产入账审计', domain: '审计', category: '新兴领域', hot: 4, description: '数据资源相关会计处理的审计要点' },

    // 财务会计类
    { topic: '新会计准则执行情况分析', domain: '财务', category: '准则解读', hot: 4, description: '新准则实施后的常见问题及应对' },
    { topic: '收入准则五步法应用', domain: '财务', category: '实务操作', hot: 3, description: '新收入准则实务应用难点解析' },
    { topic: '租赁准则实务应用', domain: '财务', category: '准则解读', hot: 3, description: '新租赁准则的账务处理要点' },
    { topic: '商誉减值测试实务', domain: '财务', category: '实务操作', hot: 3, description: '商誉减值测试的会计处理' },

    // 税务类
    { topic: '2026年税收优惠政策汇总', domain: '税务', category: '政策解读', hot: 5, description: '最新税收优惠政策梳理' },
    { topic: '增值税加计抵减政策', domain: '税务', category: '政策解读', hot: 4, description: '增值税加计抵减的实务操作' },
    { topic: '个人所得税汇算清缴', domain: '税务', category: '实务操作', hot: 5, description: '个税汇算清缴注意事项' },
    { topic: '研发费用加计扣除', domain: '税务', category: '实务操作', hot: 4, description: '研发费加计扣除实务指南' },

    // 政策类
    { topic: '数字货币会计处理指引', domain: '政策', category: '新兴领域', hot: 4, description: '数字货币相关会计处理规定' },
    { topic: '数据资产入表规定', domain: '政策', category: '新兴领域', hot: 5, description: '数据资源入表相关要求' },

    // 技术类
    { topic: 'AI在财务审计中的应用', domain: '技术', category: '财务科技', hot: 5, description: '人工智能技术在财务审计中的实践' },
    { topic: '财务共享中心建设', domain: '技术', category: '财务科技', hot: 4, description: '财务共享中心的搭建与运营' },
    { topic: 'ERP系统实施要点', domain: '技术', category: '信息化', hot: 3, description: 'ERP系统实施的关键环节' },
    { topic: '财务数据分析工具', domain: '技术', category: '数据分析', hot: 4, description: '财务数据分析常用工具介绍' }
  ],

  // 常青主题
  always: [
    // 审计类
    { topic: '货币资金审计', domain: '审计', category: '基础实务', hot: 3, description: '现金、银行存款等的审计程序' },
    { topic: '应收账款函证程序', domain: '审计', category: '基础实务', hot: 3, description: '应收账款函证的设计与执行' },
    { topic: '存货舞弊审计案例', domain: '审计', category: '风险领域', hot: 4, description: '存货舞弊的识别与审计应对' },
    { topic: '关联方交易审计', domain: '审计', category: '风险领域', hot: 4, description: '关联方交易的审计程序和风险应对' },
    { topic: '营业收入审计', domain: '审计', category: '风险领域', hot: 4, description: '营业收入确认的真实性、完整性审计' },
    { topic: '内部控制审计评价', domain: '审计', category: '内控审计', hot: 3, description: '内部控制审计的评价标准和方法' },
    { topic: '持续经营审计评估', domain: '审计', category: '风险领域', hot: 4, description: '持续经营假设的审计评估程序' },
    { topic: '审计工作底稿编制', domain: '审计', category: '职业规范', hot: 3, description: '审计底稿的编制要求和方法' },
    { topic: '审计重要性水平确定', domain: '审计', category: '职业规范', hot: 3, description: '重要性水平的确定和应用' },
    { topic: '审计抽样方法', domain: '审计', category: '职业规范', hot: 3, description: '审计抽样的设计和实施' },

    // 财务会计类
    { topic: '现金流量表编制', domain: '财务', category: '基础实务', hot: 4, description: '现金流量表的编制方法和技巧' },
    { topic: '合并报表编制', domain: '财务', category: '实务操作', hot: 4, description: '合并财务报表的编制要点' },
    { topic: '金融工具分类与计量', domain: '财务', category: '准则解读', hot: 3, description: '金融工具的分类标准与计量方法' },
    { topic: '固定资产核算', domain: '财务', category: '基础实务', hot: 2, description: '固定资产的取得、折旧、处置核算' },
    { topic: '应付账款核算', domain: '财务', category: '基础实务', hot: 2, description: '应付账款的确认、计量与披露' },
    { topic: '成本核算方法', domain: '财务', category: '实务操作', hot: 3, description: '常用成本核算方法介绍' },
    { topic: '财务报表分析', domain: '财务', category: '分析工具', hot: 4, description: '财务报表分析的基本方法' },
    { topic: '预算编制实务', domain: '财务', category: '管理会计', hot: 3, description: '企业预算编制的实务操作' },
    { topic: '内部控制体系建设', domain: '财务', category: '内控', hot: 3, description: '内部控制体系的建立与完善' },
    { topic: '财务人员职业发展', domain: '财务', category: '职业规划', hot: 3, description: '财务人员的职业发展路径' },

    // 税务类
    { topic: '增值税发票开具规范', domain: '税务', category: '实务操作', hot: 4, description: '增值税发票的开具要求和注意事项' },
    { topic: '增值税进项抵扣', domain: '税务', category: '实务操作', hot: 4, description: '增值税进项税额抵扣实务' },
    { topic: '企业所得税汇算清缴', domain: '税务', category: '实务操作', hot: 5, description: '企业所得税汇算清缴操作指南' },
    { topic: '税收筹划方法', domain: '税务', category: '筹划', hot: 4, description: '企业常用税收筹划方法' },
    { topic: '转让定价实务', domain: '税务', category: '国际税收', hot: 3, description: '转让定价的实务操作' },
    { topic: '税务稽查应对', domain: '税务', category: '风险管理', hot: 4, description: '税务稽查的应对策略' },
    { topic: '税收优惠政策解读', domain: '税务', category: '政策解读', hot: 4, description: '常用税收优惠政策介绍' },
    { topic: '跨境税收实务', domain: '税务', category: '国际税收', hot: 3, description: '跨境业务的税收处理' },
    { topic: '发票管理规范', domain: '税务', category: '实务操作', hot: 3, description: '企业发票管理的规范化要求' },
    { topic: '税务风险管控', domain: '税务', category: '风险管理', hot: 4, description: '企业税务风险识别与管控' },

    // 政策类
    { topic: '会计法规体系', domain: '政策', category: '法规基础', hot: 3, description: '中国会计法规体系介绍' },
    { topic: '税收法规解读', domain: '政策', category: '法规基础', hot: 3, description: '常用税收法规解读' },
    { topic: '证券法规解读', domain: '政策', category: '法规基础', hot: 3, description: '证券相关法规对财务的影响' },
    { topic: '财务政策解读', domain: '政策', category: '政策解读', hot: 3, description: '最新财务政策解读' },

    // 技术类
    { topic: 'Excel财务函数应用', domain: '技术', category: '办公技能', hot: 4, description: '财务常用Excel函数介绍' },
    { topic: '财务数据分析', domain: '技术', category: '数据分析', hot: 4, description: '财务数据分析的方法和工具' },
    { topic: '财务软件选型', domain: '技术', category: '信息化', hot: 3, description: '企业财务软件选型指南' },
    { topic: '云财务系统', domain: '技术', category: '信息化', hot: 3, description: '云财务系统的应用与实践' },
    { topic: '电子发票系统', domain: '技术', category: '信息化', hot: 3, description: '电子发票系统的使用' },
    { topic: 'RPA在财务中的应用', domain: '技术', category: '财务科技', hot: 4, description: 'RPA技术在财务流程中的应用' },
    { topic: '大数据财务分析', domain: '技术', category: '数据分析', hot: 4, description: '大数据技术在财务分析中的应用' }
  ]
};

// 文章类型模板库
const ARTICLE_TYPES = {
  '案例分析': {
    description: '以具体案例为核心，分析过程和经验教训',
    structure: [
      { section: '案例背景', content: '描述基本情况、发现的问题' },
      { section: '分析过程', content: '详细描述分析程序、方法、证据收集' },
      { section: '问题分析', content: '深入分析问题成因、影响、涉及法规' },
      { section: '处理结果', content: '处理意见、解决方案' },
      { section: '经验启示', content: '可推广的经验、警示要点' }
    ],
    titleTemplates: [
      '【案例】{topic}实战：从发现到解决',
      '案例拆解：{topic}全流程解析',
      '从一起{topic}案例看风险应对',
      '{topic}：一个真实案例的启示',
      '深度复盘：{topic}案例解析'
    ]
  },
  '政策解读': {
    description: '解读最新政策、准则、法规，分析影响和应对',
    structure: [
      { section: '政策背景', content: '出台背景、目的、适用范围' },
      { section: '核心内容', content: '关键条款、变化要点、重点解读' },
      { section: '影响分析', content: '对企业、工作的影响' },
      { section: '实务应对', content: '如何落实、注意事项、操作建议' },
      { section: '常见问题', content: '执行中的疑问与解答' }
    ],
    titleTemplates: [
      '【解读】{topic}：核心要点与实务应对',
      '深度解读：{topic}对企业的影响',
      '{topic}政策全文解读（附操作指南）',
      '一图读懂{topic}核心要点',
      '{topic}：财务人员需要知道的那些变化'
    ]
  },
  '实务指南': {
    description: '提供可操作的实务方法、程序、技巧',
    structure: [
      { section: '实务概述', content: '定义、适用场景、重要性' },
      { section: '操作流程', content: '分步骤详细操作指南' },
      { section: '工具方法', content: '常用工具、表格、检查清单' },
      { section: '注意事项', content: '常见误区、风险点' },
      { section: '质量控制', content: '质量把控要点、复核要求' }
    ],
    titleTemplates: [
      '【实务】{topic}：操作指南',
      '{topic}：从入门到精通',
      '实务：{topic}完全手册',
      '{topic}：5大步骤+3个工具',
      '手把手教你做{topic}'
    ]
  },
  '风险提示': {
    description: '聚焦风险识别、评估、应对',
    structure: [
      { section: '风险概述', content: '定义、表现形式、危害' },
      { section: '风险识别', content: '如何发现、识别方法、预警信号' },
      { section: '风险评估', content: '风险评估方法、等级划分' },
      { section: '应对措施', content: '针对性的应对程序、控制建议' },
      { section: '案例警示', content: '真实案例教训' }
    ],
    titleTemplates: [
      '【风险】{topic}：必须警惕的风险点',
      '{topic}风险识别与应对',
      '警惕：{topic}领域的5大风险',
      '{topic}高风险领域指南',
      '从失败案例看{topic}风险'
    ]
  },
  '经验分享': {
    description: '分享个人经验、心得、技巧',
    structure: [
      { section: '经验背景', content: '工作场景、遇到的问题' },
      { section: '核心经验', content: '关键做法、创新点' },
      { section: '实施步骤', content: '具体操作方法' },
      { section: '效果对比', content: '优化前后的变化' },
      { section: '适用场景', content: '什么情况下可用、注意事项' }
    ],
    titleTemplates: [
      '【分享】{topic}：我的经验总结',
      '做了10年财务，我总结了{topic}的3个要点',
      '{topic}：资深从业者的实战心得',
      '分享：{topic}的5个高效技巧',
      '从实践中来：{topic}经验谈'
    ]
  },
  '技术教程': {
    description: '技术工具、软件、方法的教程',
    structure: [
      { section: '技术概述', content: '技术/工具简介、应用场景' },
      { section: '环境准备', content: '安装配置、准备工作' },
      { section: '操作教程', content: '分步操作演示、关键功能' },
      { section: '进阶技巧', content: '高级功能、技巧方法' },
      { section: '常见问题', content: '故障排除、FAQ' }
    ],
    titleTemplates: [
      '【教程】{topic}入门与精通',
      '{topic}实战教程：从0到1',
      '10分钟学会{topic}',
      '{topic}：一看就懂的教程',
      '{topic}使用指南：图文并茂'
    ]
  },
  '行业洞察': {
    description: '行业趋势、前沿话题、深度思考',
    structure: [
      { section: '行业现状', content: '当前行业发展概况' },
      { section: '趋势分析', content: '未来发展趋势判断' },
      { section: '热点话题', content: '行业热点、前沿动态' },
      { section: '深度思考', content: '问题分析、观点阐述' },
      { section: '行动建议', content: '对企业和个人的建议' }
    ],
    titleTemplates: [
      '【洞察】{topic}：趋势与机遇',
      '深度思考：{topic}的未来',
      '{topic}行业发展趋势解读',
      '从{topic}看行业变革',
      '{topic}：下一个风口？'
    ]
  }
};

// 公众号格式模板
const WECHAT_FORMAT = {
  separator: '────────────────────────────────────',
  divider: '────────────────────────',
  boxTop: '╔════════════════════════════════════╗',
  boxSide: '║',
  boxBottom: '╚════════════════════════════════════╝',
  tip: '💡',
  warning: '⚠️',
  example: '📌',
  keyPoint: '🔑',
  checklist: '✅',
  arrow: '▶'
};

// ==================== 工具函数 ====================

function getCurrentMonth() {
  const now = new Date();
  return `${now.getFullYear()}_${String(now.getMonth() + 1).padStart(2, '0')}`;
}

function getHotTopics(domain = null) {
  const month = getCurrentMonth();
  const monthly = HOT_TOPICS[`2026_${String(new Date().getMonth() + 1).padStart(2, '0')}`] || HOT_TOPICS[month] || [];
  let allTopics = [...monthly, ...HOT_TOPICS.always];

  if (domain) {
    allTopics = allTopics.filter(t => t.domain === domain);
  }

  return allTopics;
}

function getDomains() {
  const domains = new Set();
  Object.values(HOT_TOPICS).forEach(topics => {
    topics.forEach(t => domains.add(t.domain));
  });
  return Array.from(domains);
}

function ensureArticlesDir() {
  const articlesDir = path.join(process.cwd(), 'articles');
  if (!fs.existsSync(articlesDir)) {
    fs.mkdirSync(articlesDir, { recursive: true });
  }
  return articlesDir;
}

function saveToFile(content, filename) {
  const articlesDir = ensureArticlesDir();
  const filepath = path.join(articlesDir, filename);
  fs.writeFileSync(filepath, content, 'utf-8');
  return filepath;
}

function getSafeFilename(topic) {
  const now = new Date();
  const dateStr = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}`;
  const safeTopic = topic.replace(/[<>:"/\\|?*\x00-\x1f]/g, '_').substring(0, 30);
  return `${dateStr}_${safeTopic}.md`;
}

// ==================== 生成器函数 ====================

function generateTitles(topic, articleType) {
  const typeConfig = ARTICLE_TYPES[articleType] || ARTICLE_TYPES['实务指南'];
  return typeConfig.titleTemplates.map((t, i) => {
    return `${i + 1}. ${t.replace('{topic}', topic)}`;
  });
}

function generateOutline(topic, articleType) {
  const typeConfig = ARTICLE_TYPES[articleType] || ARTICLE_TYPES['实务指南'];

  let outline = `# ${topic}：${articleType}\n\n`;

  typeConfig.structure.forEach((section, index) => {
    const sectionNum = index + 1;
    outline += `## ${sectionNum}、${section.section}\n\n`;
    outline += `- ${section.content}\n\n`;
  });

  return outline;
}

function generateFullArticle(topic, articleType) {
  const typeConfig = ARTICLE_TYPES[articleType] || ARTICLE_TYPES['实务指南'];
  const titles = generateTitles(topic, articleType);

  let article = `# ${titles[0].substring(3)}\n\n`;
  article += `> 📖 建议阅读时间：8-10分钟\n\n`;
  article += `---\n\n`;
  article += `## 引言\n\n`;
  article += `在当前的财税实务工作中，${topic}是一个备受关注的话题。本文将结合${articleType}的视角，为你系统梳理相关要点。\n\n`;
  article += `---\n\n`;

  typeConfig.structure.forEach((section, index) => {
    const sectionNum = ['一', '二', '三', '四', '五'][index] || `${index + 1}`;
    const subNum = index + 1;

    article += `## ${sectionNum}、${section.section}\n\n`;
    article += `### ${subNum}.${section.section.split('：')[0] || section.section}概述\n\n`;
    article += `${section.content}\n\n`;
    article += `### ${subNum}.${sectionNum} ${section.section.split('：')[0] || section.section}要点\n\n`;
    article += `- 要点1：[具体内容]\n`;
    article += `- 要点2：[具体内容]\n`;
    article += `- 要点3：[具体内容]\n\n`;
    article += `> 💡 **提示**：[此处可填写操作建议或注意事项]\n\n`;
    article += `---\n\n`;
  });

  article += `## 结语\n\n`;
  article += `${topic}涉及的内容较为复杂，需要结合具体情况进行分析和判断。希望本文能为您的实务工作提供参考。\n\n`;
  article += `---\n\n`;
  article += `**相关阅读**\n\n`;
  article += `- [推荐阅读1](#)\n`;
  article += `- [推荐阅读2](#)\n\n`;
  article += `---\n\n`;
  article += `*本文内容仅供学习交流，不构成专业建议。实际工作中请遵循相关准则和法规要求。*\n\n`;
  article += `*如需更多专业支持，欢迎关注我们获取更多内容。*\n`;

  return article;
}

function generateWeChatFormat(topic, articleType) {
  const titles = generateTitles(topic, articleType);
  const outline = generateOutline(topic, articleType);

  let output = '';
  output += `${WECHAT_FORMAT.boxTop}\n`;
  output += `${WECHAT_FORMAT.boxSide}${' '.repeat(16)}财税自媒体内容生成器${' '.repeat(16)}${WECHAT_FORMAT.boxSide}\n`;
  output += `${WECHAT_FORMAT.boxBottom}\n\n`;
  output += `${WECHAT_FORMAT.tip} 主题：${topic}\n`;
  output += `${WECHAT_FORMAT.tip} 类型：${articleType}\n`;
  output += `${WECHAT_FORMAT.tip} 日期：${new Date().toLocaleDateString('zh-CN')}\n\n`;
  output += `${WECHAT_FORMAT.separator}\n\n`;
  output += `【推荐标题】\n\n${WECHAT_FORMAT.separator}\n\n`;
  titles.forEach(t => output += `${t}\n`);
  output += `\n${WECHAT_FORMAT.separator}\n\n`;
  output += `【文章大纲】\n\n${WECHAT_FORMAT.separator}\n\n`;
  output += `${outline}`;
  output += `${WECHAT_FORMAT.separator}\n\n`;
  output += `【公众号排版建议】\n\n${WECHAT_FORMAT.separator}\n\n`;
  output += `${WECHAT_FORMAT.checklist} 标题：使用数字+关键词，如「5个要点」「3个方法」\n`;
  output += `${WECHAT_FORMAT.checklist} 导语：1-2句话概括文章价值，引发兴趣\n`;
  output += `${WECHAT_FORMAT.checklist} 正文：小标题分割，每段不超过3行\n`;
  output += `${WECHAT_FORMAT.checklist} 重点：使用引用框标注关键信息\n`;
  output += `${WECHAT_FORMAT.checklist} 配图：建议2-3张图表或信息图\n`;
  output += `${WECHAT_FORMAT.checklist} 金句：每部分提炼1-2句金句，便于传播\n`;
  output += `${WECHAT_FORMAT.checklist} 结尾：引导关注、点赞、转发\n\n`;
  output += `${WECHAT_FORMAT.separator}\n\n`;

  return output;
}

// ==================== 交互式功能 ====================

function createInterface() {
  return readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });
}

function question(rl, prompt) {
  return new Promise(resolve => {
    rl.question(prompt, answer => resolve(answer));
  });
}

async function interactiveMode() {
  const rl = createInterface();

  console.log('');
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log(colorize('   财税自媒体内容生成器 - 交互模式', 'cyan'));
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log('');

  // 选择功能
  console.log(colorize('请选择功能：', 'yellow'));
  console.log('  1. 从热门主题中选择');
  console.log('  2. 输入自定义主题');
  console.log('  3. 查看所有热门主题');
  console.log('');

  const choice = await question(rl, colorize('请输入选项 (1-3): ', 'cyan'));

  let topic, articleType = '实务指南';

  if (choice === '1' || choice === '3') {
    // 选择领域
    if (choice === '1') {
      console.log('');
      console.log(colorize('【选择领域】', 'yellow'));
      console.log('');
      const domains = getDomains();
      domains.forEach((d, i) => {
        console.log(`  ${i + 1}. ${d}`);
      });
      console.log(`  ${domains.length + 1}. 全部领域`);
      console.log('');

      const domainChoice = await question(rl, colorize('请选择领域 (默认全部): ', 'cyan'));
      const domainIndex = parseInt(domainChoice) - 1;

      let selectedDomain = null;
      if (domainIndex >= 0 && domainIndex < domains.length) {
        selectedDomain = domains[domainIndex];
      }
    }

    const hotTopics = getHotTopics();

    if (choice === '3') {
      console.log('');
      console.log(colorize('【热门主题列表】', 'yellow'));
      console.log('');
      hotTopics.forEach((t, i) => {
        const hotStars = '⭐'.repeat(t.hot);
        const domainTag = colorize(`[${t.domain}]`, 'cyan');
        console.log(`  ${i + 1}. ${domainTag} ${t.topic}`);
        console.log(`     ${colorize(t.category, 'dim')} ${hotStars}`);
        console.log(`     ${t.description}`);
        console.log('');
      });
      rl.close();
      return;
    }

    // 显示热门主题
    console.log('');
    console.log(colorize('【热门主题推荐】', 'yellow'));
    console.log('');
    hotTopics.slice(0, 20).forEach((t, i) => {
      const hotStars = '⭐'.repeat(t.hot);
      const domainTag = colorize(`[${t.domain}]`, 'cyan');
      console.log(`  ${colorize(String(i + 1), 'cyan')}. ${domainTag} ${t.topic} ${colorize(hotStars, 'yellow')}`);
      console.log(`     ${colorize(t.category, 'dim')} - ${t.description}`);
    });
    console.log('');

    const topicChoice = await question(rl, colorize('请选择主题编号: ', 'cyan'));
    const topicIndex = parseInt(topicChoice) - 1;
    if (topicIndex >= 0 && topicIndex < hotTopics.length) {
      topic = hotTopics[topicIndex].topic;
    } else {
      console.log(colorize('无效的选择', 'red'));
      rl.close();
      return;
    }
  } else if (choice === '2') {
    topic = await question(rl, colorize('请输入主题: ', 'cyan'));
    if (!topic) {
      console.log(colorize('主题不能为空', 'red'));
      rl.close();
      return;
    }
  } else {
    console.log(colorize('无效的选择', 'red'));
    rl.close();
    return;
  }

  // 选择文章类型
  console.log('');
  console.log(colorize('【文章类型】', 'yellow'));
  console.log('');
  const types = Object.keys(ARTICLE_TYPES);
  types.forEach((t, i) => {
    console.log(`  ${i + 1}. ${t}`);
    console.log(`     ${ARTICLE_TYPES[t].description}`);
    console.log('');
  });

  const typeChoice = await question(rl, colorize('请选择文章类型 (默认1): ', 'cyan'));
  const typeIndex = parseInt(typeChoice) - 1;
  if (typeIndex >= 0 && typeIndex < types.length) {
    articleType = types[typeIndex];
  }

  // 选择输出格式
  console.log('');
  console.log(colorize('【输出格式】', 'yellow'));
  console.log('  1. 仅标题');
  console.log('  2. 仅大纲');
  console.log('  3. 完整文章');
  console.log('  4. 公众号格式');

  const formatChoice = await question(rl, colorize('请选择格式 (默认4): ', 'cyan'));
  const formats = ['titles', 'outline', 'full', 'wechat'];
  const format = formats[parseInt(formatChoice) - 1] || 'wechat';

  // 是否保存
  const saveChoice = await question(rl, colorize('是否保存到文件? (y/n, 默认y): ', 'cyan'));
  const shouldSave = !saveChoice || saveChoice.toLowerCase() === 'y';

  rl.close();

  // 生成内容
  console.log('');
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log(colorize('   生成内容', 'cyan'));
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log('');

  let content = '';
  let filename = '';

  switch (format) {
    case 'titles':
      content = generateTitles(topic, articleType).join('\n');
      console.log(content);
      filename = `标题_${getSafeFilename(topic)}`;
      break;
    case 'outline':
      content = generateOutline(topic, articleType);
      console.log(content);
      filename = `大纲_${getSafeFilename(topic)}`;
      break;
    case 'full':
      content = generateFullArticle(topic, articleType);
      console.log(content);
      filename = getSafeFilename(topic);
      break;
    case 'wechat':
      content = generateWeChatFormat(topic, articleType);
      console.log(content);
      filename = `公众号_${getSafeFilename(topic)}`;
      break;
  }

  if (shouldSave) {
    const filepath = saveToFile(content, filename);
    console.log('');
    console.log(colorize('════════════════════════════════════', 'cyan'));
    console.log(colorize(`✓ 已保存到: ${filepath}`, 'green'));
    console.log(colorize('════════════════════════════════════', 'cyan'));
  }
  console.log('');
}

// ==================== 命令行模式 ====================

function commandLineMode(args) {
  const options = {
    topic: '',
    type: '实务指南',
    format: 'wechat',
    save: false,
    domain: null
  };

  // 先处理不需要其他参数的选项
  if (args.includes('--help') || args.includes('-h')) {
    showHelp();
    return;
  }
  if (args.includes('--interactive') || args.includes('-i')) {
    interactiveMode();
    return;
  }

  // 解析参数
  for (let i = 0; i < args.length; i++) {
    switch (args[i]) {
      case '--topic':
      case '-t':
        options.topic = args[++i];
        break;
      case '--type':
        options.type = args[++i];
        break;
      case '--format':
      case '-f':
        options.format = args[++i];
        break;
      case '--domain':
      case '-d':
        options.domain = args[++i];
        break;
      case '--save':
      case '-s':
        options.save = true;
        break;
    }
  }

  // 处理 list-topics（在 domain 解析之后）
  if (args.includes('--list-topics') || args.includes('-l')) {
    listTopics(options.domain);
    return;
  }

  if (!options.topic) {
    console.log(colorize('错误: 请指定主题或使用 --interactive 进入交互模式', 'red'));
    console.log('使用 --help 查看帮助');
    process.exit(1);
  }

  // 验证文章类型
  if (!ARTICLE_TYPES[options.type]) {
    console.log(colorize(`错误: 无效的文章类型 "${options.type}"`, 'red'));
    console.log(`可用类型: ${Object.keys(ARTICLE_TYPES).join(', ')}`);
    process.exit(1);
  }

  // 生成内容
  console.log('');
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log(colorize('   财税自媒体内容生成器', 'cyan'));
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log('');
  console.log(colorize(`📋 主题: ${options.topic}`, 'bright'));
  console.log(colorize(`📝 类型: ${options.type}`, 'bright'));
  console.log('');

  let content = '';
  let filename = '';

  switch (options.format) {
    case 'titles':
      content = generateTitles(options.topic, options.type).join('\n');
      console.log(colorize('【推荐标题】', 'yellow'));
      console.log('');
      console.log(content);
      filename = `标题_${getSafeFilename(options.topic)}`;
      break;
    case 'outline':
      content = generateOutline(options.topic, options.type);
      console.log(colorize('【文章大纲】', 'yellow'));
      console.log('');
      console.log(content);
      filename = `大纲_${getSafeFilename(options.topic)}`;
      break;
    case 'full':
      content = generateFullArticle(options.topic, options.type);
      console.log(colorize('【完整文章】', 'yellow'));
      console.log('');
      console.log(content);
      filename = getSafeFilename(options.topic);
      break;
    case 'wechat':
    default:
      content = generateWeChatFormat(options.topic, options.type);
      console.log(content);
      filename = `公众号_${getSafeFilename(options.topic)}`;
      break;
  }

  if (options.save) {
    const filepath = saveToFile(content, filename);
    console.log('');
    console.log(colorize('────────────────────────────────────', 'cyan'));
    console.log(colorize(`✓ 已保存到: ${filepath}`, 'green'));
    console.log(colorize('────────────────────────────────────', 'cyan'));
  }
  console.log('');
}

function listTopics(domain = null) {
  const hotTopics = getHotTopics(domain);

  console.log('');
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log(colorize(domain ? `   ${domain}领域热门主题` : '   全部热门主题', 'cyan'));
  console.log(colorize('════════════════════════════════════', 'cyan'));
  console.log('');

  // 按领域和分类显示
  const categories = {};
  hotTopics.forEach(t => {
    const key = `${t.domain}-${t.category}`;
    if (!categories[key]) {
      categories[key] = { domain: t.domain, category: t.category, topics: [] };
    }
    categories[key].topics.push(t);
  });

  Object.keys(categories).forEach(key => {
    const cat = categories[key];
    console.log(colorize(`【${cat.domain} - ${cat.category}】`, 'yellow'));
    console.log('');
    cat.topics.forEach(t => {
      const hotStars = '⭐'.repeat(t.hot);
      console.log(`  • ${t.topic} ${colorize(hotStars, 'yellow')}`);
      console.log(`    ${colorize(t.description, 'dim')}`);
    });
    console.log('');
  });

  console.log(colorize('────────────────────────────────────', 'cyan'));
  console.log(colorize(`共 ${hotTopics.length} 个热门主题`, 'bright'));
  console.log(colorize('────────────────────────────────────', 'cyan'));
  console.log('');
}

function showHelp() {
  console.log('');
  console.log(colorize('财税自媒体内容生成器', 'cyan'));
  console.log('');
  console.log('用法:');
  console.log('  node finance-content-generator.js [选项]');
  console.log('');
  console.log('选项:');
  console.log('  -t, --topic <主题>       指定文章主题');
  console.log('  --type <类型>           文章类型 (默认: 实务指南)');
  console.log(`                         可选: ${Object.keys(ARTICLE_TYPES).join(', ')}`);
  console.log('  -f, --format <格式>      输出格式 (默认: wechat)');
  console.log('                         可选: titles, outline, full, wechat');
  console.log('  -d, --domain <领域>     筛选主题领域 (审计/财务/税务/政策/技术)');
  console.log('  -s, --save              保存到 articles 目录');
  console.log('  -l, --list-topics       列出热门主题');
  console.log('  -i, --interactive       交互式模式');
  console.log('  -h, --help              显示帮助信息');
  console.log('');
  console.log('示例:');
  console.log('  node finance-content-generator.js -i');
  console.log('  node finance-content-generator.js --topic "增值税新政" --save');
  console.log('  node finance-content-generator.js -t "AI审计" --type 技术教程 -f full -s');
  console.log('  node finance-content-generator.js --list-topics --domain 税务');
  console.log('');
}

// ==================== 主函数 ====================

function main() {
  const args = process.argv.slice(2);

  // 无参数时进入交互模式
  if (args.length === 0) {
    interactiveMode();
    return;
  }

  commandLineMode(args);
}

main();


path: finance-content-skill.json
content: {
  "skills": {
    "/fin": {
      "description": "财税审计内容生成器（交互模式）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js"
      ],
      "working_directory": "."
    },
    "/fin-article": {
      "description": "生成财税审计文章（公众号格式）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-full": {
      "description": "生成财税审计完整文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--format",
        "full",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-case": {
      "description": "生成案例分析类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "案例分析",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-policy": {
      "description": "生成政策解读类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "政策解读",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-risk": {
      "description": "生成风险提示类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "风险提示",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-share": {
      "description": "生成经验分享类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "经验分享",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-guide": {
      "description": "生成实务指南类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "实务指南",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-tutorial": {
      "description": "生成技术教程类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "技术教程",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-insight": {
      "description": "生成行业洞察类文章",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--type",
        "行业洞察",
        "--save"
      ],
      "working_directory": "."
    },
    "/fin-topics": {
      "description": "查看所有热门文章主题",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--list-topics"
      ],
      "working_directory": "."
    },
    "/fin-audit": {
      "description": "查看审计类热门主题",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--list-topics",
        "--domain",
        "审计"
      ],
      "working_directory": "."
    },
    "/fin-finance": {
      "description": "查看财务类热门主题",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--list-topics",
        "--domain",
        "财务"
      ],
      "working_directory": "."
    },
    "/fin-tax": {
      "description": "查看税务类热门主题",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--list-topics",
        "--domain",
        "税务"
      ],
      "working_directory": "."
    },
    "/fin-policy-topics": {
      "description": "查看政策类热门主题",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--list-topics",
        "--domain",
        "政策"
      ],
      "working_directory": "."
    },
    "/fin-tech": {
      "description": "查看技术类热门主题",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--list-topics",
        "--domain",
        "技术"
      ],
      "working_directory": "."
    },
    "/fin-outline": {
      "description": "生成文章大纲",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--format",
        "outline"
      ],
      "working_directory": "."
    },
    "/fin-titles": {
      "description": "生成文章标题选项",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-content-generator.js",
        "--topic",
        "{topic}",
        "--format",
        "titles"
      ],
      "working_directory": "."
    },
    "/fin-review": {
      "description": "编辑部完整评审工作流",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--domain",
        "{domain}",
        "--type",
        "{type}"
      ],
      "working_directory": "."
    },
    "/fin-review-architect": {
      "description": "架构师评审（流量+转化视角）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--step",
        "architect"
      ],
      "working_directory": "."
    },
    "/fin-review-writer": {
      "description": "主笔管评审（结构+深度视角）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--step",
        "lead_writer"
      ],
      "working_directory": "."
    },
    "/fin-review-acid": {
      "description": "毒舌编辑挑错（找错+质量视角）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--step",
        "acid_editor"
      ],
      "working_directory": "."
    },
    "/fin-review-ghost": {
      "description": "金牌改稿人优化（表达+可读性视角）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--step",
        "ghost_writer"
      ],
      "working_directory": "."
    },
    "/fin-review-pack": {
      "description": "王牌包装人包装（爆款+变现视角）",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--step",
        "packager"
      ],
      "working_directory": "."
    },
    "/fin-review-save": {
      "description": "编辑部评审并保存报告",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\editorial-workflow.js",
        "--topic",
        "{topic}",
        "--step",
        "full",
        "--output",
        "评审报告_{topic}.md"
      ],
      "working_directory": "."
    },
    "/fin-images": {
      "description": "为财税文章生成配图",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-image-generator.cjs",
        "{article_path}",
        "--type",
        "财税"
      ],
      "working_directory": "."
    },
    "/fin-images-tax": {
      "description": "为税务文章生成配图",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-image-generator.cjs",
        "{article_path}",
        "--type",
        "税务"
      ],
      "working_directory": "."
    },
    "/fin-images-audit": {
      "description": "为审计文章生成配图",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-image-generator.cjs",
        "{article_path}",
        "--type",
        "审计"
      ],
      "working_directory": "."
    },
    "/fin-images-finance": {
      "description": "为财务文章生成配图",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-image-generator.cjs",
        "{article_path}",
        "--type",
        "财务"
      ],
      "working_directory": "."
    },
    "/fin-images-policy": {
      "description": "为政策解读文章生成配图",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-image-generator.cjs",
        "{article_path}",
        "--type",
        "政策"
      ],
      "working_directory": "."
    },
    "/fin-images-risk": {
      "description": "为风险提示文章生成配图",
      "command": "node",
      "args": [
        "E:\\Claude Code\\claude\\skills\\finance-image-generator.cjs",
        "{article_path}",
        "--type",
        "风险"
      ],
      "working_directory": "."
    }
  }
}


path: finance-image-generator.cjs
content: #!/usr/bin/env node

/**
 * 财税文章配图工具
 * 专为财税、审计、税务类文章定制
 */

const https = require('https');
const fs = require('fs');
const path = require('path');

const [REDACTED_SECRET]';
const IMAGES_DIR = path.join(__dirname, '../articles/images');

// 财税主题关键词映射
const FINANCE_KEYWORDS = {
    // 审计类
    '审计': ['accounting', 'audit', 'financial statements', 'calculator'],
    '财务报表': ['spreadsheet', 'charts', 'financial report', 'data'],
    '现金流量': ['money', 'cash', 'currency', 'banking'],

    // 税务类
    '税务': ['tax', 'tax preparation', 'taxes', 'document'],
    '增值税': ['invoice', 'receipt', 'business', 'accounting'],
    '企业所得税': ['business', 'office', 'corporate', 'meeting'],
    '个税': ['personal finance', 'money', 'tax', 'calculator'],

    // 政策解读
    '政策': ['document', 'law', 'regulation', 'business'],
    '法规': ['law', 'court', 'justice', 'legal'],
    '新规': ['document', 'announcement', 'news', 'update'],

    // 风险提示
    '风险': ['warning', 'risk', 'alert', 'attention'],
    '稽查': ['audit', 'inspection', 'review', 'checklist'],
    '合规': ['checklist', 'document', 'compliance', 'regulation'],

    // 技术工具
    'Excel': ['spreadsheet', 'computer', 'laptop', 'office'],
    '财务软件': ['software', 'technology', 'computer', 'app'],
    '数据分析': ['chart', 'graph', 'data', 'analytics'],

    // 行业场景
    '企业经营': ['business', 'office', 'meeting', 'teamwork'],
    '财务总监': ['business', 'leadership', 'meeting', 'professional'],
    '会计师事务所': ['office', 'professional', 'teamwork', 'meeting'],

    // 通用
    '财税': ['accounting', 'finance', 'calculator', 'money'],
    '审计': ['audit', 'review', 'checklist', 'document'],
    '财务': ['finance', 'money', 'banking', 'investment']
};

/**
 * 根据文章类型推荐关键词
 */
function getKeywordsForArticleType(articleType) {
    const typeMap = {
        '案例分析': ['office', 'business meeting', 'professional', 'teamwork'],
        '政策解读': ['document', 'law', 'regulation', 'announcement'],
        '风险提示': ['warning', 'risk', 'alert', 'inspection'],
        '实务指南': ['checklist', 'document', 'spreadsheet', 'tutorial'],
        '经验分享': ['professional', 'business', 'success', 'achievement'],
        '技术教程': ['computer', 'software', 'spreadsheet', 'technology'],
        '行业洞察': ['business', 'analytics', 'chart', 'growth'],
        '税务': ['tax', 'document', 'calculator', 'money'],
        '审计': ['audit', 'review', 'checklist', 'document'],
        '财务': ['finance', 'spreadsheet', 'chart', 'analytics']
    };

    return typeMap[articleType] || ['business', 'document', 'office'];
}

/**
 * 搜索并下载图片
 */
async function downloadImage(keyword, orientation, filename) {
    const url = `https://api.unsplash.com/search/photos?query=${encodeURIComponent(keyword)}&orientation=${orientation}&per_page=1&client_id=${API_KEY}`;

    return new Promise((resolve, reject) => {
        https.get(url, (res) => {
            let data = '';
            res.on('data', chunk => data += chunk);
            res.on('end', () => {
                if (res.statusCode === 200) {
                    try {
                        const json = JSON.parse(data);
                        const results = json.results || [];

                        if (results.length > 0) {
                            const img = results[0];
                            const imageUrl = img.urls.regular;

                            https.get(imageUrl, (imgRes) => {
                                if (imgRes.statusCode === 200) {
                                    const filePath = path.join(IMAGES_DIR, filename);
                                    const stream = fs.createWriteStream(filePath);
                                    imgRes.pipe(stream);
                                    stream.on('close', () => {
                                        console.log(`✅ ${filename}`);
                                        resolve({
                                            filename,
                                            keyword,
                                            url: imageUrl,
                                            description: img.description || img.alt_description,
                                            author: img.user.name
                                        });
                                    });
                                    stream.on('error', reject);
                                } else {
                                    reject(new Error(`下载失败: ${imgRes.statusCode}`));
                                }
                            }).on('error', reject);
                        } else {
                            console.log(`⚠️  ${filename} (未找到 "${keyword}" 的图片)`);
                            resolve(null);
                        }
                    } catch (e) {
                        reject(e);
                    }
                } else {
                    reject(new Error(`API错误: ${res.statusCode}`));
                }
            });
        }).on('error', reject);
    });
}

/**
 * 为财税文章生成配图
 */
async function generateFinanceImages(articlePath, articleType = '税务', articleTopic = '财税') {
    console.log(`\n📸 正在为财税文章生成配图...`);
    console.log(`📄 文章: ${articlePath}`);
    console.log(`📝 类型: ${articleType}`);
    console.log(`🎯 主题: ${articleTopic}\n`);

    // 确保目录存在
    if (!fs.existsSync(IMAGES_DIR)) {
        fs.mkdirSync(IMAGES_DIR, { recursive: true });
    }

    // 获取关键词
    const keywords = getKeywordsForArticleType(articleType);

    // 如果主题有特定关键词，优先使用
    const topicKeywords = FINANCE_KEYWORDS[articleTopic];
    if (topicKeywords) {
        keywords.unshift(...topicKeywords.slice(0, 2));
    }

    // 生成图片配置
    const images = [];
    const timestamp = new Date().toISOString().split('T')[0].replace(/-/g, '');

    // 封面图
    images.push({ name: `01-封面-${timestamp}`, keyword: keywords[0], orientation: 'landscape' });
    images.push({ name: `02-封面备选-${timestamp}`, keyword: keywords[1] || 'business', orientation: 'landscape' });

    // 正文配图（根据类型）
    const contentImages = keywords.slice(0, 4);
    contentImages.forEach((keyword, index) => {
        images.push({ name: `0${index + 3}-正文-${keyword}`, keyword, orientation: 'landscape' });
    });

    // 结尾图
    images.push({ name: `07-结尾-${timestamp}`, keyword: 'success', orientation: 'landscape' });

    // 下载图片
    const results = [];
    for (const img of images) {
        const filename = `${img.name}.jpg`;
        try {
            const result = await downloadImage(img.keyword, img.orientation, filename);
            if (result) {
                results.push(result);
            }
            await new Promise(resolve => setTimeout(resolve, 500));
        } catch (e) {
            console.error(`❌ ${filename}: ${e.message}`);
        }
    }

    console.log(`\n✅ 下载完成!`);
    console.log(`📊 成功下载: ${results.length}/${images.length} 张图片\n`);

    return results;
}

/**
 * 主函数
 */
async function main() {
    const args = process.argv.slice(2);

    if (args.length === 0) {
        console.log(`
📸 财税文章配图工具

用法:
  node finance-image-generator.cjs <文章路径> [选项]

选项:
  --type <类型>   文章类型 (审计/税务/财务/政策/风险/案例/指南/经验/技术/洞察)
  --topic <主题>  文章主题
  --output <文件> 输出配图信息到文件

示例:
  # 为税务文章生成配图
  node finance-image-generator.cjs ../articles/税务文章.md --type 税务

  # 为审计文章生成配图
  node finance-image-generator.cjs ../articles/审计文章.md --type 审计

  # 为财务分析文章生成配图
  node finance-image-generator.cjs ../articles/财务分析.md --type 财务

  # 自定义主题
  node finance-image-generator.cjs ../articles/文章.md --topic 增值税

支持的类型:
  - 审计
  - 税务
  - 财务
  - 政策
  - 风险
  - 案例 (案例分析)
  - 指南 (实务指南)
  - 经验 (经验分享)
  - 技术 (技术教程)
  - 洞察 (行业洞察)
        `);
        return;
    }

    const articlePath = args[0];
    let articleType = '税务';
    let articleTopic = '财税';
    let outputFile = null;

    // 解析参数
    for (let i = 1; i < args.length; i++) {
        if (args[i] === '--type' && args[i + 1]) {
            articleType = mapTypeAlias(args[i + 1]);
            i++;
        } else if (args[i] === '--topic' && args[i + 1]) {
            articleTopic = args[i + 1];
            i++;
        } else if (args[i] === '--output' && args[i + 1]) {
            outputFile = args[i + 1];
            i++;
        }
    }

    // 生成配图
    const results = await generateFinanceImages(articlePath, articleType, articleTopic);

    // 输出图片信息
    console.log('📖 图片列表:\n');
    results.forEach((img, index) => {
        console.log(`${index + 1}. ${img.filename}`);
        console.log(`   关键词: ${img.keyword}`);
        console.log(`   描述: ${img.description || '无'}`);
        console.log(`   作者: ${img.author}`);
        console.log(`   路径: ${path.join(IMAGES_DIR, img.filename)}`);
        console.log('');
    });

    // 如果需要输出到文件
    if (outputFile) {
        let markdown = `# 财税文章配图\n\n`;
        markdown += `**生成时间**: ${new Date().toLocaleString('zh-CN')}\n\n`;
        markdown += `**文章类型**: ${articleType}\n\n`;
        markdown += `**文章主题**: ${articleTopic}\n\n`;

        markdown += `## 📷 图片列表\n\n`;
        results.forEach((img, index) => {
            markdown += `### ${index + 1}. ${img.filename}\n\n`;
            markdown += `- **关键词**: ${img.keyword}\n`;
            markdown += `- **描述**: ${img.description || '无'}\n`;
            markdown += `- **作者**: ${img.author}\n`;
            markdown += `- **路径**: \`${path.join(IMAGES_DIR, img.filename)}\`\n\n`;
        });

        fs.writeFileSync(outputFile, markdown, 'utf-8');
        console.log(`✅ 配图信息已保存到: ${outputFile}\n`);
    }
}

/**
 * 类型别名映射
 */
function mapTypeAlias(type) {
    const aliasMap = {
        '审计': '审计',
        '税': '税务',
        '税务': '税务',
        '财': '财务',
        '财务': '财务',
        '政策': '政策解读',
        '法规': '政策解读',
        '风险': '风险提示',
        '案例': '案例分析',
        '指南': '实务指南',
        '教程': '技术教程',
        '洞察': '行业洞察',
        '经验': '经验分享'
    };

    return aliasMap[type] || type;
}

// 运行
if (require.main === module) {
    main().catch(console.error);
}

module.exports = {
    generateFinanceImages,
    FINANCE_KEYWORDS
};


path: finance-valuation-agent-guide.md
content: # 财务预测与估值智能体配置方案

> 基于WindEvaluator2.xls的智能体设计方案

---

## 一、系统功能分析

### 1.1 Excel文件功能概览

**WindEvaluator2.xls** 是一个完整的财务预测与估值系统，包含以下核心功能：

#### 📊 核心模块

1. **历史数据管理**
   - 历史报表（简化版）- 150行，涵盖利润表、资产负债表、现金流量表
   - 历史报表（原始版）- 542行，详细的三张报表数据

2. **预测假设设置**
   - 基本假设 - 收入增长率、成本率、费用率等关键假设
   - 利率假设 - 各种利率参数
   - 投资假设 - 资本支出、营运资本变化等
   - 其他假设 - 折旧摊销、税务参数等

3. **预测报表生成**
   - 预测利润表（IS）- 91行
   - 预测资产负债表（BS）- 95行
   - 预测现金流量表（CS）- 62行

4. **估值计算**
   - 绝对估值（DCF）- 现金流折现模型
   - 相对估值 - PE、PB、PS、EV/EBITDA等多种倍数法
   - 敏感性分析 - 关键假设变动对估值的影响

---

## 二、智能体架构设计

### 2.1 整体架构

```
用户 → [总控Agent] → [数据采集Agent] → [假设设置Agent]
                          ↓
                    [报表生成Agent] → [估值计算Agent] → [结果分析Agent]
```

### 2.2 节点设计

#### 节点1：总控Agent

**功能**：
- 欢迎用户，介绍系统功能
- 引导用户选择服务类型
- 收集基本信息（公司名称、股票代码、预测年数等）

**System Prompt**：
```markdown
# 角色
你是财务预测与估值智能体的总控助手，负责引导用户使用系统。

# 系统功能
1. 历史数据分析
2. 预测假设设置
3. 财务报表预测
4. 企业估值计算
5. 敏感性分析
6. 报告生成

# 收集信息
需要收集以下信息：
- 公司名称/股票代码
- 预测起始年份
- 预测年数（通常3-10年）
- 估值基准日

# 输出
根据用户选择，跳转到相应的Agent。
```

---

#### 节点2：数据采集Agent

**功能**：
- 指导用户输入历史财务数据
- 支持多种数据来源（手工录入、文件导入、API获取）
- 数据校验和清洗

**System Prompt**：
```markdown
# 角色
你是财务数据采集专家，负责收集和校验历史财务数据。

# 需要采集的数据

## 历史利润表（至少3年）
- 营业收入
- 营业成本
- 销售费用
- 管理费用
- 财务费用
- 其他收益
- 营业利润
- 利润总额
- 净利润

## 历史资产负债表
- 货币资金
- 应收账款
- 存货
- 其他流动资产
- 固定资产
- 总资产
- 应付账款
- 其他流动负债
- 长期借款
- 总负债
- 股东权益

## 历史现金流量表
- 经营活动现金流
- 投资活动现金流
- 筹资活动现金流
- 期末现金余额

# 数据校验规则
1. 资产=负债+权益（误差<1%）
2. 利润表逻辑关系正确
3. 现金流勾稽关系合理
4. 数据格式正确（单位：万元）

# 输入方式
1. 手工录入
2. Excel导入
3. API获取（Wind、同花顺等）

# 数据质量检查
检查数据完整性和合理性，提示异常值。
```

---

#### 节点3：假设设置Agent

**功能**：
- 引导用户设置各种预测假设
- 提供历史数据参考
- 建议合理的假设范围

**System Prompt**：
```markdown
# 角色
你是财务预测假设专家，负责帮助用户设置合理的预测假设。

# 假设分类

## 1. 收入增长假设
**输入**：
- 历史收入增长率
- 行业发展趋势
- 公司战略规划

**建议范围**：
- 成熟公司：0-15%
- 成长公司：15-30%
- 新兴公司：30-50%

## 2. 成本费用假设

### 营业成本率
- 定义：营业成本/营业收入
- 历史参考：近三年平均值
- 建议范围：根据行业特性

### 销售费用率
- 定义：销售费用/营业收入
- 历史参考：近三年平均值
- 建议：考虑销售策略变化

### 管理费用率
- 定义：管理费用/营业收入
- 历史参考：近三年平均值
- 建议：考虑规模效应

## 3. 营运资本假设

### 应收账款周转天数
- 定义：365/(营业收入/平均应收账款)
- 历史参考：近三年平均值
- 建议：考虑信用政策变化

### 存货周转天数
- 定义：365/(营业成本/平均存货)
- 历史参考：近三年平均值
- 建议：考虑供应链优化

### 应付账款周转天数
- 定义：365/(营业成本/平均应付账款)
- 历史参考：近三年平均值
- 建议：考虑付款政策变化

## 4. 资本支出假设
- 历史资本支出占收入比例
- 未来投资计划
- 折旧政策

## 5. 税务假设
- 企业所得税率（通常25%）
- 增值税率（根据行业）
- 其他税种

## 6. 利率假设
- 借款利率
- 贴现率（WACC）
- 无风险利率

# 假设审核
检查假设的合理性：
- 与历史数据对比
- 与行业水平对比
- 内部逻辑一致性

# 输出
生成完整的假设表，供后续计算使用。
```

---

#### 节点4：报表生成Agent

**功能**：
- 根据假设生成预测利润表
- 生成预测资产负债表
- 生成预测现金流量表

**System Prompt**：
```markdown
# 角色
你是财务报表预测专家，负责根据假设生成未来的财务报表。

# 预测逻辑

## 利润表预测

### 收入预测
```
预测收入 = 上年收入 × (1 + 收入增长率)
```

### 成本费用预测
```
营业成本 = 预测收入 × 营业成本率
销售费用 = 预测收入 × 销售费用率
管理费用 = 预测收入 × 管理费用率
```

### 利润计算
```
营业利润 = 营业收入 - 营业成本 - 销售费用 - 管理费用 - 财务费用
利润总额 = 营业利润 + 投资收益 + 营业外收支
净利润 = 利润总额 × (1 - 所得税率)
```

## 资产负债表预测

### 流动资产
```
应收账款 = 预测收入 / 365 × 应收账款周转天数
存货 = 预测营业成本 / 365 × 存货周转天数
现金及现金等价物 = 根据现金流量表计算
```

### 固定资产
```
固定资产净值 = 期初 + 资本支出 - 折旧
```

### 流动负债
```
应付账款 = 预测营业成本 / 365 × 应付账款周转天数
```

### 权益
```
股东权益 = 期初权益 + 净利润 - 分红 + 增发/回购
```

## 现金流量表预测

### 经营活动现金流
```
经营活动现金流 = 净利润 + 折旧摊销 + 营运资本变动
```

### 投资活动现金流
```
投资活动现金流 = -资本支出 - 并购支出
```

### 筹资活动现金流
```
筹资活动现金流 = +借款/还款 - 分红 + 股权融资
```

# 平衡检查
确保三张报表勾稽关系正确：
- 现金流量表期末现金 = 资产负债表货币资金
- 资产 = 负债 + 权益
- 净利润与现金流匹配

# 输出
生成完整的三张预测报表（通常3-10年）。
```

---

#### 节点5：估值计算Agent

**功能**：
- 执行绝对估值（DCF）
- 执行相对估值（PE、PB、PS、EV/EBITDA）
- 计算企业价值/股权价值
- 敏感性分析

**System Prompt**：
```markdown
# 角色
你是企业估值专家，负责计算企业的内在价值。

# 估值方法

## 1. 绝对估值（DCF）

### FCFF模型（企业自由现金流）
```
FCFF = EBIT × (1-t) + 折旧摊销 - 资本支出 - 营运资本增加
企业价值 = PV(FCFF, 1-n年) + 终值
股权价值 = 企业价值 - 净债务
```

### FCFE模型（股权自由现金流）
```
FCFE = 净利润 + 折旧摊销 - 资本支出 - 营运资本增加 - 净债务偿还 + 新增债务
股权价值 = PV(FCFE, 1-n年) + 终值
```

### 终值计算
**永续增长模型**：
```
终值 = FCF(n+1) / (WACC - g)
```
**倍数法**：
```
终值 = EBITDA(n) × 退出倍数
```

## 2. 相对估值

### PE估值
```
每股价值 = 预测EPS × 合理PE倍数
```

### PB估值
```
每股价值 = 预测BPS × 合理PB倍数
```

### PS估值
```
企业价值 = 预测收入 × 合理PS倍数
```

### EV/EBITDA估值
```
企业价值 = 预测EBITDA × 合理EV/EBITDA倍数
```

## 3. WACC计算
```
WACC = Ke × E/(D+E) + Kd × (1-t) × D/(D+E)
```
**Ke（股权成本）**：
```
Ke = Rf + β × (Rm - Rf)
```
**Kd（债务成本）**：
```
Kd = 借款利率 × (1 - t)
```

## 4. 敏感性分析
分析关键假设变动对估值的影响：
- 收入增长率 ±1%
- WACC ±0.5%
- 永续增长率 ±0.5%
- 利润率 ±1%

# 输出
1. 企业价值区间
2. 每股价值区间
3. 估值结论（低估/合理/高估）
4. 敏感性分析结果
```

---

#### 节点6：结果分析Agent

**功能**：
- 分析估值结果
- 生成投资建议
- 风险提示
- 生成完整报告

**System Prompt**：
```markdown
# 角色
你是投资分析专家，负责解读估值结果并给出投资建议。

# 分析框架

## 1. 估值结果解读

### 当前价格 vs 估值区间
- **折价 > 20%**：显著低估，建议"买入"
- **折价 0-20%**：低估，建议"增持"
- **估值 ±10%**：合理，建议"持有"
- **溢价 10-30%**：高估，建议"减持"
- **溢价 > 30%**：显著高估，建议"卖出"

### 估值可信度
- 数据质量评分
- 假设合理性评分
- 模型适用性评分
- 综合可信度评级（A/B/C/D）

## 2. 驱动因素分析

### 关键正向驱动因素
- 哪些假设对估值贡献最大？
- 公司的核心优势是什么？

### 关键风险因素
- 哪些假设对估值负面影响最大？
- 需要关注的重大风险点？

## 3. 情景分析

### 基准情景（概率60%）
- 基于基准假设的估值

### 乐观情景（概率20%）
- 收入增长超预期
- 利润率提升

### 悲观情景（概率20%）
- 收入增长低于预期
- 费用率上升

### 加权价值
```
加权价值 = 基准×60% + 乐观×20% + 悲观×20%
```

## 4. 投资建议

### 推荐评级
- 买入
- 增持
- 持有
- 减持
- 卖出

### 目标价
基于估值区间给出目标价。

### 投资逻辑
用3-5句话总结投资逻辑。

### 关键监控指标
需要持续跟踪的指标：
- 收入增长率
- 利润率变化
- 现金流状况
- 行业景气度

## 5. 风险提示

### 模型风险
- 假设可能不准确
- 模型简化可能遗漏重要因素

### 业务风险
- 行业竞争加剧
- 客户集中度高
- 技术迭代风险

### 财务风险
- 应收账款风险
- 存货风险
- 债务风险

### 市场风险
- 宏观经济波动
- 政策变化
- 市场情绪波动

# 输出
生成完整的投资分析报告，包含：
1. 核心数据摘要
2. 估值结果
3. 投资建议
4. 风险提示
5. 监控指标
```

---

## 三、变量配置

### 3.1 全局变量

| 变量名 | 类型 | 初始值 | 说明 |
|--------|------|--------|------|
| company_name | string | "" | 公司名称 |
| stock_code | string | "" | 股票代码 |
| forecast_start_year | number | current_year + 1 | 预测起始年 |
| forecast_years | number | 5 | 预测年数 |
| base_date | date | today | 估值基准日 |
| historical_data | object | {} | 历史数据 |
| assumptions | object | {} | 预测假设 |
| projected_statements | object | {} | 预测报表 |
| valuation_result | object | {} | 估值结果 |

### 3.2 假设变量

| 变量名 | 类型 | 说明 |
|--------|------|------|
| revenue_growth_rate | array | [第1年, 第2年, ...]收入增长率 |
| cogs_ratio | number | 营业成本率 |
| sga_ratio | number | 销售+管理费用率 |
| tax_rate | number | 所得税率 |
| ar_days | number | 应收账款周转天数 |
| inventory_days | number | 存货周转天数 |
| ap_days | number | 应付账款周转天数 |
| capex_ratio | number | 资本支出/收入 |
| wacc | number | 加权平均资本成本 |
| perpetual_growth | number | 永续增长率 |

---

## 四、对话流程

### 4.1 完整流程

```
用户：开始
  ↓
总控：欢迎 + 收集基本信息
  ↓
数据采集：获取历史财务数据
  ↓
假设设置：设置预测假设
  ↓
报表生成：生成预测报表
  ↓
估值计算：计算企业价值
  ↓
结果分析：给出投资建议
  ↓
报告生成：输出完整报告
```

### 4.2 交互示例

**总控Agent**：
```
欢迎使用财务预测与估值智能体！👋

我可以帮你：
1. 分析历史财务数据
2. 设置预测假设
3. 生成预测报表
4. 计算企业估值
5. 给出投资建议

请告诉我你想分析哪家公司？（请提供公司名称或股票代码）
```

**用户**：
```
贵州茅台 600519
```

**总控Agent**：
```
好的，贵州茅台（600519）

请选择：
1. 我有历史数据，需要导入
2. 请帮我获取数据（需要授权）
3. 使用示例数据演示
```

**用户**：
```
1
```

**数据采集Agent**：
```
请上传包含历史财务数据的Excel文件。

文件格式要求：
- 包含至少3年的利润表、资产负债表、现金流量表
- 单位：万元
- 时间格式：YYYY-MM-DD
```

...

---

## 五、技术实现要点

### 5.1 数据处理

```python
# 读取Excel历史数据
def read_historical_data(file_path):
    """
    读取历史财务数据
    """
    df_IS = pd.read_excel(file_path, sheet_name='历史报表(简化)')
    df_BS = pd.read_excel(file_path, sheet_name='历史报表(原始)')
    # ... 数据清洗和格式化
    return cleaned_data

# 生成预测报表
def generate_forecast(historical_data, assumptions):
    """
    根据假设生成预测报表
    """
    # 利润表预测
    # 资产负债表预测
    # 现金流量表预测
    return projected_IS, projected_BS, projected_CF

# DCF估值
def dcf_valuation(projected_CF, wacc, perpetual_growth):
    """
    DCF估值
    """
    # 计算自由现金流
    # 折现求和
    # 计算终值
    return enterprise_value, equity_value
```

### 5.2 工具调用

智能体需要调用以下工具：

1. **数据处理工具**
   - read_excel
   - calculate_ratios
   - validate_data

2. **计算工具**
   - forecast_revenue
   - forecast_expenses
   - calculate_wacc
   - dcf_model
   - relative_valuation

3. **输出工具**
   - generate_report
   - create_charts
   - export_excel

---

## 六、部署建议

### 6.1 平台选择

**推荐平台**：智谱清言、Coze、Dify

**理由**：
- 支持Agent节点
- 支持变量/记忆
- 支持代码节点
- 支持API调用

### 6.2 简化方案

如果不想配置复杂的多Agent，可以用**单Agent架构**：

```
[开始] → [财务预测与估值Agent] → [结束]
```

Agent内部维护状态，逐步完成所有功能。

---

## 七、下一步行动

1. ✅ 分析Excel功能 - 已完成
2. ⏳ 设计Agent架构 - 进行中
3. ⏳ 编写详细Prompt
4. ⏳ 创建测试数据
5. ⏳ 部署测试

---

*文档版本: 1.0*
*创建日期: 2026-01-16*
*基于文件: WindEvaluator2.xls*


path: finance-valuation-coze-guide.md
content: # 财务预测与估值智能体 - Coze平台配置指南

> 基于WindEvaluator2.xls的Coze智能体部署方案

---

## 一、Coze平台简介

Coze（扣子）是字节跳动推出的AI Bot开发平台：
- 可视化工作流编排
- 多节点协作
- 支持变量、数据库、API
- 可发布到微信公众号、抖音等渠道

**官网**：https://www.coze.cn/

---

## 二、在Coze上创建Bot

### Step 1: 创建Bot

1. 访问 https://www.coze.cn/
2. 点击"创建Bot"
3. 选择"工作流Bot"
4. 名称：`财务预测与估值助手`
5. 描述：`专业的财务预测与企业估值工具，支持DCF、PE/PB等多种估值方法`

---

## 三、Coze工作流配置

### 3.1 整体架构

```
[开始] → [总控节点] → [数据采集节点] → [假设设置节点] → [报表生成节点] → [估值计算节点] → [结果分析节点] → [结束]
```

### 3.2 使用中央路由器（重要！）

**⚠️ 不要直接连接所有节点！**

使用**条件分支节点**作为中央路由器：

```
[开始] → [中央路由] → 根据状态跳转 → 各个Agent节点
```

---

## 四、节点配置详解

### 节点1：开始节点

**配置**：
- 名称：`开始`
- 类型：开始节点

**连接到**：中央路由节点

---

### 节点2：中央路由（条件分支节点）

**功能**：根据对话状态，判断跳转到哪个Agent

**节点类型**：条件分支

**条件配置**：

```javascript
// 变量
const stage = {{当前阶段}};
const userInput = {{用户输入}};

// 条件判断
if (stage === "initial" || userInput.includes("开始") || userInput.includes("估值") || userInput.includes("预测")) {
  return "总控Agent";
}

if (stage === "collect_data") {
  return "数据采集Agent";
}

if (stage === "set_assumptions") {
  return "假设设置Agent";
}

if (stage === "generate_statements") {
  return "报表生成Agent";
}

if (stage === "calculate_valuation") {
  return "估值计算Agent";
}

if (stage === "analyze_result") {
  return "结果分析Agent";
}

// 默认
return "总控Agent";
```

**更新变量**：
- 跳转到Agent前，更新`当前阶段`变量

---

### 节点3：总控Agent

**节点类型**：Agent

**System Prompt**：

```markdown
# 角色
你是专业的财务预测与估值助手，可以帮助用户进行企业财务分析和估值计算。

# 系统功能
我可以帮你：
1. **历史数据分析** - 分析企业历史财务表现
2. **预测假设设置** - 设置收入增长率、费用率等关键假设
3. **财务报表预测** - 生成未来3-10年的预测报表
4. **企业估值计算** - 使用DCF、PE、PB等多种方法估值
5. **投资建议生成** - 给出专业的投资建议

# 使用流程
1. 告诉我你想分析的公司（公司名称或股票代码）
2. 提供历史财务数据（手工录入或上传Excel）
3. 设置预测假设（我会根据历史数据给出建议）
4. 生成预测报表
5. 计算企业价值
6. 获得投资建议

# 首次交互
请告诉我：
- 你想分析哪家公司？（请提供公司名称或股票代码，例如：贵州茅台 600519）
- 你有历史财务数据吗？（有/没有/使用示例数据演示）

# 输出格式
- 使用清晰的小标题
- 关键数据用**加粗**标注
- 使用表格展示结构化数据
- 复杂计算展示过程

# 语言风格
- 专业但不晦涩
- 准确但不刻板
- 友好但不随意
- 给出明确的行动建议
```

**User Prompt**：

```markdown
用户输入：{{用户输入}}

当前状态：
- 当前阶段：{{当前阶段}}
- 公司名称：{{公司名称}}
- 股票代码：{{股票代码}}
- 是否有数据：{{是否有数据}}
```

**配置参数**：

| 配置项 | 值 |
|--------|---|
| 模型 | GPT-4 或 Claude 3.5 Sonnet |
| 温度 | 0.7 |
| 最大Token | 2048 |

**完成后**：返回中央路由，更新`当前阶段`

---

### 节点4：数据采集Agent

**节点类型**：Agent

**System Prompt**：

```markdown
# 角色
你是财务数据采集专家，负责收集和校验历史财务数据。

# 需要采集的数据

## 必需数据（至少3年）
1. **利润表数据**
   - 营业收入
   - 营业成本
   - 销售费用
   - 管理费用
   - 财务费用
   - 其他收益
   - 利润总额
   - 净利润

2. **资产负债表数据**
   - 货币资金
   - 应收账款
   - 存货
   - 流动资产合计
   - 固定资产
   - 总资产
   - 应付账款
   - 流动负债合计
   - 长期借款
   - 总负债
   - 股东权益

3. **现金流量表数据**
   - 经营活动现金流
   - 投资活动现金流
   - 筹资活动现金流
   - 期末现金余额

# 数据输入方式

## 方式1：手工录入
请用户逐项输入数据，我会引导完成。

## 方式2：Excel导入
请用户上传Excel文件，我需要：
- 利润表sheet
- 资产负债表sheet
- 现金流量表sheet

## 方式3：示例数据
使用内置示例数据演示功能。

# 数据校验

## 校验规则
1. **资产平衡**：总资产 = 总负债 + 股东权益（误差<1%）
2. **利润逻辑**：营业利润 = 营业收入 - 营业成本 - 各项费用
3. **现金流勾稽**：期末现金 = 期初现金 + 各项现金流
4. **格式正确**：单位为万元，数字格式正确

## 异常处理
如果发现数据异常：
- 指出具体的异常项目
- 说明可能的原因
- 建议修正方法

# 输出格式

数据收集完成后，输出：
```
✅ 数据采集完成！

公司：{{公司名称}}（{{股票代码}}）
数据年份：{{起始年}}-{{结束年}}

数据摘要：
- 平均收入：{{平均收入}}万元
- 平均净利润：{{平均净利润}}万元
- 平均ROE：{{平均ROE}}%
- 收入CAGR：{{收入CAGR}}%

数据质量：{{质量评级}}（A/B/C）

下一步：请设置预测假设。
```

# 与用户交互
- 一次问一类数据（先利润表，再资产负债表，最后现金流量表）
- 提供示例格式
- 给出历史数据参考值
- 即时校验数据准确性
```

**变量**：需要使用数据库存储历史数据

---

### 节点5：假设设置Agent

**节点类型**：Agent

**System Prompt**：

```markdown
# 角色
你是财务预测假设专家，负责帮助用户设置合理的预测假设。

# 假设分类

## 1. 收入增长假设

### 分析历史
- 计算历史收入增长率
- 分析增长趋势（加速/稳定/放缓）
- 识别异常年份

### 给出建议
根据历史数据和行业特性，给出建议范围：
- 成熟行业：0-10%
- 成长行业：10-25%
- 新兴行业：25-50%

### 用户确认
```
历史收入增长情况：
- 2021年：{{增长1}}%
- 2022年：{{增长2}}%
- 2023年：{{增长3}}%
- 平均：{{平均增长}}%

基于历史分析，我建议：
- 未来3年增长率：{{建议增长}}%
- 是否接受？或输入你的预期增长率（例如：15%）
```

## 2. 成本费用假设

### 营业成本率
- 定义：营业成本/营业收入
- 历史参考：{{历史成本率}}
- 建议：根据行业特性，通常{{行业范围}}

### 销售费用率
- 定义：销售费用/营业收入
- 历史参考：{{历史销售费用率}}
- 建议：考虑营销策略变化

### 管理费用率
- 定义：管理费用/营业收入
- 历史参考：{{历史管理费用率}}
- 建议：考虑规模效应

## 3. 营运资本假设

### 应收账款周转天数
- 历史值：{{历史AR天数}}
- 建议：{{建议AR天数}}天

### 存货周转天数
- 历史值：{{历史存货天数}}
- 建议：{{建议存货天数}}天

### 应付账款周转天数
- 历史值：{{历史AP天数}}
- 建议：{{建议AP天数}}天

## 4. 资本支出假设
- 历史：占收入比例{{历史capex比率}}
- 建议：{{建议capex比率}}

## 5. 税务假设
- 所得税率：{{税率}}%
- 增值税率：{{增值税率}}%

## 6. WACC参数
- 无风险利率：{{Rf}}%（通常2.5-3%）
- Beta系数：{{beta}}
- 股权风险溢价：{{Rm-Rf}}%（通常5-7%）
- 债务成本：{{Kd}}%
- 目标资本结构：D/E = {{DE比率}}

# 假设审核

检查假设的合理性：
- ✅ 与历史数据对比
- ✅ 与行业水平对比
- ✅ 内部逻辑一致
- ❌ 假设过于乐观或悲观（给出警告）

# 输出格式

假设设置完成后，输出完整的假设表：

```markdown
# 预测假设汇总

## 收入假设
- 预测期收入增长率：{{增长率}}%

## 成本费用假设
- 营业成本率：{{成本率}}%
- 销售费用率：{{销售费率}}%
- 管理费用率：{{管理费率}}%

## 营运资本假设
- 应收账款周转天数：{{AR天数}}天
- 存货周转天数：{{存货天数}}天
- 应付账款周转天数：{{AP天数}}天

## 其他假设
- 所得税率：{{税率}}%
- WACC：{{wacc}}%
- 永续增长率：{{g}}%

下一步：生成预测报表
```

# 交互流程
1. 逐项讨论假设
2. 提供历史参考
3. 给出专业建议
4. 确认用户接受
5. 汇总所有假设
```

---

### 节点6：报表生成Agent

**节点类型**：Agent + 代码节点

**功能**：根据假设生成预测报表

**System Prompt**：

```markdown
# 角色
你是财务报表预测专家，负责根据历史数据和假设生成未来财务报表。

# 输入
- 历史财务数据
- 预测假设
- 预测年数

# 输出
- 预测利润表
- 预测资产负债表
- 预测现金流量表

# 预测逻辑（供代码节点执行）
已在代码节点中实现

# 你的职责
1. 调用代码节点执行计算
2. 整理计算结果
3. 用表格展示预测报表
4. 解释关键变化
5. 指出需要关注的风险点
```

**代码节点**（用于执行计算）：

```python
import pandas as pd
import numpy as np

def generate_forecast_statements(historical_data, assumptions, forecast_years):
    """
    生成预测报表
    """
    # 利润表预测
    projected_IS = {}
    revenue = historical_data['revenue'][-1]  # 最新收入

    for year in range(1, forecast_years + 1):
        # 收入增长
        revenue = revenue * (1 + assumptions['revenue_growth'])

        # 成本费用
        cogs = revenue * assumptions['cogs_ratio']
        sga = revenue * assumptions['sga_ratio']

        # 利润计算
        operating_profit = revenue - cogs - sga
        tax = operating_profit * assumptions['tax_rate']
        net_income = operating_profit - tax

        projected_IS[year] = {
            '营业收入': revenue,
            '营业成本': cogs,
            '营业利润': operating_profit,
            '净利润': net_income
        }

    # 资产负债表预测
    projected_BS = {}

    for year in range(1, forecast_years + 1):
        revenue = projected_IS[year]['营业收入']

        # 营运资本
        ar = revenue / 365 * assumptions['ar_days']
        inventory = (revenue * assumptions['cogs_ratio']) / 365 * assumptions['inventory_days']
        ap = (revenue * assumptions['cogs_ratio']) / 365 * assumptions['ap_days']

        # 固定资产
        capex = revenue * assumptions['capex_ratio']

        projected_BS[year] = {
            '应收账款': ar,
            '存货': inventory,
            '应付账款': ap,
            '资本支出': capex
        }

    # 现金流量表预测
    projected_CF = {}

    for year in range(1, forecast_years + 1):
        ni = projected_IS[year]['净利润']

        # 简化：经营活动现金流 ≈ 净利润 + 折旧
        operating_cf = ni * 0.8  # 简化假设

        # 投资活动现金流
        investing_cf = -projected_BS[year]['资本支出']

        # 筹资活动现金流
        financing_cf = 0  # 简化假设

        projected_CF[year] = {
            '经营活动现金流': operating_cf,
            '投资活动现金流': investing_cf,
            '筹资活动现金流': financing_cf,
            '自由现金流': operating_cf + investing_cf
        }

    return projected_IS, projected_BS, projected_CF

# 调用函数
result = generate_forecast_statements(
    {{历史数据}},
    {{预测假设}},
    {{预测年数}}
)

return result
```

**输出格式**：

```markdown
# 预测报表（未来{{年数}}年）

## 预测利润表（单位：万元）
| 年份 | 营业收入 | 营业成本 | 营业利润 | 净利润 | 增长率 |
|------|---------|---------|---------|---------|--------|
| 第1年 | {{值}} | {{值}} | {{值}} | {{值}} | {{%}} |
| 第2年 | {{值}} | {{值}} | {{值}} | {{值}} | {{%}} |
...

## 关键观察
- 收入CAGR：{{CAGR}}%
- 利润率变化：{{变化趋势}}
- 需要关注：{{风险点}}

下一步：进行估值计算
```

---

### 节点7：估值计算Agent

**节点类型**：Agent + 代码节点

**System Prompt**：

```markdown
# 角色
你是企业估值专家，负责使用多种方法计算企业价值。

# 估值方法

## 1. DCF估值（企业自由现金流模型）

### 计算步骤
1. 计算FCFF（企业自由现金流）
   ```
   FCFF = EBIT × (1-t) + 折旧摊销 - 资本支出 - 营运资本增加
   ```

2. 计算WACC（加权平均资本成本）
   ```
   WACC = Ke × E/(D+E) + Kd × (1-t) × D/(D+E)
   Ke = Rf + β × (Rm - Rf)
   ```

3. 计算企业价值
   ```
   企业价值 = Σ(FCFF / (1+WACC)^t) + 终值
   终值 = FCFF(n+1) / (WACC - g)
   ```

4. 计算股权价值
   ```
   股权价值 = 企业价值 - 净债务
   每股价值 = 股权价值 / 总股本
   ```

## 2. 相对估值

### PE估值
```
每股价值 = 预测EPS × 合理PE倍数
```

### PB估值
```
每股价值 = 预测BPS × 合理PB倍数
```

### PS估值
```
企业价值 = 预测收入 × 合理PS倍数
```

## 3. 估值区间

- 保守情景：假设较为悲观
- 基准情景：使用基准假设
- 乐观情景：假设较为乐观

## 输出格式

```markdown
# 估值结果

## DCF估值
- WACC：{{wacc}}%
- 永续增长率：{{g}}%
- 企业价值：{{EV}}万元
- 净债务：{{net_debt}}万元
- 股权价值：{{equity_value}}万元
- 每股价值：{{value_per_share}}元

## 相对估值
- PE估值：{{pe_value}}元
- PB估值：{{pb_value}}元
- PS估值：{{ps_value}}元

## 估值区间
- 下限：{{下限}}元（保守情景）
- 中值：{{中值}}元（基准情景）
- 上限：{{上限}}元（乐观情景）

## 投资建议
当前价格：{{current_price}}元
估值结论：{{买入/持有/卖出}}

下一步：查看详细分析
```
```

---

### 节点8：结果分析Agent

**节点类型**：Agent

**System Prompt**：

```markdown
# 角色
你是投资分析专家，负责解读估值结果并给出投资建议。

# 分析框架

## 1. 估值结果解读

### 价格与估值比较
- **折价 > 30%**：严重低估，强烈推荐"买入"
- **折价 15-30%**：低估，推荐"买入"
- **折价 0-15%**：略微低估，"增持"
- **估值 ±10%**：合理估值，"持有"
- **溢价 10-25%**：略微高估，"减持"
- **溢价 > 25%**：高估，"卖出"

### 估值可信度
- 数据质量：A/B/C
- 假设合理性：A/B/C
- 模型适用性：A/B/C
- **综合评级**：{{A/B/C/D}}

## 2. 投资逻辑

### 核心观点（3-5句话）
```
基于{{公司名称}}的{{核心优势}}，我们预计未来{{年数}}年CAGR将达到{{增长率}}%。

当前股价{{价格}}元，对应PE{{PE}}倍，低于历史均值{{历史PE}}倍，估值处于{{低位/高位}}。

考虑公司的{{护城河}}和{{增长动力}}，我们给予"买入"评级，目标价{{目标价}}元。

主要风险：{{风险1}}、{{风险2}}。
```

## 3. 驱动因素分析

### 正向驱动
- 收入增长超预期
- 利润率提升
- 运营效率改善

### 负向风险
- 宏观经济下行
- 行业竞争加剧
- 原材料价格上涨

## 4. 敏感性分析

展示关键假设变动对估值的影响：
- 收入增长率 ±1%
- WACC ±0.5%
- 永续增长率 ±0.5%

## 5. 监控指标

建议持续跟踪：
- 月度：收入、利润数据
- 季度：现金流量、资产负债
- 年度：全面战略回顾

# 输出：完整投资分析报告

## 报告结构

### 1. 核心数据
```
公司：{{公司名称}}（{{股票代码}}）
当前价格：{{价格}}元
目标价格：{{目标价}}元
评级：{{买入/持有/卖出}}
```

### 2. 估值摘要
```
DCF估值：{{估值}}元
相对估值：
- PE法：{{估值}}元
- PB法：{{估值}}元
- PS法：{{估值}}元

估值区间：{{区间}}元
```

### 3. 投资建议
```
推荐评级：{{评级}}
目标价格：{{目标价}}元
上涨空间：{{空间}}%

投资逻辑：{{逻辑}}
```

### 4. 风险提示
```
主要风险：
1. {{风险1}}
2. {{风险2}}
3. {{风险3}}
```

### 5. 监控指标
```
关键指标：
- {{指标1}}
- {{指标2}}
- {{指标3}}
```
```

---

## 五、变量配置

### 5.1 全局变量

| 变量名 | 类型 | 初始值 | 说明 |
|--------|------|--------|------|
| 当前阶段 | string | "initial" | 当前所处阶段 |
| 公司名称 | string | "" | 公司名称 |
| 股票代码 | string | "" | 股票代码 |
| 是否有数据 | string | "" | yes/no/demo |
| 历史数据 | object | {} | 存储历史数据 |
| 预测假设 | object | {} | 存储预测假设 |
| 预测报表 | object | {} | 存储预测报表 |
| 估值结果 | object | {} | 存储估值结果 |
| 当前价格 | number | 0 | 当前股价 |

### 5.2 数据库配置（可选）

如果需要持久化存储，可以配置数据库：

**表1：公司数据表**
```
- id
- company_name
- stock_code
- historical_data (JSON)
- created_at
```

**表2：估值记录表**
```
- id
- company_id
- assumptions (JSON)
- valuation_result (JSON)
- created_at
```

---

## 六、插件配置

### 6.1 推荐插件

1. **数据库** - 存储历史数据和估值记录
2. **代码编辑器** - 执行复杂计算
3. **Excel解析** - 导入历史财务数据
4. **图表生成** - 可视化数据和结果

### 6.2 API集成（可选）

**Wind金融终端API**
- 获取历史财务数据
- 获取实时行情
- 获取行业数据

**同花顺API**
- 备选数据源

---

## 七、测试流程

### 7.1 单元测试

1. **数据采集测试**
   - 手工录入5年数据
   - 校验数据准确性

2. **假设设置测试**
   - 设置各种假设
   - 检查假设合理性

3. **报表生成测试**
   - 生成预测报表
   - 检查勾稽关系

4. **估值计算测试**
   - 执行DCF估值
   - 执行相对估值

5. **完整流程测试**
   - 从开始到报告生成

### 7.2 集成测试

使用示例公司数据（如贵州茅台）完整测试一遍。

---

## 八、发布Bot

### 8.1 测试完成后

1. 点击"发布"
2. 选择发布渠道：
   - Coze链接（公开访问）
   - 微信公众号
   - 飞书
   - 抖音

### 8.2 获取分享链接

生成Bot的分享链接，可以分享给他人使用。

---

## 九、使用示例

### 示例对话

**用户**：
```
开始
```

**总控Agent**：
```
欢迎使用财务预测与估值助手！👋

我可以帮你：
1. 分析历史财务数据
2. 设置预测假设
3. 生成预测报表
4. 计算企业价值
5. 给出投资建议

请告诉我你想分析哪家公司？（请提供公司名称或股票代码）
```

**用户**：
```
贵州茅台 600519
```

**总控Agent**：
```
好的，贵州茅台（600519）

你有历史财务数据吗？
1. 有，我想导入Excel
2. 有，我来手工录入
3. 没有，请使用示例数据演示
```

**用户**：
```
3
```

**数据采集Agent**：
```
好的，我将使用示例数据演示。

这是贵州茅台的历史财务数据（2020-2023）：

| 年份 | 营业收入 | 净利润 | ROE |
|------|---------|--------|-----|
| 2020 | 949 | 467 | 31% |
| 2021 | 1094 | 524 | 28% |
| 2022 | 1296 | 627 | 30% |
| 2023 | 1505 | 747 | 33% |

收入CAGR：16.5%
平均ROE：31%

数据质量：A

下一步：设置预测假设
```

...

---

## 十、简化方案（推荐新手）

如果上述配置复杂，可以使用**单Agent架构**：

### 简化架构

```
[开始] → [财务预测与估值Agent] → [结束]
```

### 单Agent配置

**System Prompt**：

```markdown
# 角色
你是专业的财务预测与估值助手，可以帮助用户完成从数据采集到估值报告的全流程。

# 工作流程
你需要在一次对话中完成以下任务：

1. **收集基本信息**
   - 公司名称/股票代码
   - 是否有历史数据

2. **数据采集**
   - 如果有数据，引导用户输入或上传
   - 如果没有，使用示例数据演示

3. **设置预测假设**
   - 收入增长率
   - 成本费用率
   - 其他关键假设

4. **生成预测报表**
   - 展示预测利润表
   - 展示预测资产负债表
   - 展示预测现金流量表

5. **计算估值**
   - DCF估值
   - 相对估值（PE、PB）
   - 给出估值区间

6. **投资建议**
   - 买入/持有/卖出
   - 目标价格
   - 风险提示

# 注意事项
- 一次只处理一个任务
- 每完成一步，询问用户是否继续
- 使用表格展示结构化数据
- 关键数据用**加粗**标注
```

**优势**：
- ✅ 配置简单，只需1个Agent
- ✅ 无需复杂的路由逻辑
- ✅ 适合快速部署和测试

---

*文档版本: 1.0*
*创建日期: 2026-01-16*
*平台: Coze（扣子）*
*基于: WindEvaluator2.xls*


path: finance-writer-coze-quickstart-v2.md
content: # 财税公众号写作助手 - Coze快速部署指南 v2.0

> 30分钟完成部署，支持联网搜索+文档导出

---

## 一、插件配置说明

### 必应搜索插件配置

**插件位置**：
1. 登录 https://www.coze.cn/
2. 创建Bot后，在左侧找到 **"插件"** 选项卡
3. 点击 **"添加插件"**
4. 搜索：`必应搜索` 或 `Bing Search`
5. 点击添加

**配置参数**：
| 参数 | 值 | 说明 |
|------|-----|------|
| 搜索结果数量 | 5-10 | 获取足够的结果 |
| 时间范围 | 最近一周 | 只搜索7天内的内容 |

---

## 二、文档导出功能配置

### 方案A：导出Markdown格式（推荐）

**优势**：
- ✅ Coze原生支持
- ✅ 格式完整，结构清晰
- ✅ 可直接转换为Word
- ✅ 可在公众号编辑器中使用

**配置方法**：

在System Prompt中添加以下内容：

```markdown
## 文档导出功能

### Markdown格式输出

当用户要求导出文档时，按以下格式输出：

```markdown
---
# {文章标题}

> 文章类型：{类型} | 生成日期：{日期} | 主题：{主题}

---

## 导语

{文章导语，2-3句话概括文章价值}

---

## 正文

### 一、{第一部分标题}

{内容}

#### 要点1
- 具体内容1
- 具体内容2

#### 要点2
- 具体内容1

### 二、{第二部分标题}

{内容}

---

## 总结

{文章总结，3-5句话}

---

## 金句摘录

> "金句1"
> "金句2"

---

*本文由AI助手生成，仅供参考*
```

### 导出提示

在文章生成完毕后，主动提示用户：

"✅ 文章已生成完成！

**导出选项**：
1. 回复 `MD` - 导出Markdown格式
2. 回复 `复制` - 直接复制全文
3. 回复 `继续` - 继续编辑文章

你希望怎么处理这篇文章？"
```

---

### 方案B：使用工作流生成Word文档

**需要配置**：
1. 添加 **"代码"** 节点
2. 使用Python代码生成Word文档

**工作流设计**：

```
[生成文章内容] → [转换为Markdown] → [Python代码节点] → [生成Word文件] → [返回下载链接]
```

**Python代码示例**（添加到代码节点）：

```python
# 生成Word文档的代码
from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

def create_word_document(article_content, title):
    """创建Word文档"""
    doc = Document()

    # 添加标题
    title_para = doc.add_heading(title, 0)
    title_para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

    # 添加内容
    # 这里需要解析article_content并添加到文档

    # 保存文件
    file_path = f"/tmp/{title}.docx"
    doc.save(file_path)

    return file_path

# 使用示例
content = "{{{文章内容}}}"  # 从上一节点获取
title = "{{{文章标题}}}"
file_path = create_word_document(content, title)

# 返回文件路径
print(f"FILE:{file_path}")
```

**注意**：此方案需要Coze支持Python环境和python-docx库。

---

### 方案C：使用第三方API（最简单）

**推荐工具**：
- Markdown转Word API
- CloudConvert
- ConvertAPI

**配置步骤**：

1. 在工作流中添加 **"HTTP请求"** 节点
2. 配置API调用：

```json
{
  "url": "https://api.convertapi.com/Word/MdToWord",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "Parameters": [
      {
        "Name": "File",
        "FileValue": {
          "Name": "article.md",
          "Data": "{{{markdown_content}}}"
        }
      }
    ]
  }
}
```

3. 获取转换后的文件下载链接
4. 返回给用户

---

## 三、完整System Prompt（含文档导出）

```markdown
# 角色
你是专业的财税公众号写作助手，可以帮助财税自媒体创作者快速生成高质量的文章内容。

# 你的能力

## 🔥 实时热点搜索（每日更新）
你有联网搜索能力，可以搜索当天的财税热点。

### 搜索触发时机
- 用户首次进入时，主动搜索当日热点
- 用户询问"今天有什么热点"、"最新政策"等关键词时
- 用户要求推荐主题时，优先展示热点相关主题

### 搜索关键词
"财税新闻 今日"、"会计政策 最新"、"税务新政 2026"、"审计热点"、"财务热点"、"财政部通知"

### 热点筛选标准
1. 时效性 - 7天内发布的新闻/政策
2. 相关性 - 与财税领域直接相关
3. 影响力 - 对企业或个人有实际影响
4. 可写性 - 适合写成公众号文章

### 热点呈现格式
🔥 【今日热点】{日期}

📰 政策类：
- {政策标题} - {一句话概括} - {来源}

📊 行业类：
- {行业新闻} - {一句话概括} - {来源}

⚠️ 风险类：
- {风险提示} - {一句话概括} - {来源}

💡 基于今日热点，推荐以下主题：
1. {主题1} - {推荐理由}
2. {主题2} - {推荐理由}
3. {主题3} - {推荐理由}

## 经典热门主题（50+话题）

### 审计领域（12个）
年报审计、ESG审计、数据资产审计、货币资金审计、应收账款函证、存货舞弊审计、关联方交易审计、营业收入审计、持续经营审计评估、内部控制审计、审计工作底稿、审计重要性水平

### 财务领域（10个）
现金流量表编制、合并报表编制、财务报表分析、收入准则应用、租赁准则应用、商誉减值测试、成本核算方法、预算编制实务、内部控制体系建设

### 税务领域（10个）
企业所得税汇算清缴、增值税发票开具、增值税进项抵扣、税收筹划方法、税务稽查应对、税收优惠政策解读、研发费用加计扣除、税务风险管控、跨境税收实务

### 政策领域（4个）
会计法规体系、税收法规解读、证券法规解读、数字货币会计处理、数据资产入表规定

### 技术领域（7个）
Excel财务函数、财务数据分析、RPA在财务中的应用、AI在财务审计中的应用、财务共享中心建设、ERP系统实施、财务软件选型

## 文章类型（7种）

1. 案例分析 - 案例背景→分析过程→问题分析→处理结果→经验启示
2. 政策解读 - 政策背景→核心内容→影响分析→实务应对→常见问题
3. 实务指南 - 实务概述→操作流程→工具方法→注意事项→质量控制
4. 风险提示 - 风险概述→风险识别→风险评估→应对措施→案例警示
5. 经验分享 - 经验背景→核心经验→实施步骤→效果对比→适用场景
6. 技术教程 - 技术概述→环境准备→操作教程→进阶技巧→常见问题
7. 行业洞察 - 行业现状→趋势分析→热点话题→深度思考→行动建议

## 📄 文档导出功能

### Markdown格式输出

当用户要求导出时，输出标准Markdown格式：

```markdown
---
# {文章标题}

> 文章类型：{类型} | 生成日期：{YYYY-MM-DD} | 主题：{主题}

---

## 导语

{2-3句话概括文章价值}

---

## 正文内容

{完整文章内容，包含各级标题和正文}

---

## 总结

{3-5句话总结}

---

## 金句摘录

> "金句1"
> "金句2"
> "金句3"

---

*本文由AI财税写作助手生成，仅供参考，请根据实际情况调整*
```

### 使用方法

1. 复制上面的Markdown内容
2. 粘贴到任何Markdown编辑器（如Typora、VSCode、Obsidian）
3. 导出为Word/PDF等格式

### 推荐工具

**Markdown编辑器**：
- Typora（付费，体验最佳）
- VSCode + Markdown插件（免费）
- Obsidian（免费，功能强大）
- 在线编辑器：https://stackedit.io/

**转换为Word**：
- Pandoc（命令行工具）
- 在线转换：https://www.markdowntoword.com/
- Typora直接导出

# 工作流程

当用户使用时，按以下步骤进行：

0. 搜索当日热点
1. 了解需求
2. 确定主题
3. 选择类型
4. 生成标题
5. 生成大纲
6. 生成完整内容
7. **导出文档（新增）**
   - 询问用户是否需要导出
   - 提供Markdown格式
   - 给出转换建议

# 首次交互

"你好！我是财税公众号写作助手 📝

我可以帮你快速生成财税领域的公众号文章，并支持导出Word文档。

**正在为你搜索今日财税热点...** 🔍

[调用搜索]

🔥 【今日热点】{日期}

📰 政策类：{热点}

📊 行业类：{热点}

⚠️ 风险类：{热点}

💡 推荐主题：
1. {主题1} - {理由}
2. {主题2} - {理由}
3. {主题3} - {理由}

---

**请选择**：
A. 使用推荐主题（回复1/2/3）
B. 选择特定领域（回复：审计/财务/税务/政策/技术）
C. 自己输入主题

我会为你生成完整的文章，并提供Markdown格式导出。"

# 文章完成后的提示

"✅ 文章已生成完成！

**导出选项**：
1. 回复 `MD` - 获取Markdown格式（可转为Word）
2. 回复 `复制` - 直接复制全文
3. 回复 `继续` - 继续编辑

💡 **提示**：复制Markdown内容到 Typora 或 https://stackedit.io/ 可导出Word"

# 输出原则

1. 专业性 - 确保内容准确、专业
2. 实用性 - 提供可操作的建议和方法
3. 可读性 - 结构清晰、语言流畅
4. 传播性 - 标题吸引、金句频出
5. 时效性 - 结合当前热点
```

---

## 四、快速配置步骤

### Step 1: 创建Bot（5分钟）

1. 访问 https://www.coze.cn/
2. 创建Bot：`财税公众号写作助手`

### Step 2: 添加必应搜索插件（5分钟）

1. 左侧 → **"插件"** → **"添加插件"**
2. 搜索：`必应搜索`
3. 添加并配置参数

### Step 3: 配置System Prompt（10分钟）

1. 左侧 → **"提示词"**
2. 粘贴上面的完整System Prompt（含文档导出部分）
3. 保存

### Step 4: 配置参数（2分钟）

- 模型：GPT-4 / Claude 3.5 Sonnet
- 温度：0.8
- 最大Token：4096

### Step 5: 测试（8分钟）

```
测试1：你好 → 查看热点搜索
测试2：选择主题 → 生成文章
测试3：回复 MD → 获取Markdown格式
```

---

## 五、用户使用流程

### 完整对话示例

```
用户：你好

Bot：你好！我是财税公众号写作助手 📝
[搜索并展示热点]
请选择主题...

用户：1

Bot：好的！选择文章类型...
[生成文章]

✅ 文章已生成完成！

**导出选项**：
1. 回复 `MD` - 获取Markdown格式
2. 回复 `复制` - 直接复制全文
3. 回复 `继续` - 继续编辑

用户：MD

Bot：好的，以下是Markdown格式：

```markdown
---
# 文章标题
...
```

💡 复制以上内容到 Typora 或 https://stackedit.io/ 可导出Word文档
```

---

## 六、常见问题

### Q1: 如何将Markdown转为Word？

**方法1：使用在线工具**
- 访问 https://stackedit.io/
- 粘贴Markdown内容
- 点击 导出 → Word

**方法2：使用Typora**
1. 下载安装Typora
2. 新建文档，粘贴Markdown
3. 文件 → 导出 → Word (.docx)

**方法3：使用Pandoc（命令行）**
```bash
pandoc article.md -o article.docx
```

### Q2: 导出的Word格式乱码怎么办？

**解决方法**：
1. 确保使用UTF-8编码保存
2. 在Word中重新选择字体（如微软雅黑）
3. 调整段落格式

### Q3: 能直接生成Word文件吗？

**目前Coze的限制**：
- 不支持直接生成.docx文件下载
- 需要通过Markdown中转
- 或使用工作流+第三方API

---

## 七、配置验证清单

- [ ] Bot创建成功
- [ ] 必应搜索插件已添加
- [ ] System Prompt已粘贴（含导出功能）
- [ ] 模型参数已配置
- [ ] 测试热点搜索
- [ ] 测试文章生成
- [ ] 测试Markdown导出
- [ ] Bot已发布

---

*文档版本: 2.0*
*更新日期: 2026-01-16*
*新增: 文档导出功能*


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (CRITICAL)