SkillAgentSearch skills...

Fpbrowser2api

fpbrowser2api插件框架-支持veo3.1、seedance2.0、omni flash、grok、nana banana、sora2、gpt-image2,QQ交流群:1035463132

Install / Use

npx skills add lakysir/fpbrowser2api

Installs into whichever agent you are using.

About this skill

Quality Score

0/100

Supported Platforms

Universal

README

FPBrowser2API

一款浏览器插件AI Agent。通过AI智能体分析目标网站的token和公开接口,把各个网站的功能转换成api来调用,目前对Sora、Google Flow/Veo、Seedance、Grok、ChatGPT 图片等站点进行了封装。

重要声明

  • 本项目只供技术研究、学习验证、私有测试环境使用。
  • 本项目智能体只调用网站公开的接口,不会入侵任何网站内部接口。
  • 请勿用于商业化运营、批量滥用、违反目标站点条款或任何违法违规用途。
  • 使用者应自行承担账号、额度、风控、合规和数据安全风险。
  • 本项目不保证任何第三方站点长期稳定可用,也不承诺规避风控的成功率。

当前能力

  • 浏览器账号保活:每个窗口有独立 Cookie、LocalStorage、UA、代理和浏览器指纹。
  • 用户请使用自己的账号登录目标网站,请确保自己拥有账号的权限。
  • 后台管理:项目、浏览器服务器、空间、窗口、任务类型、任务队列、日志和用户管理。
  • 任务调度:按任务类型绑定窗口,支持窗口池、额度判断、并发控制和任务进度回写。
  • 插件执行:通过 CDP 连接真实浏览器窗口,在页面上下文中执行 fetch、上传、轮询和结果提取。
  • NewAPI/OpenAI 风格接口:提供 /v1/models/v1/videos/v1/videos/{task_id},方便中转站或上层系统接入。

主要适配方向:

| 方向 | 处理器/入口 | 说明 | |---|---|---| | Google Flow / Veo | veo_workflow | Veo 3.1、Veo Omni Flash、Nana Banana 2/Pro 图片1k/2k/4k生成 | | ChatGPT 图片 | gpt_workflow | gpt-image2-1k / 2k / 4k 图片生成 | | Sora | sora_gen_video | Sora 视频、草稿发布、角色创建、额度等辅助能力 | | Grok | grok_workflow | Grok 工作流自动化 - 正在进行中....

和纯协议逆向的区别

fpbrowser2api 的核心思路不是复刻第三方站点的所有私有协议,而是把真实浏览器窗口作为任务运行环境。这样做的重点收益是:

| 维度 | 纯协议逆向 | FPBrowser2API | |---|---|---| | 登录态 | 通常依赖 token、cookie 或私有鉴权参数 | 复用浏览器中的真实登录态 | | 环境隔离 | 多账号容易共享运行环境和请求特征 | 每个窗口可独立代理、指纹和存储 | | 维护成本 | 目标站点接口、加密、字段变化后经常需要重写 | 网页可正常使用时,插件和页面上下文逻辑更容易维护 | | 模型扩展 | 新模型往往需要重新分析协议 | 可按站点工作流扩展新的执行器或插件 provider | | 调度管理 | 常见脚本需要自行实现队列、窗口和额度 | 后台统一管理任务类型、窗口池、并发和日志 | | 风险 | 逆向接口,违规违法 | 使用js调用目标网站的公开接口 |

为什么使用指纹浏览器

本框架不是传统裸 HTTP 调用脚本,而是复用真实浏览器环境:

  1. 每个任务可以绑定一个独立浏览器窗口,隔离 Cookie、LocalStorage、UA、代理和指纹。
  2. 用户先在指纹浏览器中手动登录目标站点、完成验证或订阅准备。
  3. 后端通过 RoxyBrowser 暴露的 CDP 地址连接到该窗口。
  4. 浏览器插件在页面上下文中调用js公开接口进行上传文件、任务黄建、轮询状态、读取结果。
<img width="1919" height="914" alt="RoxyBrowser screenshot" src="https://github.com/user-attachments/assets/34238cc6-66c0-41eb-97b0-405014ea467c" />

快速启动

cd fpbrowser2api

# 创建虚拟环境
python -m venv venv

# Windows 激活
venv\Scripts\activate

# Linux / macOS 激活
source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 启动服务
python main.py

默认监听地址:

http://127.0.0.1:8002

首次默认后台账号:

| 字段 | 值 | |---|---| | 用户名 | admin | | 密码 | admin |

基础配置位于 config/setting.toml,可参考 config/setting_example.toml。服务启动后会把关键配置写入数据库,并支持在管理后台修改,重启后仍生效。

服务脚本

Linux/macOS 或 Git Bash:

