关于 JANCTION Render
JANCTION Render 是面向 AI Agent 和 3D 工作流的云端 GPU 渲染服务,可接收 Blender 项目、脚本及常见 3D 文件。它提供带场景诊断的预览,并返回渲染帧或 MP4,无需本地安装 Blender 或配备 GPU。
主要功能
- 01在云端 GPU 上渲染 Blender 场景
- 02接收脚本和多种 3D 文件
- 03提供带诊断反馈的预览
- 04生成转台视频和产品图
- 05输出帧或 MP4
- 06估算并查看渲染任务
适用场景
- 01预览 Agent 生成的 Blender 场景
- 02从 3D 模型制作转台视频
- 03从 GLB 文件生成产品图
- 04将 Blender 项目渲染为 MP4 动画
MCP 相关
JANCTION Render 通过 `https://render.janction.jp/mcp` 远程 MCP 服务和本地 stdio MCP 服务提供渲染工具。远程端点支持 Bearer 令牌认证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://render.janction.jp/mcp?src=registryclaude mcp add --transport http jasmylab-janction-janction-render https://render.janction.jp/mcp?src=registry{"mcpServers":{"jasmylab-janction-janction-render":{"type":"http","url":"https://render.janction.jp/mcp?src=registry"}}}在 Cursor 中打开{"servers":{"jasmylab-janction-janction-render":{"type":"http","url":"https://render.janction.jp/mcp?src=registry"}}}在 VS Code 中打开{"mcpServers":{"jasmylab-janction-janction-render":{"type":"http","url":"https://render.janction.jp/mcp?src=registry"}}}{"mcpServers":{"jasmylab-janction-janction-render":{"serverUrl":"https://render.janction.jp/mcp?src=registry"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
JANCTION Render
什么是 JANCTION Render?
JANCTION Render 是一个面向 Blender 的云端 GPU 渲染农场,AI Agent 可通过 MCP 服务或 HTTP API 调用。发送 .blend
文件、bpy 脚本或 3D 文件(glTF / FBX / USD),即可在几秒内预览,并从 JANCTION 的
NVIDIA GPU 获取帧或 MP4。每次预览还会给出问题判断,例如画面太暗、曝光过度、没有光照或物体超出画面,并提供修复问题的 bpy 代码,让 Agent 在最终渲染前修正场景。无需本地安装 Blender
或 GPU。新密钥可获赠 100 JPY 欢迎额度(每 30 天每个网络限一次;同一网络上的后续密钥共享剩余额度);保存不会扣费的银行卡后还可再获赠 400 JPY(每张卡限一次);之后每 GPU 秒收费 0.1 JPY(每天最多 2 GPU 分钟的预览免费);
由 JasmyLab Inc. 运营。
AI Agent 无需在本地运行 Blender,即可在 JANCTION GPU 上渲染 Blender 项目。可通过 Claude、ChatGPT、 Claude Code、Codex、Cursor 或任何 MCP 客户端使用:支持 MCP 服务(远程和 stdio)、HTTP API 和 CLI。
JANCTION Render 是一款独立于 SmartRender(JasmyLab 面向桌面用户的分布式渲染服务)的产品,与 Render.com 或 Render Network 无关。数据截至 2026-10-08(主要来源为 https://render.janction.jp/facts.json):新密钥可获赠 100 JPY 欢迎额度(1,000 GPU 秒,有效期 14 天,无需银行卡),每 30 天每个网络限一次(同一网络上的后续密钥共享剩余额度);在不收费的页面上保存银行卡后还可再获赠 400 JPY(每张卡限一次);此后,每天最多 2 GPU 分钟的预览免费,最终渲染使用预付额度,费用为每 GPU 秒 0.1 JPY(付费使用于 2026-10-08 开始);每条指令最多渲染 3,000 帧(在一个作业 ID 下自动拆分);免费时段支持 1080p,使用预付额度时最高支持 4K;输入和结果会在最后一次使用 24 小时后删除(通常情况下,总付费金额达到 500 JPY 或以上的密钥可保留 7 天)。
官方网站:https://render.janction.jp · MCP 端点:https://render.janction.jp/mcp · 事实说明:https://render.janction.jp/facts
只需几秒即可在终端中免费试用,无需注册(需要安装 uv;或运行 pip install janction-render,并移除 uvx):
uvx janction-render try # renders a sample scene and shows the free GPU time of your new key
uvx janction-render preview scene.blend # your .blend, bpy script or 3D file
uvx janction-render render scene.blend --frames 1-48 --output mp4 --wait
uvx janction-render turntable model.glb # a 360-degree turntable MP4 in one command (a path or an https link)
uvx janction-render shots model.glb --transparent # four product shots (PNG)
一条命令能生成什么(真实输出)
这些内容于 2026-10-10 在生产环境 GPU(NVIDIA RTX PRO 6000 Blackwell)上,使用 Khronos 的 WaterBottle 示例渲染而成(公有领域,CC0); 复制任意一行即可直接运行。价格按每 GPU 秒 0.1 日元计算,新密钥的欢迎额度足以抵扣。
| 命令 | GPU 时间 | 价格 | |
|---|---|---|---|
![]() | uvx janction-render shots https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb | 13.9 s | 约 1.4 日元 |
![]() | uvx janction-render turntable https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb | 85.2 s | 约 8.5 日元 |
![]() | uvx janction-render render https://render.janction.jp/samples/ex12_logo_ring_spin.py --frames 1-48 --size 1280x720 --engine eevee --output mp4 --wait | 54.1 s | 约 5.4 日元 |
产品照片为 4 张 1920x1080 PNG;转台动画和动画为 MP4(此处以 GIF 展示)。你自己的 .glb、.blend
或 bpy 脚本都可以替换链接。更多示例及其脚本:https://render.janction.jp/examples
在代码仓库中保存 3D 文件?添加一个按钮,让任何人都能从自己的 AI 或终端渲染这些文件 (GitHub 和 Hugging Face 上的文件页面链接可直接使用;在 https://render.janction.jp/go 创建一个):
[](https://render.janction.jp/go?scene=https://github.com/you/repo/blob/main/model.glb)
官方网站指南
- 如何在没有 GPU 的情况下渲染 Blender
- 使用 Agent:Claude Code + Blender · Codex + Blender · Cursor + Blender · ChatGPT + Blender · 用于渲染的 Blender MCP 服务
- 面向 AI Agent 的最佳渲染农场(2026):JANCTION、BlendSwap、 Sceneplane、在 Modal 或 RunPod 上运行自己的工作节点,以及本地 Blender MCP,横向比较
- 将无头 Blender 用作 API · 将 glTF、GLB 或 FBX 转换为 MP4 · 360 度产品视频 · Blender 渲染的费用
- 附带 bpy 脚本的示例 · 比较 · 日语介绍
为什么使用它?
- 无需 GPU,也无需安装 Blender。 场景可以是 Agent 编写的 bpy 脚本、
.blend文件或 3D 文件;Blender 会在我们的 GPU 上运行。 - 专为 Agent 打造。 先预览(使用 GPU 几秒即可渲染 1-4 帧),最终渲染前提供时间和费用估算,提供包含修复方法的结构化错误信息,每个密钥均可设置支出上限,并可使用
Idempotency-Key安全重试。 - 3D 文件和转台动画。 glTF / GLB、FBX、USD、OBJ、STL、PLY、Alembic 会导入到带有摄像机和 HDRI 光照的空场景中;
orbit=True会生成转台动画。固定价格的成品:POST /v1/outcomes/turntable和/product-shot。 - 明确的限制。 新密钥可获 100 JPY 欢迎额度,无需绑定卡(有效期 14 天;每个网络每 30 天限领一次);绑定卡后再获 400 JPY 额度,不会扣款;之后按 GPU 秒计费,每秒 0.1 JPY(每天最多 2 GPU 分钟的预览免费);每条指令最多渲染 3,000 帧,自动拆分任务(免费时段支持 1080p,预付额度支持最高 4K),使用 JANCTION 自有 GPU (NVIDIA RTX PRO 6000 Blackwell);GPU 繁忙时,任务会进入队列等待,并显示预计等待时间。输入和结果会在最后一次使用 24 小时后删除(累计支付满 500 JPY 的密钥通常保留 7 天),且绝不会用于训练。
- 不是 Render.com。 名字相同,产品不同。
快速开始
Claude.ai / ChatGPT(无需安装)。 设置 → 连接器 → 添加 https://render.janction.jp/mcp → 连接(同意页面会创建免费密钥)。然后粘贴:
几秒后即可获得 4 帧预览。电脑上的文件:将其上传到 https://render.janction.jp/upload,获取一个有效期为 12 小时的链接,然后说“渲染此文件:”。
Claude Code。
claude mcp add --transport http janction-render https://render.janction.jp/mcp
然后运行 /mcp 进行身份验证,并提出请求:“在 Blender 中构建一个小型街景,包含摄像机飞行穿越效果,并使用 janction-render 渲染预览。”
HTTP(任意语言)。
curl -s -X POST https://render.janction.jp/v1/keys # -> {"api_key": "jr_..."} no sign-up
curl -s -X POST https://render.janction.jp/v1/files -H "X-API-Key: $KEY" -F "[email protected]" # -> {"scene_id": "f_..."}
curl -s -X POST https://render.janction.jp/v1/jobs -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"scene_id":"f_...","kind":"preview","frames":[1]}' # -> job_id; then GET /v1/jobs/{job_id}
在你自己的 Agent 或应用中使用
Python(pip install janction-render;首次调用会创建免费密钥,并将其保存在 ~/.janction-render.json 中):
from janction_render.client import Client
c = Client() # or Client(api_key="jr_...")
scene = c.upload("scene.py") # a bpy script, a .blend, or a .glb / .fbx / .usd / .obj file
job = c.submit(scene["scene_id"], kind="final", frame_start=1, frame_end=48, output="mp4")
job = c.wait(job["job_id"], timeout=1800)
print(job["status"], c.download(job["job_id"], "out", only="mp4"))
按使用量付费,使用预付额度;无需订阅(价格:https://render.janction.jp/pricing)。
不必轮询,可向 POST /v1/jobs 传入 notify_url(https)并在任务完成时接收一次 JSON POST(job.done /
job.failed,包含下载链接);添加 Idempotency-Key 标头即可安全重试。OpenAPI:https://render.janction.jp/openapi.json
完整应用示例(用户上传 GLB,应用下单购买固定价格的产品图,并通过 webhook 保存图片):
https://render.janction.jp/blender-render-api#embed
Agent 框架通过密钥作为 bearer token 连接远程 MCP 服务 https://render.janction.jp/mcp
(运行 curl -s -X POST https://render.janction.jp/v1/keys 即可获取密钥,无需注册)。
OpenAI Agents SDK(保留较长的超时时间:render_preview 会等待图像生成,耗时超过默认的 5 秒):
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
async def main():
async with MCPServerStreamableHttp(name="janction-render", client_session_timeout_seconds=120,
params={"url": "https://render.janction.jp/mcp",
"headers": {"Authorization": "Bearer jr_..."}}) as render:
agent = Agent(name="3D artist", instructions="Render Blender scenes with janction-render.", mcp_servers=[render])
result = await Runner.run(agent, "Render a preview of https://render.janction.jp/samples/cube_scene.py")
print(result.final_output)
asyncio.run(main())
LangChain(pip install langchain-mcp-adapters):
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
async def main():
client = MultiServerMCPClient({"janction-render": {"url": "https://render.janction.jp/mcp", "transport": "streamable_http",
"headers": {"Authorization": "Bearer jr_..."}}})
tools = await client.get_tools() # render_preview, render_final, render_status, render_download, ...
print([t.name for t in tools])
asyncio.run(main())
OpenAI Responses API(远程 MCP;render_final 会持续请求批准,因为它会消耗额度):
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5",
tools=[{"type": "mcp", "server_label": "janction_render", "server_url": "https://render.janction.jp/mcp",
"authorization": "jr_...",
"require_approval": {"never": {"tool_names": ["scene_info", "render_preview", "render_estimate",
"render_status", "render_download"]}}}],
input="Render a preview of https://render.janction.jp/samples/cube_scene.py and give me the image link.",
)
print(resp.output_text)
Anthropic Messages API(MCP 连接器;fallbacks="default" 会在请求被拒绝时改用备用模型重新运行):
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5-5",
max_tokens=16000,
betas=["mcp-client-2025-11-20", "server-side-fallback-2026-07-01"],
fallbacks="default",
mcp_servers=[{"type": "url", "url": "https://render.janction.jp/mcp", "name": "janction-render",
"authorization_token": "jr_..."}],
tools=[{"type": "mcp_toolset", "mcp_server_name": "janction-render"}],
messages=[{"role": "user", "content": "Render a preview of https://render.janction.jp/samples/cube_scene.py"}],
)
for block in response.content:
if block.type == "text":
print(block.text)
Google ADK:
import os
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams
agent = Agent(
name="renderer",
model="gemini-2.5-flash",
instruction="Render Blender scenes with JANCTION Render: preview first, ask before a final render.",
tools=[MCPToolset(connection_params=StreamableHTTPConnectionParams(
url="https://render.janction.jp/mcp",
headers={"Authorization": "Bearer " + os.environ["JANCTION_RENDER_API_KEY"]}))],
)
Pydantic AI:
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPToolset
render = MCPToolset("https://render.janction.jp/mcp", headers={"Authorization": "Bearer jr_..."})
agent = Agent("anthropic:claude-opus-5-5", toolsets=[render])
用一条命令连接这台电脑上的 AI 应用,并告知项目中的每个编码 Agent 何时以及如何进行渲染:
uvx janction-render connect # lists Claude Code, Codex, Gemini CLI, Cursor, Windsurf, VS Code and the step for each
uvx janction-render connect claude-code # applies one (or: connect all --yes)
uvx janction-render init # writes a short section to AGENTS.md and adds the server to .mcp.json
init 只会在 CLAUDE.md、GEMINI.md、.cursor/ 和 .vscode/ 已存在时修改它们(或通过 --claude、--cursor、
--vscode 启用);会保留这些文件中的其他所有内容,并备份其修改的 JSON 文件。
本地 MCP 服务(stdio)也提供提示词,这些提示词会显示为斜杠命令,例如 Claude Code 中的 /mcp__janction-render__turntable_video:try_janction_render、render_my_scene、turntable_video、product_shots、scene_from_description、blend_to_mp4。
MCP
远程(Streamable HTTP,OAuth 2.1,支持动态客户端注册;原始密钥也可用作 Authorization: Bearer jr_...)
| 客户端 | 操作方法 |
|---|---|
| Claude.ai(网页、桌面、移动端) | Settings → Connectors → Add custom connector → 粘贴 URL → Connect |
| ChatGPT | Settings → Connectors → Advanced → Developer mode → Create → 粘贴 URL(OAuth) |
| Claude Code | claude mcp add --transport http janction-render https://render.janction.jp/mcp,然后运行 /mcp 进行身份验证 |
| Codex | codex mcp add janction-render --url https://render.janction.jp/mcp |
| Gemini CLI / Antigravity CLI | gemini extensions install https://github.com/JasmyLab-JANCTION/janction-render(此仓库包含 gemini-extension.json) |
| Kimi Code(Kimi K3 和其他模型) | /plugins install https://github.com/JasmyLab-JANCTION/janction-render(此仓库包含 kimi.plugin.json:MCP 服务和工作流技能),或在 ~/.kimi-code/mcp.json 中添加:{"mcpServers": {"janction-render": {"url": "https://render.janction.jp/mcp"}}},然后运行 /mcp-config login janction-render(OAuth) |
| OpenCode | 在 ~/.config/opencode/opencode.json 中添加:{"mcp": {"janction-render": {"type": "remote", "url": "https://render.janction.jp/mcp"}}},然后运行 opencode mcp auth janction-render(OAuth) |
| Qwen Code | qwen extensions install https://github.com/JasmyLab-JANCTION/janction-render(此仓库包含 qwen-extension.json:MCP 服务和工作流技能),或运行 qwen mcp add --transport http janction-render https://render.janction.jp/mcp |
| GitHub Copilot CLI | copilot mcp add --transport http janction-render https://render.janction.jp/mcp,然后运行 /mcp auth janction-render(OAuth)。如需使用技能:运行 copilot plugin marketplace add JasmyLab-JANCTION/janction-render 和 copilot plugin install janction-render@janction-render |
| Grok(grok.com) | Connectors → New Connector → Custom → 粘贴 URL |
| Perplexity(Pro / Max / Enterprise)、Le Chat(工作区管理员) | 使用该 URL 添加自定义远程 MCP 连接器 |
| Notion Agent(Business / Enterprise) | Settings → Connections → Discover → Add Custom MCP → 粘贴 URL,然后登录(工作区管理员允许使用自定义 MCP 服务后,才会显示此按钮) |
| Cursor | 在 .cursor/mcp.json(项目)或 ~/.cursor/mcp.json 中添加:{"mcpServers": {"janction-render": {"url": "https://render.janction.jp/mcp"}}},然后按 Cursor 提示登录(OAuth)。一键安装:在 Cursor 中安装 |
| VS Code(Copilot Agent 模式) | 在 .vscode/mcp.json 中添加:{"servers": {"janction-render": {"type": "http", "url": "https://render.janction.jp/mcp"}}},或运行 code --add-mcp '{"name":"janction-render","type":"http","url":"https://render.janction.jp/mcp"}',然后启动服务并登录(OAuth) |
| Windsurf、Cline、Goose 和其他 MCP 客户端 | 使用上述 URL 连接 Streamable HTTP(OAuth 或通过 Bearer API 密钥请求头)。安装说明:llms-install.md。Cursor 项目规则(适用时机、预览优先流程):integrations/cursor |
| Claude Desktop 和其他仅支持 stdio 的客户端(npm) | {"mcpServers": {"janction-render": {"command": "npx", "args": ["-y", "janction-render"]}}}:npm 包 janction-render 通过 OAuth 将 stdio 连接到上述 URL(使用已有密钥时加上 --key jr_...;通过 uv 使用 Python stdio 服务时加上 --local)。Claude Code:claude mcp add janction-render -- npx -y janction-render |
远程工具接收 scene_script(作为文本的 bpy 代码)、scene_url(指向 .blend、.py 或 3D 文件的 https 链接,或来自 https://render.janction.jp/upload 的链接)或 scene_id,以及用于纹理或 glTF .bin 文件的 asset_urls。结果会以内嵌图像和下载链接的形式返回;下载无需密钥,链接有效期约为 24 小时(只要视频可使用 render_download(only="mp4"))。 |
Claude Code 插件(远程连接器加上包含工作流的技能):
/plugin marketplace add JasmyLab-JANCTION/janction-render
/plugin install janction-render@janction-render
Stdio(发送本地文件)
该软件包发布在 PyPI 上,名称为 janction-render(安装 uv 后,npm 启动器 janction-render 会通过 npx -y janction-render --local 运行它)。
# Claude Code (uvx runs it without a global install)
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- uvx --from janction-render janction-render-mcp
# or with pip / pipx
pip install janction-render
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- janction-render-mcp
Codex:添加到 ~/.codex/config.toml
[mcp_servers.janction-render]
command = "uvx"
args = ["--from", "janction-render", "janction-render-mcp"]
env = { JANCTION_RENDER_SERVER = "https://render.janction.jp" }
首次使用时会自动发放临时 API 密钥,并缓存到 ~/.janction-render.json;设置
JANCTION_RENDER_API_KEY 可固定使用一个密钥(配额以及之后的额度都归该密钥所有)。远程连接器也可以使用同一个密钥:在连接页面粘贴即可。
工具
| 工具 | 说明 |
|---|---|
| `scene_info(scene_script | scene_url |
render_preview(..., frames="1-24", environment?, blender?) | 最多 4 帧(720p 预算),平铺显示并标注帧号;以内嵌图像的形式返回 |
render_review(scene_path / scene_script / scene_url / scene_id, environment="studio") | 在摄影棚灯光下从 4 个方向(0/90/180/270 度)检查 3D 模型或生成的场景:通过 / 警告 / 失败、评分、执行的检查项(文件、可见性、构图、曝光、灯光)及修复代码,并在一张图中展示 4 个视图。Stdio 服务;GPU 时间与一次预览相同 |
render_estimate(scene_id, frame_start, frame_end, width, height, samples) | GPU 秒数、队列等待时间、“约 N 分钟”、是否符合剩余免费 GPU 时间?不消耗 GPU 时间 |
render_final(scene_id, frame_start, frame_end, width, height, samples, fps, output, environment?, blender?, engine?, transparent?, notify_url?) | 输出帧(png / exr)或视频(mp4 / webm / prores / gif / webp);transparent=True 保留 Alpha 背景(png / exr / webm / gif / webp);作业完成时,notify_url 会收到一次 JSON POST;返回 job_id + 预估时间 |
render_status(job_id) | 进度和预计完成时间(eta.human);render_download(job_id, only="mp4" / "frames" / "all") 获取文件或链接;render_cancel(job_id) |
billing() | 剩余免费 GPU 时间(欢迎额度,然后是当日免费预览分钟数)、额度、充值链接,以及自动充值和月度套餐状态 |
render_share(job_id, title?, note?, include_script?, listed?) | 公开页面 /r/<id>,包含图像或视频、条件和(可选)脚本;在 24 小时有效期结束后仍可访问,直到调用 render_unshare;设置 listed=True 后,经审核会显示在 /gallery 中 |
asset_search(query, kind) | 在 Poly Haven 上按关键词搜索 CC0 模型 / 纹理 / HDRI;结果包含 polyhaven:<id> 和条目文件 |
render_info() | 在线或受限的工作进程(GPU 借给其他工作负载时会受限)、队列、预计等待时间、支持的输入、环境预设、Blender 版本 |
render_preview / render_final 的选项:environment(预览支持 studio、sunset、overcast、night、compare;environment_strength、environment_visible=False 可使用 HDRI 灯光和纯灰色背景)、orbit / orbit_frames / orbit_elevation(转台),blender("5.2"),以及 assets(stdio:随场景发送的本地文件,可通过脚本中的 os.environ["JR_ASSETS_DIR"] 找到;.blend 的外部文件会通过 pip install janction-render[blend] 自动收集)或 asset_urls(远程)。
CLI:janction-render inspect|preview|render|status|download|share|unshare|cancel|jobs|balance|topup|limits|outcomes|info。
API
POST /v1/keys -> {api_key} (header X-API-Key afterwards)
POST /v1/files multipart "file" (.blend|.py|.glb|.fbx|.usd|.obj|...) -> {scene_id}
POST /v1/files/{id}/assets multipart "files" textures, glTF .bin ... GET /v1/files/lookup?sha256= reuse an upload
POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quota, currency, expires_at
POST /v1/jobs {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output (png|exr|mp4|webm|prores|gif|webp), transparent, notify_url (https), engine (cycles|eevee),
environment, environment_strength, environment_visible, blender, orbit, orbit_frames, orbit_elevation} header Idempotency-Key makes retries safe
GET /v1/jobs/{id} status, progress, eta, artifacts[], cost, warnings, info, failure (code + fix) DELETE /v1/jobs/{id} cancel
GET /v1/jobs/{id}/artifacts/{name} PNG / MP4
GET /v1/jobs/{id}/archive?only=png every file of the job in one zip (frame sequences: one request instead of hundreds)
GET /v1/outcomes fixed-price outcomes; POST /v1/outcomes/turntable {scene_id, size, frames} POST /v1/outcomes/product-shot {scene_id, size, transparent?}
POST /v1/try JSON {scene_script | scene_url, frames?, width?, height?, environment?} (no key) -> first 720p preview + an API key to continue, in one response (1 per network per 24h)
POST /v1/drops multipart "file" (no key) -> a 12-hour https link to pass as scene_url (the /upload page uses this)
POST /v1/jobs/{id}/share {title?, note?, include_script?, listed?} -> {share_id, url} DELETE /v1/jobs/{id}/share GET /v1/shares
GET /r/{share_id} public page (no key) GET /gallery
GET /v1/assets/search?q=&kind=models|textures|hdris CC0 assets (Poly Haven) -> spec polyhaven:<id>
POST /v1/files/{id}/assets/urls {urls: ["https://...", "polyhaven:<id>"]} fetch assets server-side
GET /v1/me (quota, balance, limits) POST /v1/me/limits {job_yen?, day_yen?} spending caps per key
POST /mcp remote MCP (Streamable HTTP; Bearer api key or OAuth)
GET /.well-known/oauth-protected-resource/mcp OAuth discovery
POST /v1/billing/checkout {amount_yen} -> {checkout_url} POST /v1/billing/sync GET /v1/ledger
GET /openapi.json /llms.txt /llms-full.txt /ja/llms.txt /facts.json /version.json /capabilities.json /pricing.json /status.json
如果任务超出免费 GPU 时长且余额不足,会返回 402 payment_required,并附带 checkout_url(展示给用户)、topup_yen,以及免费时长可覆盖的任务用量;400 beta_limit 表示任务过大(请拆分)。每个 API 错误都包含 retryable、possible_fix 和 docs_url;失败的任务会附带 failure,其中包含错误代码和建议操作。超过消费上限的任务会在预留任何资源之前被拒绝,并返回 403 spend_cap_exceeded。
示例
Agent 可以编写的场景脚本(服务会设置引擎、分辨率、采样数和降噪;脚本负责设置场景、摄像机和帧范围):
import bpy, math
for ob in list(bpy.data.objects):
bpy.data.objects.remove(ob, do_unlink=True)
scene = bpy.context.scene
scene.frame_start, scene.frame_end = 1, 24
bpy.ops.mesh.primitive_monkey_add(location=(0, 0, 1))
cam = bpy.data.objects.new("Camera", bpy.data.cameras.new("Camera"))
scene.collection.objects.link(cam); scene.camera = cam
cam.location = (6, -6, 4); cam.rotation_euler = (math.radians(60), 0, math.radians(45))
sun = bpy.data.objects.new("Sun", bpy.data.lights.new("Sun", "SUN"))
scene.collection.objects.link(sun)
默认使用 Cycles;设置 engine="eevee" 可降低动画成本(每个任务需约 7 s 编译着色器,之后每帧成本约减半)。
在 Blender 5.0 中,材质始终使用节点:请设置 Principled BSDF 的 Base Color,而非 diffuse_color。脚本在隔离容器中运行,无法访问网络。更多内容:samples/cube_scene.py、samples/polyhaven_room.py。实测耗时:https://render.janction.jp/benchmarks
定价
新密钥附带 100 JPY 欢迎额度(1,000 GPU 秒,有效期 14 天,无需银行卡),可用于预览和最终渲染;每 30 天每个网络可获得一份完整额度(同一网络上的后续密钥共享剩余额度)。在 Stripe 页面保存银行卡(不会产生扣款),可额外获得 400 JPY,每张卡限一次(总额最高 500 JPY)。额度用完或过期后,每天最多可免费预览 2 GPU 分钟;最终渲染按每 GPU 秒 0.1 JPY 收费,使用预付额度支付,可通过 Stripe Checkout 页面刷卡购买(最低 500 JPY;2,000 JPY 可获得 2,200 JPY 额度,5,000 JPY 可获得 5,750 JPY,10,000 JPY 可获得 12,000 JPY;欢迎期内的首次充值按 1.5 倍计算,奖励额度最高 500 JPY)。仅对免费时长未覆盖的部分收费。每条指令最多可渲染 3,000 帧(内部会自动拆分,但使用同一个任务 ID):免费时长支持 1080p,使用预付额度最高可渲染 4K(3840x2160)。POST /v1/estimate 会在使用任何 GPU 时长之前,告知收费金额(cost.estimated_yen)、币种和有效期:https://render.janction.jp/pricing
故障排除
| 你看到的内容 | 含义 | 处理方法 |
|---|---|---|
402 payment_required | 任务超出密钥的剩余免费额度 | 回复中的 tell_user 会说明本次渲染费用和充值可购买的额度;通过 checkout_url 付款(最低 500 JPY),然后重新提交同一任务,或减少帧数/降低分辨率 |
script_blocked | bpy 脚本使用了沙箱禁止的功能(网络、进程、ctypes) | GPU 工作进程无法访问网络:通过 asset_urls=[...](MCP)或 POST /v1/files/{scene_id}/assets/urls 传入网页上的文件,然后使用 jr_assets.path('<name>') 打开。若脚本仅因使用 urllib/requests 被拒绝,不会因此撤销密钥 |
script_path / scene_path | 场景引用了你自己电脑上的文件 | 将文件作为资源发送,并通过名称(相对路径)引用 |
McpError: Timed out while waiting for response(OpenAI Agents SDK) | SDK 默认只等待工具 5 秒 | 使用 MCPServerStreamableHttp(..., client_session_timeout_seconds=120)(参见“使用你自己的 Agent 或应用”) |
任务停留在 queued,且 eta.human 显示 GPU 已借出 | GPU 暂时与另一个工作负载共享 | 告知用户需要等待;之后调用 render_download(job_id, wait_seconds=45),而不是轮询 |
429 rate_limited | 短时间内请求过多 | 等待 Retry-After 秒后重新发送 |
| 画面太暗、过曝或物体不在画面内 | 预览的判定结果会指出问题,并提供用于修复的 bpy 代码 | 应用修复后先重新预览(只需几秒),再进行最终渲染;3D 文件会自动按实际尺寸取景 |
来自 Claude、ChatGPT 或 Codex 的 401 | 连接器的登录已过期 | 重新连接连接器(在 Claude Code 中使用 /mcp),或将密钥作为 X-API-Key / Authorization: Bearer jr_... 传入 |
文档
- 事实说明(答案不一致时以此为准):https://render.janction.jp/facts · JSON:
/facts.json、/version.json、/changelog.json、/status.json - 面向 Agent:https://render.janction.jp/llms.txt(所有指南的全文:`/llms-full.txt`)
- 指南:面向 Agent 的渲染农场 · 无需 GPU ·
Cycles 在我的 MacBook 上运行很慢 ·
Claude · ChatGPT · Claude Code ·
Codex · Cursor · bpy 脚本 ·
API · 比较 · 产品 · 日文请访问
/ja/ - 状态:https://render.janction.jp/status · 安全与保留政策:https://render.janction.jp/security · 更新日志:https://render.janction.jp/changelog
功能详解
- 输入:
.blend文件(纹理随文件一起传送)、用于构建场景的 bpy Python 脚本(无需本地安装 Blender),或导入空场景的3D 文件(glTF/GLB、FBX、USD、OBJ、STL、PLY、Alembic)。 environment="studio" | "sunset" | "overcast" | "night"使用随附的 HDRI(CC0)为场景布光,方便快速获得良好的首次渲染效果;environment="compare"会在一张带标签的图片中预览同一帧在全部四种预设下的效果,供 Agent 选择。.gltf或.obj会自动附带其.bin/.mtl/ 纹理文件(来自同一文件夹或同一 URL 文件夹)。orbit=True会将任意场景或导入的模型变为转台效果:轨道摄像机会环绕模型一周(orbit_frames,默认值为 24; 预览会展示 0/90/180/270 度的效果;最终渲染若不指定frame_end,则会输出完整环绕视频的 MP4)。取景时会忽略平坦的地板和墙面;可通过orbit_target(对象名称或x,y,z)和orbit_distance(倍数)调整镜头。- GPU 借给其他工作负载期间,工具会立即返回排队任务及等待时间估算(已借出多久、通常会借出多久、预计还需等待多久;
eta.gate),而不会一直等待。 - 任务渲染期间,
render_status会统计当前运行分块中已完成的帧数,因此 ETA 会每隔几秒更新一次。 - 在支持 MCP Apps 的宿主中(包括 Claude 网页版和桌面版等),预览、进度和下载链接也会以交互面板的形式显示在聊天中:图片、进度条、“打开 MP4”,以及
environment="compare"预览后的预设按钮。远程连接器和 stdio 软件包都附带该面板(janction_render/mcp_app.html);设置JR_MCP_APPS=0可将其关闭。 - 可按名称查找 CC0 资源:
asset_search("wooden table")可搜索 Poly Haven 的模型、纹理和 HDRI;在asset_urls(远程)或assets(stdio)中传入polyhaven:<id>,文件便会下载到 GPU 上的JR_ASSETS_DIR/<id>/,可直接导入 (bpy.ops.import_scene.gltf(filepath=os.path.join(os.environ['JR_ASSETS_DIR'], 'wooden_table_02', 'wooden_table_02_1k.gltf')))。 场景脚本可以import jr_assets并使用简便调用:jr_assets.import_model('wooden_table_02')、jr_assets.apply(floor, jr_assets.material('wood_floor_deck', scale=2))(将 diff / normal / roughness / metal 接入 Principled BSDF),jr_assets.world_hdri('studio_small_09')。参见samples/polyhaven_room.py。 - 选择分享的渲染结果(
render_share)会生成一个公开页面(/r/<id>,适用于 X 和 Discord 的 OGP),并在取消分享前一直保留。 - Blender 5.0、GPU 上的 Cycles(当工作节点支持 Blender 5.2 时,
blender="5.2"会选择 Blender 5.2;render_info会列出可用版本)。
Blender 插件和 DCC 工具(面向用户,而非 Agent)
- Blender 扩展(
addons/blender/,Blender 4.2+):在 Properties → Render 下提供 JANCTION Render 面板,包含 Preview、 Estimate 和 Final。系统会上传当前打开文件的副本及其引用的纹理(使用相对路径);结果会保存到 .blend 文件所在目录。可从扩展仓库安装:https://render.janction.jp/extensions/index.json(Preferences → Get Extensions → Repositories → + → Add Remote Repository),也可安装 zip 文件:https://render.janction.jp/extensions/janction_render-0.1.2.zip(运行python scripts/build_blender_addon.py可从本仓库构建)。 使用指南:https://render.janction.jp/blender-addon - Maya、Houdini、Cinema 4D(
integrations/):导出为 USD / FBX / Alembic,连同纹理一起上传,使用 Cycles 渲染, 并打开结果;支持 Preview、Final(MP4)和 Turntable。仅使用 Python 标准库;jr_submit.py是共用客户端。 使用指南:https://render.janction.jp/maya-houdini-cinema4d
自托管
服务端(FastAPI + SQLite,包含远程 MCP 端点)和工作器(在一次性 Docker 容器中运行 Blender,
--network none --cap-drop ALL)位于内部仓库,暂未包含在此软件包中。本仓库包含客户端部分:stdio MCP 服务、CLI、HTTP 客户端、示例、Claude Code 插件、Blender 插件和 DCC 工具。
MCP 注册表
此服务已列入官方 MCP 注册表,名称为 io.github.JasmyLab-JANCTION/janction-render(远程服务:https://render.janction.jp/mcp)。
mcp-name: io.github.JasmyLab-JANCTION/janction-render
安全
漏洞报告:请参阅 SECURITY.md。保留期限、隔离和外部测试的概要请见安全页面。
许可证
此软件包、MCP 服务、CLI 和 DCC 工具采用 MIT 许可证(请参阅 LICENSE)。Blender 扩展(位于
addons/blender/)采用 GPL-3.0-or-later 许可证,这是 Blender 对插件的要求。由 JasmyLab Inc. 运营。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。


