做一个你的
网页玩法罐头
录一遍操作,变成可复现脚本;再用 YAML 编排成工作流;需要时用 JS 加点私房料。
记录生成脚本
YAML & Workflow
支持运行 JS
回放与断点

回放面板
实时调试
三个核心能力
记录 → 编排 → 扩展,让你轻松创建属于自己的网页玩法罐头
Record(录)
点点点,就录好了。
把你在网页上的点击、输入、滚动、等待……自动录成可复现脚本(选择器稳、等待条件可配置)。
选择器策略:CSS/XPath/稳定锚点(可切换)
等待模式:可见/可点击/网络空闲
输出:*.rec.json / *.rec.yaml
Compose(编)
三行 YAML,拼好一个 Agent。
把「打开→登录→抓取→比对→通知」编排成工作流。
支持 YAML & 可视化 Workflow 双方式
条件分支 / 重试 / 节流 / 变量注入
产出:结构化结果(表格/卡片/JSON)
Extend(加料)
需要"私房味"?写点 JS。
在任意步骤插入 JS(DOM/网络/Fn 调用),或调用外部 API。
run_js 节点
外部库白名单(可配置)
本地优先执行(隐私友好)
五分钟做一个罐头
从录制到部署,完整的开发流程展示
Step 1|录一个最小流程
打开页面 → 搜索关键词 → 点第一条 → 把标题记下来
Step 1 代码示例
# search-and-grab.rec.yaml(录制产物可编辑)
steps:
- open: "https://example.com"
- type: { selector: "input[name=q]", text: "{{keyword}}" }
- click: { selector: "button.search" }
- wait_for: { selector: ".result-item" }
- click: { selector: ".result-item:nth-child(1) a.title" }
- grab_text: { selector: "h1.article-title", save_as: "title" }
yaml
Step 2|编排成一个 Agent
用 YAML 配置输入、工作流和输出格式
Step 2 代码示例
# can.yaml
name: "示例|关键词摘取罐"
inputs:
- name: keyword
type: string
required: true
workflow:
- use: "./search-and-grab.rec.yaml"
- run_js:
code: |
// 轻度清洗
ctx.title = (ctx.title || '').trim().slice(0, 80);
- output:
format: "card" # card/table/json
fields: ["keyword", "title", "url"]
schedules: [] # 可为空;发布后可配置定时
yaml
Step 3|本地开跑 & 回放
运行罐头,查看回放面板的详细信息
Step 3 代码示例
# 运行命令
tabtin run can.yaml --keyword="agent browser"
# 回放面板自动生成:
# - 步骤截图
# - 耗时统计
# - 选择器命中率
# - 网络日志
# 调试功能:
# - 一键"重试该步"
# - "改 selector 后重放"
# 💡 提示:不写 JS 也能跑;JS 只是"加料"。
bash
💡完整教程和 API 文档即将发布
回放 & 调试面板
可靠性与可复现,让每个罐头都能稳定运行
实时监控功能
步骤截图
每个操作步骤的可视化截图记录
耗时统计
精确的步骤执行时间和性能分析
选择器命中率
元素定位成功率和稳定性监控
网络日志
完整的网络请求和响应记录
调试工具
重试该步
单步重新执行和错误修复
改选择器后重放
动态调整选择器策略和验证
调试面板
1. 打开页面
1.2s2. 输入搜索词
0.3s3. 点击搜索
0.1s4. 等待结果
2.1s5. 提取标题
-准备好开始了吗?
加入开发者社区,一起创造更有趣的网页玩法
开始构建
立即开始创建你的第一个罐头
开发者文档
完整的 API 文档和教程
本地 Runner 下载
下载桌面版本,本地运行
版本与发布
私有使用
仅自己使用,完全私密
分享给朋友
生成分享链接,邀请他人使用
发布到市场
让更多人发现你的创意罐头
开发者常见问题
需要什么权限?
只需要基础的页面访问权限,不会获取敏感信息。
如何处理风控?
内置智能节流和行为模拟,避免触发反爬机制。
需要登录账号吗?
会使用你的本地登录态,无需额外授权。
支持哪些网站?
理论上支持所有网站,持续优化常用站点的兼容性。