嘿,职场奋斗人,你是否也曾被这样的场景困扰: 今天,就来终结这种低效的循环!本文将手把手带你使用强大的开源自动化工具 n8n,结合 NoCoDB 数据库和 QuickChart 图表服务,搭建一个完全自动化的数据分析与可视化工作流。 最重要的是,你几乎不需要写一行代码,只需简单的拖拉拽,就能让数据为你自动“打工”!📊✨ n8n (https://n8n.io):本次行动的“大脑”。它是一款开源、可自部署的节点式工作流自动化工具。你可以把它想象成一个拥有超能力的数字管道工,通过连接不同的“节点”(代表各种应用和服务),就能创建出强大的自动化流程。 注:docker部分不予说明,请自行AI。 启动docker数据卷,这里是为了持久化存储,确保 n8n_data 卷已正确挂载(docker volume inspect n8n_data 可检查)。 启动运行n8n,如果在n8n 中调用外部服务遇到dns解析错误的时候,可以在启动的时候加上这个参数,在启动命令中添加环境变量,启用 Task Runners,配置文件权限问题,配置-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true,修正权限。 升级到最新版本:如果使用的是旧版 n8n,建议更新镜像: 后台运行(生产环境):如果不需要交互模式,可以去掉 -it 改用 -d(守护进程模式): 很多人说看不习惯英文,想要中文界面,这里给出详细的步骤,以docker为例,使用开源项目,这个项目会自动根据n8n 的更新而翻译。 在release界面下载对应版本的包,它通过挂载本地汉化后的 UI 文件来替换默认的英文界面。 设置语言环境变量 替换editor-ui包,去release里面找到对应的版本然后映射docker路径 完整测试docker命令 (1)停止并删除旧容器 (2) 重新运行容器并挂载汉化文件 原理 editor-ui是支持i18的,但是未开放语言包,手动添加 zh-CN.json 到 editor-ui i18n里面,然后重新编译,环境里面设置语言即可正常使用中文 检查是否正确挂载 更新前: 更新后: 当我们在本地部署N8N的时候,有时候会因为刚开始测试,用户名和密码设置的比较随意,所以容易忘记,当然有些朋友有google 账户密码管理工具,可以根据端口域名搜索查看对应的,那么如果你没有保存呢? 该怎么办呢? 忘记了密码是没有办法通过邮箱去找回的呢!!! 如何解决这个问题呢? 前置条件是: 在不丢失你任何工作流的情况下,带你三步重置密码。 1、查看docker名称 2、用户管理重置命令 3、重启docker容器 当完成重启之后,我们就会进入重新初始化账户的设置界面,完成之后登录,发现我们的工作流还会存在,并不会丢失。 登录账号进入主页面,导入以这个数据为例 上传到 NocoDb上,重命名为: 工作流-手机销售数据 hots: https://app.nocodb.com/ 输入token名字,创建成功复制即可,粘贴在配置页面,输入api-key,点击测试就可以看到如下页面了。 以工作流-手机销售数据为例, 这部分就是table的id ,配置在接口内,也就是数据表名。 id: m3n9xz13bmxvgo6 为数据表id,替换为自己的即可。 https://app.nocodb.com/api/v2/meta/tables/m3n9xz13bmxvgo6 部署成功之后,设置管理员账号,点击登录 在这里发现和我们线上使用的完全一致,上传同样的销售数据 设置key是一致的,然后配置的凭证的时候,这里是有一点是需要注意的,因为我们现在使用的都是docker 部署,那么docker,在宿主机使用localhost+端口访问是没有问题的,如果是docker 内部之间访问就会有问题的。 使用 docker inspect(推荐) 同样,在http请求节点中,也要将url 换成本地的,这样我们的数据就是完全本地化 如果为了做更好的分析,我们可以在这 https://archive.ics.uci.edu/ 获取一些公开的数据集,以银行营销为例子 QuickChart (https://quickchart.io):“专属画师”。这是一个神奇的在线服务,能通过一个简单的 API 请求,将你的数据瞬间转换成精美的图表图片。 QuickChart 是一项非常实用的图表生成服务,它允许开发者通过简单的 URL 请求或 API 调用快速生成各种数据可视化图表。以下是关于 QuickChart 的详细介绍: 在您的工作流中,QuickChart可以这样使用:如何让数据为你打工呢?
每个月总有那么几天,你要对着一堆原始数据,手动筛选、计算、汇总,再小心翼翼地粘贴到 Excel 里生成图表,最后做成报告发给老板或团队。这个过程不仅枯燥乏味,还极易出错,耗费了你大量宝贵的下午茶和摸鱼时间。
如果这一切都能自动完成,该有多好?📌 这篇文章适合谁?
🆙 前置条件
部署N8N
1、持久化数据
docker volume create n8n_data
2、运行启动n8n
docker run -it --rm
--name n8n
--dns 8.8.8.8
-e GENERIC_TIMEZONE=Asia/Shanghai
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_RUNNERS_ENABLED=true
-p 5678:5678
-v n8n_data:/home/node/.n8n
docker.n8n.io/n8nio/n8n
3、更新镜像
docker pull docker.n8n.io/n8nio/n8n:latest
4、生产环境建议
docker run -d --restart unless-stopped
--name n8n
--dns 8.8.8.8
-e GENERIC_TIMEZONE=Asia/Shanghai
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_RUNNERS_ENABLED=true
-p 5678:5678
-v n8n_data:/home/node/.n8n
docker.n8n.io/n8nio/n8n
5、配置中文界面
第一步,直接去 https://github.com/other-blowsnow/n8n-i18n-chinese/releases
https://github.com/other-blowsnow/n8n-i18n-chinese/releasesN8N_DEFAULT_LOCALE=zh-CN
/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
docker run -it --rm --name n8ntest
-p 15678:5678
-v 【替换自己的目录】:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
-e N8N_DEFAULT_LOCALE=zh-CN
-e N8N_SECURE_COOKIE=false
n8nio/n8n
docker stop n8n && docker rm n8n
路径地址为:/Users/jackfeng/tools/server/dist
docker run -d --restart unless-stopped
--name n8n
--dns 8.8.8.8
-e GENERIC_TIMEZONE=Asia/Shanghai
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_RUNNERS_ENABLED=true
-p 5678:5678
-v n8n_data:/home/node/.n8n
-v /Users/jackfeng/tools/server/dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
-e N8N_DEFAULT_LOCALE=zh-CN
-e N8N_SECURE_COOKIE=false
docker.n8n.io/n8nio/n8n
docker exec -it n8n cat /usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
6、忘记密码?
docker ps -a
docker exec n8n n8n user-management:reset
docker restart n8n
http://localhost:5678/setupNoCoDB
1、登入并导入数据
https://docs.google.com/spreadsheets/d/1bKhqWlNxnZWeRl0db12fd9cicFjV0nrRrcS9D1aZRCQ/edit?gid=2014366975#gid=20143669752、配置凭证
3、配置数据表
4、安装NoCoDB
docker run -d --name nocodb
-v /Users/jackfeng/opt/nocodb_file/nocodb:/usr/app/data/
-p 8735:8080
nocodb/nocodb:latest
docker inspect <容器名或ID> | grep IPAddress
# 例如
docker inspect nocodb | grep IPAddress
# 更加精确的查询,这个是直接获取ip
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名或ID>
# 例如
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nocodb
QuickChart
核心功能
https://quickchart.io/chart?c={type:'bar',data:{labels:['Q1','Q2'],datasets:[{label:'Sales',data:[100,200]}}
使用方式
1. 基本 URL 调用
const chartUrl = `https://quickchart.io/chart?
width=500&
height=300&
c=${encodeURIComponent(JSON.stringify({
type: 'bar',
data: {
labels: ['一月', '二月', '三月'],
datasets: [{
label: '销售额',
data: [12000, 19000, 15000]
}]
}
}))}`;
2. API 端点调用
fetch('https://quickchart.io/chart/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
chart: {
type: 'bar',
data: {
labels: ['Q1', 'Q2'],
datasets: [{ label: 'Sales', data: [100, 200] }]
}
}
})
})
主要优势
<img>
标签显示
在n8n中的典型应用
// 在Function节点中生成图表URL
const chartConfig = {
type: 'bar',
data: {
labels: $input.all()[0].json.labels,
datasets: $input.all()[0].json.datasets
},
options: {
responsive: true,
plugins: {
title: {
display: true,
text: $input.all()[0].json.title || '默认标题'
}
}
}
};
return {
chartUrl: `https://quickchart.io/chart?width=800&height=400&c=${encodeURIComponent(JSON.stringify(chartConfig))}`,
chartConfig: chartConfig
};
使用建议
encodeURIComponent
处理JSON配置
try {
const response = await $axios.get(chartUrl);
if (response.status !== 200) throw new Error('图表生成失败');
} catch (error) {
return { error: error.message };
}
-
• 对相同配置的图表URL进行缓存,减少API调用
QuickChart是将数据可视化快速集成到应用中的理想选择,特别适合需要简单、高效图表生成解决方案的场景。
全自动-数据分析工作流