cd fpbrowser2api
chmod +x ./fpbrowser2api_service.sh
./fpbrowser2api_service.sh start
./fpbrowser2api_service.sh status
./fpbrowser2api_service.sh restart
./fpbrowser2api_service.sh stop

Windows PowerShell:

cd fpbrowser2api
powershell -ExecutionPolicy Bypass -File .\fpbrowser2api_service.ps1 start
powershell -ExecutionPolicy Bypass -File .\fpbrowser2api_service.ps1 status
powershell -ExecutionPolicy Bypass -File .\fpbrowser2api_service.ps1 restart
powershell -ExecutionPolicy Bypass -File .\fpbrowser2api_service.ps1 stop

管理后台

| 页面 | 路径 | |---|---| | 登录页 | /login | | 系统配置 | /admin/system | | 项目管理 | /admin/projects | | 任务类型管理 | /admin/task-types | | 任务列表 | /admin/tasks | | 测试页面 | /admin/test | | 请求日志 | /admin/logs | | 用户管理 | /admin/users |

RoxyBrowser 配置流程

1. RoxyBrowser 侧准备

  1. 在线注册:https://roxybrowser.com?code=0416Z62A
  2. 创建空间 Workspace、项目和浏览器窗口。
  3. 为窗口配置代理、账号信息和目标站点登录态。
  4. 启用 RoxyBrowser 本地 API 或局域网 API。
  5. 记录 API 地址、API token、workspaceId 和窗口 dirId

2. FPBrowser2API 后台配置

  1. 在「项目管理」创建本地项目。
  2. 在「浏览器服务器」填写 RoxyBrowser API:
    • vendor: roxy
    • lan_addr: RoxyBrowser API base URL
    • access_key: RoxyBrowser token,可为空
  3. 在「空间」填写 RoxyBrowser workspaceId
  4. 同步窗口,后台会调用 RoxyBrowser 的 GET /browser/list_v3GET /browser/detail
  5. 创建任务类型并绑定窗口,常见处理器:
    • veo_workflow
    • dreamina_workflow
    • gpt_workflow
    • sora_gen_video
    • grok_workflow

运行链路

管理后台配置浏览器服务器
  -> FPBrowserClient 调用 RoxyBrowser API
  -> 同步 workspaceId / projectIds / dirId
  -> 任务类型绑定具体窗口
  -> TaskService 选择窗口并控制并发
  -> PlaywrightBrowserContext 打开或复用窗口并连接 CDP
  -> 站点执行器在页面上下文中 fetch / 上传 / 轮询 / 读取结果
  -> 任务结果写回数据库并通过 API 查询

主要代码位置:

