yunce: TOOLS.md新增N8N内容翻译流水线完整调用指南

This commit is contained in:
2026-03-29 16:24:41 +08:00
parent 78a8352089
commit 7e9689bcf3

View File

@@ -294,4 +294,243 @@ message \
7. 如果pull成功也可以告诉用户目录已经更新。
### 异常处理
如果在处理git命令过程中出现任何问题请第一时间联系用户。并把错误消息贴给用户看。
如果在处理git命令过程中出现任何问题请第一时间联系用户。并把错误消息贴给用户看。
## N8N 工作流管理 (2026-03-29)
用户可能说: "帮我看看n8n上的工作流"、"触发n8n工作流"、"查看n8n执行记录"
### 连接配置
| 配置项 | 值 |
|--------|-----|
| **Base URL** | `https://n8n.ishenwei.online` |
| **API Key** | `~/.openclaw/.env` 中的 `N8N_API_KEY` |
| **管理界面** | https://n8n.ishenwei.online |
### 核心脚本路径
- **技能位置**: `~/.openclaw/skills/n8n/`
- **n8n_api.py**: 工作流管理、触发执行、查看状态
- **n8n_tester.py**: 验证工作流、dry-run 测试
- **n8n_optimizer.py**: 性能分析与优化建议
### 环境变量(已在 `~/.openclaw/.env`
```
N8N_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
N8N_BASE_URL=https://n8n.ishenwei.online
```
### 常用操作
```bash
# 查看工作流列表
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py list-workflows --pretty
# 查看执行记录
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py list-executions --id <workflow-id> --limit 20 --pretty
# 手动触发工作流
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py execute --id <workflow-id>
# 带数据触发
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py execute --id <workflow-id> --data '{"key": "value"}'
# 激活/停用
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py activate --id <workflow-id>
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py deactivate --id <workflow-id>
```
### 测试与验证
```bash
# 验证工作流结构
python3 ~/.openclaw/skills/n8n/scripts/n8n_tester.py validate --id <workflow-id> --pretty
# Dry Run 测试
python3 ~/.openclaw/skills/n8n/scripts/n8n_tester.py dry-run --id <workflow-id> --data '{}'
```
### 创建工作流
```bash
# 从 JSON 文件创建
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py create --from-file workflow.json
# 创建后激活
python3 ~/.openclaw/skills/n8n/scripts/n8n_api.py activate --id <new-workflow-id>
```
### 性能分析
```bash
# 分析性能
python3 ~/.openclaw/skills/n8n/scripts/n8n_optimizer.py analyze --id <workflow-id> --pretty
# 获取优化建议
python3 ~/.openclaw/skills/n8n/scripts/n8n_optimizer.py suggest --id <workflow-id> --pretty
```
### Webhook 触发
```bash
# 直接调用 Webhook
curl -X POST "https://n8n.ishenwei.online/webhook/<webhook-path>" \
-H "Content-Type: application/json" \
-d '{"key": "value"}'
```
---
## N8N 内容翻译流水线 (2026-03-29)
**用途**:英文文章 → 中文公众号Markdown + HTML+ Twitter文案 + 视频脚本
**架构说明**
- n8n 只能读写容器内的 `/home/node/.n8n-files/` 目录
- OpenClaw 负责文件搬运:复制到 n8n → 触发 → 复制回 Obsidian
- 完整设计文档:`~/Obsidian/shenwei/openclaw/yunce/n8n-content-pipeline-workflow.md`
### 工作流版本
| 版本 | ID | 状态 | 说明 |
|------|-----|------|------|
| **v5最新** | `iOf32aOKvTjfTDSM` | 未激活 | 双输出Markdown + HTML |
| v3 | `tOGMiC6qOJPOY89E` | 活跃 | 单输出Markdown |
### 调用前的文件准备
n8n 的 Read/Write File 节点使用 `/home/node/.n8n-files/` 目录,**不是** Obsidian 目录。
```
n8n 容器内路径: /home/node/.n8n-files/
MacMini Obsidian: /Users/weishen/Workspace/nexus/openclaw/
```
### OpenClaw 完整调用流程
#### 第一步:复制原文到 n8n-files
```bash
# SSH 到 MacMini将源文件复制到 n8n 容器可访问的目录
scp /Users/weishen/Workspace/nexus/openclaw/content-queue/{文件名}.md \
macmini:/home/node/.n8n-files/{文件名}.md
```
#### 第二步:触发 Webhook
```bash
# 注意v5 使用 /content-translation-v5
# note_name = n8n-files 里的文件名
# output_name = 输出的文件名(不含扩展名)
# source_path = Obsidian 原文路径(用于记录溯源)
curl -X POST "https://n8n.ishenwei.online/webhook/content-translation-v5" \
-H "Content-Type: application/json" \
-d "{
\"note_name\": \"{文件名}.md\",
\"output_name\": \"{文件名}\",
\"source_path\": \"/Users/weishen/Workspace/nexus/openclaw/content-queue/{文件名}.md\",
\"callback_url\": \"http://192.168.3.189:18789/webhook/yunce\"
}"
```
#### 第三步:等待 Telegram 通知
- Telegram Bot (`y1NdRSaJwl0LoY37`) 会发送完成消息
- 消息格式:`✅ 文章转换完成!📝 标题xxx`
#### 第四步:复制输出回 Obsidian
```bash
# 复制 Markdown 成品
scp macmini:/home/node/.n8n-files/{output_name}_output.md \
/Users/weishen/Workspace/nexus/openclaw/content-output/{output_name}.md
# 复制 HTML 成品(公众号用)
scp macmini:/home/node/.n8n-files/{output_name}_output.html \
/Users/weishen/Workspace/nexus/openclaw/content-output/{output_name}.html
```
#### 第五步:清理 n8n-files 临时文件
```bash
ssh macmini "rm /home/node/.n8n-files/{文件名}.md \
/home/node/.n8n-files/{output_name}_output.md \
/home/node/.n8n-files/{output_name}_output.html"
```
### 完整 Python 调用示例
```python
import subprocess
import time
import json
def trigger_content_translation(source_note_name, source_path, output_name):
"""完整的内容翻译流水线调用"""
n8n_files_dir = "/home/node/.n8n-files"
obsidian_root = "/Users/weishen/Workspace/nexus/openclaw"
# ========== 第一步:复制原文到 n8n ==========
source_full_path = f"{obsidian_root}/content-queue/{source_note_name}"
print(f"[1/5] 复制原文到 n8n-files: {source_note_name}")
subprocess.run([
'scp', source_full_path,
f'macmini:{n8n_files_dir}/{source_note_name}'
], check=True)
# ========== 第二步:触发 Webhook ==========
print(f"[2/5] 触发 n8n 工作流...")
webhook_url = "https://n8n.ishenwei.online/webhook/content-translation-v5"
payload = json.dumps({
"note_name": source_note_name,
"output_name": output_name,
"source_path": source_path,
"callback_url": "http://192.168.3.189:18789/webhook/yunce"
})
subprocess.run([
'curl', '-X', 'POST', webhook_url,
'-H', 'Content-Type: application/json',
'-d', payload
], check=True)
# ========== 第三步:等待处理 ==========
print("[3/5] 等待 Telegram 完成通知...")
# Agent 应等待 Telegram 消息后再继续
time.sleep(5) # 示意用,实际应监听 Telegram
# ========== 第四步:复制输出回 Obsidian ==========
print(f"[4/5] 复制输出到 content-output...")
output_md = f"{n8n_files_dir}/{output_name}_output.md"
output_html = f"{n8n_files_dir}/{output_name}_output.html"
dest_root = f"{obsidian_root}/content-output"
subprocess.run(['scp', f'macmini:{output_md}', f'{dest_root}/{output_name}.md'], check=True)
subprocess.run(['scp', f'macmini:{output_html}', f'{dest_root}/{output_name}.html'], check=True)
# ========== 第五步:清理 ==========
print(f"[5/5] 清理 n8n-files...")
subprocess.run(['ssh', 'macmini', f'rm {n8n_files_dir}/{source_note_name} {output_md} {output_html}'])
print(f"✅ 完成!输出: {dest_root}/{output_name}.md + .html")
# 调用示例
trigger_content_translation(
source_note_name="article-2026-03-29.md",
source_path="/Users/weishen/Workspace/nexus/openclaw/content-queue/article-2026-03-29.md",
output_name="article-2026-03-29"
)
```
### Obsidian 目录结构
```
~/Workspace/nexus/openclaw/
├── content-queue/ # 原始英文文章
│ └── article-2026-03-29.md
└── content-output/ # 翻译成品Markdown + HTML
├── article-2026-03-29.md # 中文 Markdown留存溯源
└── article-2026-03-29.html # 公众号 HTML直接复制粘贴
```
### 输出文件说明
| 文件 | 格式 | 用途 |
|------|------|------|
| `*.md` | 中文 Markdown | Obsidian 留存、溯源、可修改 |
| `*.html` | 带样式 HTML | 复制到公众号编辑器,几乎零调整 |
### 常见问题
**Q: n8n API 返回 401**
A: 检查 `~/.openclaw/.env` 里的 `N8N_API_KEY` 是否完整(应为 3 段 JWT
**Q: 文件复制到 n8n-files 失败?**
A: 确认 MacMini 上 `/home/node/.n8n-files/` 目录存在且有写权限
**Q: 如何查看工作流状态?**
A: 用 `n8n_api.py list-executions --id <workflow-id> --limit 10 --pretty` 查看最近执行