flask-review
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFlask Review Loop
Flask审核循环
Flask is the feedback layer for video. Reviewers hit record and talk through the
video (voice, camera, screen, drawing on frames) instead of typing; Flask turns the
recording into individual timestamped comments with transcripts and summaries, so
you can read every piece of feedback as text anchored to a video timestamp. Typed
comments arrive the same way.
All access goes through the Flask MCP server (), included with this plugin
(https://api.flask.do/api/mcp/mcp). If its tools are unavailable, the user needs to
authenticate once: tell them to run , pick , and complete the browser
sign-in.
flask/mcpflaskFlask是视频的反馈层。审核者无需打字,只需录制并对着视频(语音、摄像头、屏幕、在帧上绘图)进行讲解;Flask会将录制内容转换为带时间戳的独立评论,并附带转录文本和摘要,因此你可以查看每条锚定到视频时间戳的文本形式反馈。文字评论也会以相同方式呈现。
所有访问都通过Flask MCP服务器()进行,该服务器包含在本插件中(https://api.flask.do/api/mcp/mcp)。若其工具无法使用,用户需完成一次身份验证:告知他们运行`/mcp`,选择`flask`,并完成浏览器端登录。
flaskThe loop
循环流程
- Start the upload - . Find a folder with
upload_file_start(folder_id, file_size, title, content_type)if you do not have one. The response includes the shareable link.contents() - Give the user the link IMMEDIATELY - before uploading any bytes. They can open it right away and watch the upload and processing happen live. Never wait for "ready" to share the link.
- Upload the bytes with the exact curl command from the tool's (a presigned PUT - the Content-Type header is required).
next_step - Finalize with . The video is watchable instantly via preview playback. Do not poll
upload_file_complete(asset_id); there is nothing to wait for.asset_status - Listen for feedback - . It blocks up to ~45s and returns new feedback the moment it is left. Loop it, passing the returned
wait_for_feedback(asset_id)each time, while the user reviews.next_since - Read the feedback properly:
- is the verbatim text of a comment;
contentis seconds into the video.timestamp - Recording items carry (what the reviewer said, sliced to this segment) and
recording.transcript. Treat the transcript as the feedback.recording.ai_summary - When the transcript references something visually ("this", "here", "that button",
"move it there", or describes a drawn arrow/circle), call
. It returns the actual frames the reviewer was pointing at WITH their drawing rendered in, plus the transcript marked
get_annotated_frames(element_id)so you can see exactly what each reference means. This is the reliable way to resolve ambiguous references - prefer it over guessing from words alone.[FRAME N] - (Local fallback for full-res, no drawing overlay: extract the frame yourself with
and read the image.)
ffmpeg -ss <timestamp> -i <file> -frames:v 1 /tmp/frame.png
- Implement the changes, re-render, and upload the revision as a NEW VERSION of
the same asset: pass to
version_of: "<asset_id>"ANDupload_file_start. Never create a separate asset for a revision.upload_file_complete - Share the - it permanently shows the newest version, so the user keeps one link for the whole iteration.
version_stack_url - Go back to step 5. Repeat until the user says they are done.
- 启动上传 - 调用。若没有可用文件夹,可通过
upload_file_start(folder_id, file_size, title, content_type)查找。响应结果包含可分享链接。contents() - 立即向用户提供链接 - 在上传任何字节之前就分享链接。用户可立即打开链接,实时查看上传和处理进度。绝不要等到“准备就绪”后再分享链接。
- 使用工具中给出的精确curl命令上传字节(这是一个预签名PUT请求——必须包含Content-Type请求头)。
next_step - 完成上传 - 调用。视频可立即通过预览播放功能观看。无需轮询
upload_file_complete(asset_id);没有需要等待的内容。asset_status - 等待反馈 - 调用。该操作最多阻塞约45秒,一旦有新反馈提交就会立即返回。在用户审核期间循环调用此方法,每次传入返回的
wait_for_feedback(asset_id)参数。next_since - 正确解读反馈:
- 是评论的原文文本;
content是视频中的秒数位置。timestamp - 录制类反馈包含(审核者针对该片段的发言内容)和
recording.transcript。请将转录文本视为正式反馈内容。recording.ai_summary - 当转录文本中提及视觉内容(如“这个”“这里”“那个按钮”“移到那里”,或是描述了绘制的箭头/圆圈)时,调用。该方法会返回审核者指向的实际帧,且已渲染好他们的绘图,同时转录文本会标记
get_annotated_frames(element_id),以便你准确理解每个引用的含义。这是解决歧义引用的可靠方式——优先使用此方法,而非仅凭文字猜测。[FRAME N] - (本地全分辨率 fallback方案,无绘图叠加:自行使用提取帧并查看图片。)
ffmpeg -ss <timestamp> -i <file> -frames:v 1 /tmp/frame.png
- 实施修改,重新渲染,并将修订版本作为同一资产的新版本上传:在和
upload_file_start中传入upload_file_complete参数。绝不要为修订版本创建单独的资产。version_of: "<asset_id>" - 分享- 该链接会永久显示最新版本,因此用户全程只需使用一个链接即可。
version_stack_url - 返回步骤5。重复操作直到用户表示完成。
Rules
规则
- The share link exists from step 1. Surfacing it early is the whole point.
- Quote feedback verbatim when reporting it to the user; include each item's .
url - One asset per deliverable, versions for iterations, for sharing.
version_stack_url - Uploads cap at 5GB. Requires edit access on the folder and a paid/trialing Flask team - if the server returns a subscription or entitlement error, relay it to the user verbatim.
- 分享链接在步骤1时就已存在。提前展示链接是核心要点。
- 向用户反馈时,需逐字引用反馈内容;同时包含每条反馈的。
url - 每个交付物对应一个资产,迭代内容作为版本,使用进行分享。
version_stack_url - 上传文件大小上限为5GB。需要拥有文件夹的编辑权限,且所属Flask团队为付费版或试用版——若服务器返回订阅或权限错误,请直接将错误信息原样转达给用户。