{
  "catalog_version": "1.1.0",
  "as_of": "2026-08-15",
  "principle": "Observed evidence and inferred hypotheses are stored separately. High fidelity comes from reference assets plus a generate-score-revise loop, not from a single prose caption.",
  "limits": {
    "max_upload_bytes": 268435456,
    "max_duration_seconds": 1200,
    "retention_days": 7,
    "max_link_url_length": 2048,
    "max_link_redirects": 5,
    "max_concurrent_link_imports": 2,
    "link_public_only": true,
    "accepted_mime_types": ["video/mp4", "video/quicktime", "video/webm", "video/x-matroska", "video/mpeg"]
  },
  "link_ingestion": {
    "availability": "available",
    "summary_zh": "支持公开 HTTP(S) 视频直链和经过白名单约束的主流平台公开视频页面。链接只用于私有导入，不提供通用下载代理。",
    "direct_media": {
      "strategy": "pinned_http_v1",
      "formats": ["MP4", "MOV", "M4V", "WebM", "MKV", "MPEG", "AVI"],
      "notes_zh": "逐次校验 DNS 与重定向，固定到已验证的公网 IP，流式计数并在 256 MB 处硬中止，最后仍由 FFprobe 验证视频轨道和时长。"
    },
    "douyin_public_session": {
      "strategy": "isolated_ephemeral_browser_v1",
      "accepted_links": ["canonical_video_page", "search_page_with_numeric_modal_id"],
      "account_login": "never",
      "user_browser_profile": "never",
      "cookie_retention": "request_only",
      "notes_zh": "搜索结果页先把纯数字 modal_id 构造成固定的 /video/{id}；隔离侧车验证公开作品详情并返回短时 CDN 候选。视频字节由主进程经逐跳公网 IP 校验、固定解析、Range 完整性和 256 MB 上限下载；匿名挑战 Cookie 仅在 CDN 路径失效后的 yt-dlp 回退中使用并立即删除。"
    },
    "platform_pages": [
      {"id": "youtube", "name": "YouTube", "domains": ["youtube.com", "youtu.be"]},
      {"id": "vimeo", "name": "Vimeo", "domains": ["vimeo.com"]},
      {"id": "tiktok", "name": "TikTok", "domains": ["tiktok.com"]},
      {"id": "douyin", "name": "抖音", "domains": ["douyin.com", "iesdouyin.com"]},
      {"id": "x", "name": "X / Twitter", "domains": ["x.com", "twitter.com"]},
      {"id": "instagram", "name": "Instagram", "domains": ["instagram.com"]},
      {"id": "facebook", "name": "Facebook", "domains": ["facebook.com", "fb.watch"]},
      {"id": "bilibili", "name": "哔哩哔哩", "domains": ["bilibili.com", "b23.tv"]},
      {"id": "dailymotion", "name": "Dailymotion", "domains": ["dailymotion.com", "dai.ly"]},
      {"id": "twitch", "name": "Twitch", "domains": ["twitch.tv"]},
      {"id": "reddit", "name": "Reddit", "domains": ["reddit.com", "redd.it"]},
      {"id": "streamable", "name": "Streamable", "domains": ["streamable.com"]},
      {"id": "kuaishou", "name": "快手 / Kwai", "domains": ["kuaishou.com", "kwai.com"]},
      {"id": "loom", "name": "Loom", "domains": ["loom.com"]}
    ],
    "extractor_policy": {
      "engine": "yt-dlp",
      "configuration": "ignored",
      "plugins": "disabled",
      "generic_extractor": "disabled",
      "remote_components": "disabled",
      "cookies": "user-supplied and browser-profile cookies disabled; ephemeral anonymous Douyin challenge cookies only",
      "playlists": "disabled",
      "live_streams": "disabled",
      "network_downloader": "yt-dlp native only",
      "safe_egress_proxy": "required"
    },
    "security_controls": [
      "Only http and https URLs without embedded credentials or non-default ports are accepted.",
      "Every direct request, redirect, platform request, media request and HTTPS CONNECT target must resolve only to public IP addresses.",
      "Loopback, RFC1918, carrier-grade NAT, link-local, documentation, multicast, unique-local IPv6 and cloud metadata destinations are denied.",
      "Douyin browser execution is isolated in a read-only, non-root sidecar with no application secrets or data mounts; control uses a mode-0600 Unix socket and all browser egress crosses the same public-IP validator.",
      "Only numeric Douyin video identifiers are accepted by the sidecar; images, fonts and media are blocked during the short challenge bootstrap, and cookies are never logged or persisted.",
      "The browser never downloads the source video; signed CDN candidates are treated as untrusted URLs and revalidated by the main process before a complete byte-range download.",
      "Source bytes are stored in the same organization-private retention bucket as uploaded files; query strings and fragments are never persisted.",
      "The downloaded file is size-capped and independently probed before a reverse-analysis job is created."
    ],
    "limitations_zh": [
      "仅处理无需登录即可访问的公开视频；不支持私密内容、用户 Cookie 导入、账号浏览器资料、会员内容、DRM、直播或播放列表。",
      "平台页面结构会变化；目录中的平台表示已接入提取路径，不承诺每条链接永久可用。",
      "用户仍须拥有下载、处理和复刻素材的权利，并遵守来源平台条款。"
    ],
    "sources": [
      "https://github.com/yt-dlp/yt-dlp/blob/master/README.md",
      "https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md",
      "https://pkgs.alpinelinux.org/package/v3.23/community/x86_64/yt-dlp",
      "https://playwright.dev/docs/docker",
      "https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-proxy"
    ]
  },
  "profiles": [
    {
      "id": "frame_ensemble_v1",
      "name_zh": "平衡反推",
      "availability": "available",
      "default": true,
      "summary_zh": "FFprobe + 场景边界 + 关键帧 + 音频资产 + 多图 VLM 融合；当前生产默认。",
      "observes": ["technical_metadata", "shot_boundaries", "keyframes", "visible_subjects", "scene", "action_samples", "camera_language", "lighting", "palette", "composition", "visible_text", "audio_presence"],
      "cannot_directly_observe": ["original_seed", "original_checkpoint", "hidden_negative_prompt", "exact_lens_metadata", "dialogue_without_transcriber"],
      "recommended_for": ["short_form", "ads", "product_video", "social_video", "storyboard_reconstruction"]
    },
    {
      "id": "metadata_only_v1",
      "name_zh": "仅证据提取",
      "availability": "available",
      "summary_zh": "不调用视觉大模型；只输出容器、编码、画幅、帧率、场景边界、关键帧和可复现资产包。",
      "observes": ["technical_metadata", "shot_boundaries", "keyframes", "audio_presence"],
      "cannot_directly_observe": ["semantic_prompt", "original_seed", "original_checkpoint"],
      "recommended_for": ["privacy_sensitive", "provider_outage", "manual_analysis"]
    },
    {
      "id": "openai_frame_worker",
      "name_zh": "OpenAI 多帧分析",
      "availability": "provider_configuration_required",
      "summary_zh": "OpenAI 最新 GPT API 支持图像输入但不支持原生视频输入；适配器必须发送抽取后的关键帧、时间戳与独立转写，不能直接上传视频冒充原生理解。",
      "observes": ["frame_semantics", "composition", "visible_text", "structured_shot_description"],
      "sources": ["https://developers.openai.com/api/docs/models/gpt-5.5"]
    },
    {
      "id": "anthropic_frame_worker",
      "name_zh": "Claude 多帧分析",
      "availability": "provider_configuration_required",
      "summary_zh": "Claude API 采用图像 content blocks；动画只使用第一帧，因此视频必须先做分镜和多帧采样，再连同时间轴送入模型。",
      "observes": ["frame_semantics", "composition", "visible_text", "cross_frame_reasoning"],
      "sources": ["https://platform.claude.com/docs/en/build-with-claude/vision"]
    },
    {
      "id": "gemini_native_video",
      "name_zh": "Gemini 原生视频增强",
      "availability": "provider_configuration_required",
      "summary_zh": "上传完整视频给原生视频理解模型，并与高帧率关键帧分析交叉校验。默认约 1 FPS 的模型采样不足以覆盖快切，因此不能单独使用。",
      "observes": ["visual_semantics", "audio_semantics", "timestamped_events", "dialogue_summary"],
      "sources": ["https://ai.google.dev/gemini-api/docs/video-understanding"]
    },
    {
      "id": "qwen3_vl_open_worker",
      "name_zh": "Qwen3-VL 开放权重工作器",
      "availability": "external_gpu_worker_required",
      "summary_zh": "组织私有 GPU 工作器上的开放权重视频理解与帧级结构化抽取。",
      "observes": ["visual_semantics", "video_dynamics", "spatial_reasoning", "timestamped_events"],
      "sources": ["https://github.com/QwenLM/Qwen3-VL"]
    },
    {
      "id": "internvideo_next_open_worker",
      "name_zh": "InternVideo-Next 开放工作器",
      "availability": "external_gpu_worker_required",
      "summary_zh": "面向长视频、多模态上下文与世界理解的视频基础模型；用于检索、时序定位和长程语义交叉验证。",
      "observes": ["long_video_context", "temporal_localization", "video_retrieval", "action_semantics"],
      "sources": ["https://github.com/OpenGVLab/InternVideo"]
    },
    {
      "id": "nvidia_cosmos3_reasoner_worker",
      "name_zh": "NVIDIA Cosmos 3 Reasoner",
      "availability": "external_gpu_worker_required",
      "summary_zh": "开放世界模型推理工作器，支持视频 caption、时序定位、物理合理性、情境理解与下一动作预测；通过 OpenAI-compatible vLLM 接入。",
      "observes": ["temporal_localization", "physical_plausibility", "situation_understanding", "likely_next_action", "video_caption"],
      "sources": ["https://github.com/NVIDIA/cosmos"]
    },
    {
      "id": "forensic_hybrid_v1",
      "name_zh": "取证级高还原",
      "availability": "external_gpu_worker_required",
      "summary_zh": "多模型集成：SAM 2 对象 mask、CoTracker 轨迹、VGGT 相机/深度、OCR、Whisper、说话人分离及 VBench/感知相似度闭环。",
      "observes": ["object_masks", "dense_tracks", "camera_pose", "depth", "ocr", "word_timestamps", "speaker_turns", "sound_events", "perceptual_similarity"],
      "sources": [
        "https://github.com/facebookresearch/sam2",
        "https://github.com/facebookresearch/co-tracker",
        "https://github.com/facebookresearch/vggt",
        "https://github.com/openai/whisper",
        "https://github.com/pyannote/pyannote-audio",
        "https://github.com/Vchitect/VBench"
      ]
    }
  ],
  "stages": [
    {"id": "ingest", "name_zh": "私有入库", "outputs": ["upload_or_url", "sha256", "redacted_locator", "rights_record", "source_artifact"]},
    {"id": "probe", "name_zh": "技术探测", "outputs": ["codec", "duration", "resolution", "fps", "audio_stream"]},
    {"id": "segment", "name_zh": "时序拆分", "outputs": ["shot_boundaries", "uniform_samples", "keyframes"]},
    {"id": "perceive", "name_zh": "多模态观察", "outputs": ["subjects", "scene", "actions", "camera", "lighting", "style", "audio"]},
    {"id": "infer", "name_zh": "逆向制作规格", "outputs": ["observations", "hypotheses", "confidence", "alternatives"]},
    {"id": "compile", "name_zh": "目标模型编译", "outputs": ["prompt", "negative_prompt", "parameters", "reference_map"]},
    {"id": "reconstruct", "name_zh": "候选重建", "outputs": ["candidate_render", "render_provenance"]},
    {"id": "score", "name_zh": "多维比对", "outputs": ["semantic", "identity", "layout", "motion", "camera", "color", "audio", "ocr"]},
    {"id": "revise", "name_zh": "受控迭代", "outputs": ["single_variable_delta", "next_prompt_version"]}
  ],
  "fidelity_tiers": [
    {"id": "text_only", "ceiling": "medium", "requires": ["compiled_prompt"], "note_zh": "只能复刻语义与风格方向，无法保证身份、构图和运动轨迹。"},
    {"id": "prompt_plus_frames", "ceiling": "high", "requires": ["compiled_prompt", "identity_keyframes", "style_keyframes"], "note_zh": "适合支持 I2V/首尾帧/多参考的模型。"},
    {"id": "prompt_plus_motion_reference", "ceiling": "very_high", "requires": ["compiled_prompt", "source_motion_clip", "keyframes", "audio_reference"], "note_zh": "优先选择 V2V、动作迁移或 Video-As-Prompt 类模型。"},
    {"id": "model_specific_inversion", "ceiling": "highest_when_available", "requires": ["known_model_family", "compatible_checkpoint", "latent_or_edit_pipeline"], "note_zh": "只有模型家族已知且支持反演/编辑时才可能逼近像素级重建。"}
  ],
  "truth_policy": [
    "Never claim to recover the original prompt, seed, checkpoint, LoRA, or hidden enhancer unless supplied by provenance.",
    "Every inferred field carries confidence and evidence timestamps or frame references.",
    "Identity recognition is disabled; people are described without identifying them unless the user supplies authorized identity metadata.",
    "Source audio and reference frames remain private organization artifacts and are never placed in the public catalog.",
    "Remote links must be publicly reachable without credentials; query strings and fragments are discarded from stored provenance.",
    "The system does not bypass DRM, private access controls, platform authentication, or creator permissions."
  ]
}
