2026-10-07 · 原文发布日
n8n每日跟踪SEC财报并做情绪与风险分析
跟踪上市公司公告的n8n免费模板:每天定时查询SEC EDGAR指定公司的最新10-K或10-Q,通过表格里的备案号去重;新文件下载后从HTML中抽取风险因素和MD&A章节,按关键词筛选后交给OpenAI输出结构化JSON——情绪倾向、风险等级、关键风险、展望和财务亮点,结果追加到Google Sheets并把格式化摘要推到Slack。需为SEC请求配置合法User-Agent。
原文要点
作者WeblineIndia发布的n8n免费模板(工作流20594):每天定时运行,调用SEC EDGAR submissions API按CIK取目标公司最新10-K或10-Q,用Google Sheets按accessionNumber去重;新备案则下载主文档HTML,抽取Risk Factors与MD&A章节,按关键词筛选后交OpenAI返回结构化JSON(情绪倾向、风险等级、关键风险、展望、财务亮点),元数据与分析追加到Sheets并发Slack格式化摘要。配置要求:OpenAI凭据与模型选择、Sheets的ID/标签页/列名、Slack频道,所有SEC请求须带合法User-Agent头。
这次做成什么
在n8n搭一条每日财报监控线:自动发现目标公司新10-K/10-Q、抽取风险与MD&A文本做AI情绪风险分析、归档到Sheets并推Slack。未提供可导入工作流文件,以下为按原文流程独立设计的搭建与练习方案,需对照原模板核对节点参数。
准备什么
- 一个n8n实例(自托管或云端均可,定时触发即可)
- OpenAI API凭据,并在OpenAI节点中选定模型
- 一个Google Sheet及OAuth凭据,含至少一列accessionNumber用于去重
- Slack凭据与一个测试频道
- 目标公司的SEC CIK编号(练习可用苹果公司的CIK 0000320193)
具体怎么做
准备去重表
新建Google Sheet,标签页如filings,表头依次设为accessionNumber、form、filingDate、primaryDocument、sentiment、riskLevel、keyRisks、outlook、highlights。记下Spreadsheet ID,连接Google Sheets OAuth凭据。
每日拉取EDGAR备案列表
加Schedule Trigger设为每天一次;接HTTP Request节点GET https://data.sec.gov/submissions/CIK0000320193.json,Headers中必须加User-Agent(如 YourName your-email@example.com,SEC要求可联系的标识),否则会被拒。用Code节点从recent里筛form为10-K或10-Q的最新一条,取accessionNumber、filingDate、primaryDocument。
按备案号去重
Google Sheets节点按accessionNumber列查找当前备案号;接IF节点:已存在则直接结束(NoOp),不存在进入下载分支。这是避免每天重复分析同一文件的关键。
下载正文并抽取章节
HTTP Request节点下载主文档(URL形如https://www.sec.gov/Archives/edgar/data/{cik去掉前导零}/{accessionNumber去横线}/{primaryDocument},同样带User-Agent)。接HTML/Code节点从HTML中定位Risk Factors与MD&A(Item 1A、Item 7)章节文本,再按风险关键词(如risk、uncertainty、adverse、regulation)筛出相关段落子集,控制送入模型的长度。
OpenAI结构化分析并归档通知
OpenAI节点用材料中的分析提示词,要求返回严格JSON(sentiment、riskLevel、keyRisks、outlook、highlights);Code节点解析后把备案元数据与结果合并,Google Sheets节点append一行;Slack节点向测试频道发格式化摘要,包含公司、表格类型、日期、风险等级与三条关键风险。
联测与排错
手动执行一次:首次应写入一行并发Slack;立即再执行一次,去重分支应生效、表内不新增行。若SEC请求返回403,优先检查User-Agent头是否缺失。
可直接复制的材料
财报情绪与风险分析提示词
本站独立编写示例;作者未公开原提示词,字段名按原文结构化输出设计,可按Sheets列名调整。
你是证券分析助手。以下文本摘自某公司SEC 10-K/10-Q文件中的Risk Factors与MD&A章节(已按关键词筛选)。请只输出一个JSON对象,不要输出其他文字:
{"sentiment":"positive|neutral|negative 之一","riskLevel":"low|medium|high 之一","keyRisks":["风险1","风险2","风险3"],"outlook":"管理层展望一句话概括","highlights":["财务或经营亮点1","亮点2"]}
判断依据仅限所给文本,不得引入外部信息;找不到的信息填null。
文本:
{{$json.filteredText}}filings表首行示例数据
备案号与主文档名为公开练习示例(苹果10-Q),sentiment、riskLevel、keyRisks等分析字段为虚构练习值;可先手动填一行验证append与去重逻辑。
accessionNumber,form,filingDate,primaryDocument,sentiment,riskLevel,keyRisks,outlook,highlights
0000320193-25-000079,10-Q,2025-08-01,aapl-20250628.htm,neutral,medium,"供应链集中度上升;关税政策不确定;汇率波动","管理层预计下半年营收温和增长","服务业务收入创新高;毛利率环比改善"
输入与输出示例
本站虚构演示,非原作者运行结果;情绪与风险评级为提示词练习输出示例,不构成投资判断。
输入
对CIK 0000320193(苹果公司,作为公开练习对象)执行一次工作流,EDGAR返回最新10-Q备案号0000320193-25-000079,主文档aapl-20250628.htm,抽取的风险段落含供应链与关税相关表述。对应输出
Sheets新增一行:0000320193-25-000079 | 10-Q | 2025-08-01 | neutral | medium;Slack摘要:【苹果 10-Q 2025-08-01】情绪:neutral,风险等级:medium;关键风险:供应链集中度上升、关税政策不确定、汇率波动;展望:管理层预计下半年营收温和增长。再次执行因accessionNumber已存在而跳过。做完检查这些
- HTTP请求带合法User-Agent时EDGAR接口返回200,缺失时按预期被拒并知道如何修
- 同一accessionNumber第二次运行时去重分支生效,Sheets不重复追加
- OpenAI输出能被解析为JSON且五个字段齐全后才写入表格
- Slack消息中公司、form、filingDate与Sheets新增行一致
- 筛选后送入模型的文本明显短于原文HTML且只含风险相关段落
容易卡住的地方
- SEC对无User-Agent或频率过高的请求会直接拒绝,头里要留可联系的邮箱
- EDGAR的HTML章节标题写法各公司不一,Item 1A/7定位需容错,必要时回退为关键词截取
- 10-K全文很长,不做关键词子集筛选容易超模型上下文且费用上升
- OpenAI模型调用可能产生费用,模板免费不等于分析免费
- 去重依赖accessionNumber列名与映射完全一致,表头拼写错会导致重复入库
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Analyze SEC 10-K/10-Q sentiment with OpenAI, Google Sheets, and Slack
- 原作者
- WeblineIndia
- 原始发布日期
- 2026-10-07T04:59:36.930Z
- 来源
- https://n8n.io/workflows/20594