| 文件 | 作用 | |---|---| | src/api/routes.py | 公开 API:任务提交、任务查询、模型列表 | | src/services/task_service.py | 任务调度、窗口池、额度和并发控制 | | src/services/fp_browser_client.py | RoxyBrowser API 适配 | | src/services/playwright_broswer_context.py | Playwright/CDP 浏览器连接 | | src/services/veo_workflow_executor.py | Google Flow / Veo / Nana Banana 执行器 | | src/services/jimeng_task_executor.py | Seedance / 即梦执行器 | | src/services/gpt_task_executor.py | ChatGPT / gpt-image2 执行器 | | src/services/sora_task_executor.py | Sora 执行器 | | browser_extension/providers/*.js | 浏览器插件侧执行逻辑 |

公开 API

所有公开接口都需要请求头:

Authorization: Bearer YOUR_API_KEY

本地默认 base URL:

http://127.0.0.1:8002

模型列表

curl http://127.0.0.1:8002/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

返回 OpenAI 兼容模型列表,包含 /v1/videos 可用模型和 NewAPI 测试/扣费用模型。

提交视频/图片任务

curl -X POST http://127.0.0.1:8002/v1/videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3-1",
    "prompt": "a cinematic drone shot over a futuristic city at sunrise",
    "duration": 8,
    "aspect_ratio": "16:9"
  }'

提交成功后立即返回异步任务:

{
  "id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "task_id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "object": "video",
  "created_at": 1714200000000,
  "status": "queued",
  "progress": 0,
  "model": "veo-3-1",
  "video_url": null,
  "metadata": {
    "result_urls": []
  },
  "seconds": "8",
  "duration": 8,
  "aspect_ratio": "16:9",
  "prompt": "a cinematic drone shot over a futuristic city at sunrise"
}

查询任务

curl http://127.0.0.1:8002/v1/videos/8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234 \
  -H "Authorization: Bearer YOUR_API_KEY"

处理中:

{
  "id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "task_id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "object": "video",
  "created_at": 1714200000000,
  "status": "processing",
  "state": "processing",
  "task_status": "processing",
  "progress": 45,
  "model": "veo-3-1",
  "video_url": null,
  "metadata": {
    "result_urls": []
  },
  "success": false,
  "final": false
}

视频完成:

{
  "id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "task_id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "object": "video",
  "created_at": 1714200000000,
  "status": "completed",
  "state": "completed",
  "task_status": "completed",
  "progress": 100,
  "model": "veo-3-1",
  "video_url": "https://example.com/generated/video.mp4",
  "url": "https://example.com/generated/video.mp4",
  "metadata": {
    "result_urls": ["https://example.com/generated/video.mp4"]
  },
  "success": true,
  "final": true,
  "completed_at": 1714200180000
}

图片完成:

{
  "id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "task_id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "object": "video",
  "created_at": 1714200000000,
  "status": "completed",
  "state": "completed",
  "task_status": "completed",
  "progress": 100,
  "model": "gpt-image2-2k",
  "video_url": null,
  "image_url": "https://example.com/generated/image.png",
  "url": "https://example.com/generated/image.png",
  "metadata": {
    "result_urls": ["https://example.com/generated/image.png"]
  },
  "success": true,
  "final": true,
  "completed_at": 1714200180000
}

失败:

{
  "id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "task_id": "8c7e4b0e6f3b4b0a9e0a0d8f4f0c1234",
  "object": "video",
  "created_at": 1714200000000,
  "status": "failed",
  "state": "failed",
  "task_status": "failed",
  "progress": 0,
  "model": "veo-3-1",
  "video_url": null,
  "metadata": {
    "result_urls": []
  },
  "success": false,
  "final": true,
  "error": {
    "message": "任务失败原因",
    "code": "task_failed"
  }
}

状态含义:

| status | 含义 | |---|---| | queued | 已入队,等待执行 | | processing | 生成中,继续轮询 | | completed | 已完成,读取 video_url / image_url / url | | failed | 失败,查看 error.message |

/v1/videos 支持模型

以下列表来自 src/api/routes.pyOPENAI_COMPAT_VIDEO_MODELS 和模型归一化逻辑。

| 模型 | 输出 | 内部处理器 | 必填/限制 | 说明 | |---|---|---|---|---| | seedance-2 | 视频 | dreamina_workflow | 建议 duration: 1015 | Seedance 2.0,支持文生视频、首尾帧、多参考图 | | seedance-2-fast | 视频 | dreamina_workflow | 建议 duration: 1015 | Seedance 2.0 快速模型 | | veo-3-1 | 视频 | veo_workflow | 必须 duration: 8 | Veo 3.1 视频生成 | | veo-omni-flash | 视频 | veo_workflow | 必须 duration: 10 | Omni Flash 文生视频,内部 n_frames=300 | | veo-omni-flash-video-edit | 视频/编辑 | veo_workflow | 必须 duration: 8 | Omni Flash 视频编辑入口,内部映射为 veo-omni-flash | | nana-banana-2 | 图片 | veo_workflow | duration 自动设为 1 | 默认 resolution=1k;传 4k 会降为 1k,如需 4K 用专用模型 | | nana-banana-pro | 图片 | veo_workflow | duration 自动设为 1 | 默认 resolution=1k;传 4k 会降为 1k,如需 4K 用专用模型 | | nana-banana-2-4k | 图片 | veo_workflow | duration 自动设为 1 | Nana Banana 2 的 4K 图片入口 | | nana-banana-pro-4k | 图片 | veo_workflow | duration 自动设为 1 | Nana Banana Pro 的 4K 图片入口 | | gpt-image2-1k | 图片 | gpt_workflow | duration 可省略;如传只能为 1 | ChatGPT gpt-image-2 1K 图片 | | gpt-image2-2k | 图片 | gpt_workflow | duration 可省略;如传只能为 1 | ChatGPT gpt-image-2 2K 图片 | | gpt-image2-4k | 图片 | gpt_workflow | duration 可省略;如传只能为 1 | ChatGPT gpt-image-2 4K 图片 |

额外模型:

| 模型 | 接口 | 说明 | |---|---|---| | fpbrowser-use | /v1/chat/completions | NewAPI 测试/按次扣费用 no-op 模型,不创建真实任务 |

请求字段

CreateVideoRequest 允许额外字段透传,所以除下表字段外,也可以传入执行器支持的高级参数。

| 字段 | 类型 | 必填 | 说明 | |---|---|---|---| | model | string | 是 | 见上方模型表 | | prompt | string | 是 | 生成提示词 | | duration | integer | 视频通常必填 | veo-3-1=8veo-omni-flash=10veo-omni-flash-video-edit=8,图片模型只能为 1 或省略 | | aspect_ratio | string | 否 | 常用 16:99:161:14:33:4 | | resolution | string | 否 | S

Related Skills

View on GitHub
GitHub Stars276
CategoryDevelopment
Updated1h ago
Forks76

Languages

Python

Security Score

80/100

Audited on Aug 8, 2026

No findings