主节点说明
工作流概述
本工作流是一个智能数据分析系统,通过自然语言接口接收用户查询,连接 NocoDB 数据库获取数据,使用 AI 进行分析并生成可视化图表。工作流主要包含以下功能模块:
-
1. 聊天消息接收与处理 -
2. NocoDB 数据查询 -
3. AI 数据分析 -
4. 图表生成与展示 -
5. 对话上下文记忆管理

1. 触发节点 - When chat message received
-
• 类型: @n8n/n8n-nodes-langchain.chatTrigger
-
• 功能: 接收用户通过聊天界面发送的消息 -
• 输出: -
• sessionId
: 会话ID,用于跟踪对话上下文 -
• chatInput
: 用户输入的查询内容
-
-
• Webhook ID: data-analysis-chat-webhook
2. NocoDB API 请求节点
-
• 类型: n8n-nodes-base.httpRequest
-
• 配置: -
• URL: http://172.17.0.3:8080/api/v2/meta/tables/mqzjqetyh29wa80
-
• 认证方式: NocoDB API Token
-
-
• 功能: 查询指定NocoDB表的元数据信息
3. 字段编辑节点 - Edit Fields2
-
• 类型: n8n-nodes-base.set
-
• 功能: 格式化输入数据,准备AI分析所需字段 -
• 输出字段: -
• sessionId
: 从触发节点传递 -
• chatInput
: 用户查询内容 -
• columns
: 从NocoDB表元数据中提取的列名列表
-
4. AI 代理主节点
-
• 类型: @n8n/n8n-nodes-langchain.agent
-
• AI模型: Google Gemini -
• 系统提示: -
• 角色: 专业数据分析专家 -
• 任务: -
1. 理解用户请求并查询NocoDB数据 -
2. 分析数据并提供简明结论 -
3. 按需生成可视化图表
-
-
• 图表要求: 使用Chart.js规范格式 -
• 响应格式: 文本分析+Markdown格式图表
-
5. 上下文记忆节点
-
• 类型: @n8n/n8n-nodes-langchain.memoryBufferWindow
-
• 配置: -
• 会话ID: 使用自定义键 sessionId
-
• 上下文窗口长度: 20
-
-
• 功能: 维护对话历史,实现多轮对话上下文理解
6. 图表生成工具节点
-
• 类型: @n8n/n8n-nodes-langchain.toolWorkflow
-
• 配置: -
• 工作流ID: xuxNSLsB405waaHt
-
• 错误处理: 继续常规输出
-
-
• 功能: 调用子工作流生成图表 -
• 输入要求: 符合Chart.js规范的JSON配置
7. NocoDB数据查询工具节点
-
• 类型: n8n-nodes-base.nocoDbTool
-
• 配置: -
• 操作类型: getAll
-
• 工作区ID: 动态从API请求节点获取 -
• 项目ID: p1iq7bz903349t5
-
• 表名: mqzjqetyh29wa80
-
-
• 功能: 查询NocoDB表中的实际数据
8. 数据流说明
-
1. 用户输入阶段: -
• 用户发送消息 → 触发 When chat message received
节点 -
• 查询表结构 → NocoDB API Request
节点 -
• 格式化输入 → Edit Fields2
节点
-
-
2. AI分析阶段: -
• 主AI代理接收格式化后的输入 -
• 根据需要使用 Get many rows in NocoDB
工具查询实际数据 -
• 如需图表,调用 Generate Chart
工具
-
-
3. 输出阶段: -
• AI代理组合分析文本和图表URL -
• 返回Markdown格式的响应
-
子节点说明
工作流概述
这个子工作流专门用于生成符合 Chart.js 规范的图表配置,并将配置转换为 QuickChart 可用的 URL。工作流接收来自主工作流的图表生成请求,通过 AI 生成规范的图表配置,最后输出可直接使用的图表 URL。

