{"schemaVersion":"toolkit.solution-page.v1","publisher":{"name":"Toolkit","url":"https://cn.toolkit.fun"},"slug":"website-deployment","category":"websites","status":"beta","locale":"zh","documentUrl":"https://cn.toolkit.fun/solutions/websites/website-deployment.json","title":"网站生成与部署","summary":"把 Agent 生成的静态网站构建、预览、检查并发布到临时或自定义域名。","pageUrl":"https://cn.toolkit.fun/solutions/websites/website-deployment","requestUrl":"https://cn.toolkit.fun/solutions/websites/website-deployment/request","tool":{"slug":"website.deploy","status":"available","manifestUrl":null},"workflow":{"slug":"website.deploy","status":"available","pageUrl":"https://cn.toolkit.fun/solutions/websites/website-deployment"},"delivery":{"status":"available","steps":["创建网站资源","提交文件并执行部署工作流","打开预览地址并检查结果","发布或回滚版本"],"deliverables":["不可变网站版本","staging 预览地址","QA 检查报告","生产地址和版本回滚"],"constraints":["当前首个版本面向静态网站","动态后端和数据库需要单独部署","发布前必须完成构建和 QA"]},"intake":{"mode":"website_files","onlineUploadAvailable":true,"endpoint":"https://cn.toolkit.fun/api/v1/websites/:id/deploy","contact":"mailto:support@toolkit.fun","fields":["websiteId","files","source","provider","versionId"]},"pricing":null,"locales":{"zh":{"title":"网站生成与部署","summary":"把 Agent 生成的静态网站构建、预览、检查并发布到临时或自定义域名。"},"en":{"title":"Website generation and deployment","summary":"Build, preview, verify, and publish a static website generated by an Agent."}},"agent":{"callable":true,"endpoints":{"rest":"POST /api/v1/websites/:id/deploy","mcp":null},"authentication":{"discovery":"public","execution":"session_or_api_token"},"pricing":{"status":"no_charge","amount":0},"requiresHumanReview":false,"executionStatus":"available","discoveryTerms":["website deployment","static website","网站部署","发布网站"],"nextAction":"调用 POST /api/v1/websites/:id/deploy，提交 input.files 或 input.source。","discoveryUrl":"https://cn.toolkit.fun/solutions.json","requestUrl":"https://cn.toolkit.fun/solutions/websites/website-deployment/request","contract":{"coordinateSystem":"displayed_page_top_left_points","limits":{"maxBytes":8388608,"maxPages":100,"maxNewFields":200},"analyze":{"method":"POST","path":"/api/v1/solutions/documents/fillable-pdf/analyze","input":{"contentBase64":"PDF base64"},"output":["pages","fonts","candidates","existingFieldCount","contentBase64"],"detection":"explicit blank markers only; scans require manual fields"},"generate":{"method":"POST","path":"/api/v1/solutions/documents/fillable-pdf/generate","input":{"contentBase64":"PDF base64 (prefer analyze output)","filename":"form.pdf","fields":[{"name":"applicant_name","type":"text","page":1,"x":40,"y":60,"width":160,"height":24,"required":true,"value":"","fontId":"","fontSize":null,"coverOriginal":false}]},"output":["contentBase64","filename","fieldCount","addedFieldCount","verified"]},"billing":{"model":"Toolkit Credits","analyze":0,"generate":"ceil(pages/5) + ceil(fields/10)","receipt":"output.billing","task":"output.run.id"},"fieldRules":{"types":["text","checkbox","radio","dropdown"],"names":"unique; no dots; 1-120 characters","page":"1-based","bounds":"fully inside displayed page","options":"radio/dropdown require unique ASCII options; radio needs >=2; buttons arranged left to right beside existing labels","text":"fontId/fontSize can match a source font and nearby size; coverOriginal=true draws an opaque white rectangle under a text field to hide the original text visually; source content remains in the PDF; missing glyphs are rejected","emptyFields":"rejected","existingFields":"preserved","signedFiles":"rejected","encryption":"empty-password PDFs decrypted with qpdf; password-locked PDFs rejected"},"errors":["PDF_FIELDS_REQUIRED","PDF_FIELD_NAME_INVALID","PDF_FIELD_GEOMETRY_INVALID","PDF_FIELD_OPTIONS_INVALID","PDF_FONT_UNAVAILABLE","PDF_FONT_GLYPH_MISSING","PDF_PASSWORD_REQUIRED","PDF_SIGNED","PDF_PAGE_LIMIT"]}}}