1. 触发节点 - When Executed by Another Workflow
-
• 类型: n8n-nodes-base.executeWorkflowTrigger
-
• 功能: 作为子工作流的入口点,接收来自主工作流的调用 -
• 输入来源: passthrough
(直接传递主工作流的输入) -
• 预期输入: { "query": "用户关于图表的自然语言描述" }
2. AI 图表生成代理 - AI Agent Chart Generator
-
• 类型: @n8n/n8n-nodes-langchain.agent
-
• AI模型: Google Gemini -
• 关键配置: -
• 系统提示: 严格要求AI输出符合特定JSON格式的Chart.js配置 -
• 重试机制: 启用 retryOnFail
自动重试失败请求
-
-
• 输出要求: -
• 必须包含 type
、data
和options
三个顶级字段 -
• 完全遵循Chart.js配置规范 -
• 不包含任何额外解释文本
-
3. 结构化输出解析器 - Structured Output Parser
-
• 类型: @n8n/n8n-nodes-langchain.outputParserStructured
-
• 功能: 验证和规范AI输出的图表配置 -
• Schema配置: -
• 严格模式: 启用( strict: true
) -
• 图表类型: 限定9种Chart.js支持的图表类型 -
• 数据结构: -
• 必须包含 labels
数组和datasets
数组 -
• 每个dataset必须包含 label
、data
等必需字段
-
-
• 选项配置: -
• 必须包含 scales
和plugins
配置 -
• 支持响应式、动画等高级配置
-
-
4. Google Gemini 模型
-
• 类型: @n8n/n8n-nodes-langchain.lmChatGoogleGemini
-
• 模型版本: gemini-2.5-flash-preview-05-20
-
• 功能: 为AI代理提供语言模型支持 -
• 认证: 使用预配置的Google Gemini API凭证
5. JSON验证与图表URL生成
-
• 类型: n8n-nodes-base.code
-
• 功能: -
1. 验证输入的图表配置是否符合要求 -
2. 将配置转换为QuickChart可用的URL
-
-
• 代码逻辑: // 验证配置完整性 if (!chartConfig || !chartConfig.type || !chartConfig.data) { thrownewError("无效的图表配置"); } // 生成QuickChart URL const chartUrl = "https://quickchart.io/chart?width=850&height=420&c=" + encodeURIComponent(JSON.stringify(chartConfig)); return { json: { chartUrl: chartUrl, originalConfig: chartConfig } };
数据流说明
-
1. 输入阶段: -
• 主工作流通过 Execute Workflow
节点调用本工作流 -
• 传递包含用户图表描述的参数 query
-
-
2. 图表生成阶段: -
• AI代理根据用户描述生成图表配置 -
• 结构化输出解析器验证配置格式 -
• 如不符合要求,AI代理会自动重试
-
-
3. 输出处理阶段: -
• 代码节点验证配置完整性 -
• 将有效配置转换为QuickChart URL -
• 返回包含URL和原始配置的对象
-
错误处理机制
-
1. AI生成失败: -
• 通过 retryOnFail
自动重试 -
• 结构化解析器会捕捉格式错误
-
-
2. 配置验证失败: -
• 代码节点会抛出明确错误信息 -
• 错误会传递回主工作流处理
-
-
3. URL生成失败: -
• encodeURIComponent处理特殊字符 -
• JSON.stringify确保有效序列化
-
输出规范
成功执行后,工作流将输出:
{
"chartUrl": "https://quickchart.io/chart?width=850&height=420&c=%7B%22type%22%3A%22...",
"originalConfig": {
"type": "bar",
"data": {...},
"options": {...}
}
}
子工作流设计为高度可重用组件,可与任何需要图表生成功能的工作流集成,确保输出的图表配置符合专业标准且可直接用于QuickChart服务。
生成完整的数据报告


本篇文章来源于微信公众号: DataScience
文章评论