隐私政策
我们拿到你什么,又拿它做什么
这一页不讲原则,讲事实:哪个字段进了数据库、哪段文字出了我们的服务器、存在哪台机器上、多久之后消失、你按下删除之后到底删掉了什么。
1这份文件管哪些地方#
| 地址 | 说明 | |
|---|---|---|
| 营销站 | octoryn.studio | 你正在看的这个站。托管在 Cloudflare Pages |
| 工作台 | studio.octoryn.app | 登录之后干活的地方。托管在 AWS 悉尼区 |
| 移动端 | iOS / Android 应用 | 同一套账号与同一个后端 |
| 分享页 | 工作台域名下的 /s/ 链接 | 唯一一个不需要登录的入口 |
文中的「我们」指 Octoryn Studio 这个产品及其运营方,「你」指注册账号的人。团队协作时,项目、成片、用量这些业务数据属于团队(租户),不属于个人账号 —— 你被移出团队之后,你在那个团队里做的项目仍然留在团队里。
运营方是 OCTOPUS CORE PTY LTD,澳大利亚公司编号(ACN)696 931 236,澳大利亚商业编号(ABN)28 696 931 236,依《2001 年公司法》在新南威尔士州注册的股份有限私人公司,注册日期 2026 年 4 月 8 日。
注册办公地址不在本页展示。它和上面这些编号一样登记在澳大利亚证券和投资委员会(ASIC)的公开登记簿上,凭 ACN 或 ABN 即可查到。
2我们收了哪些数据#
下面这张表是完整的。它不是「包括但不限于」—— 它就是数据库里所有跟你有关的表,一张不落。
账号
| 数据 | 从哪来 | 为什么要 |
|---|---|---|
| 邮箱 | 你注册时填的 | 登录凭据、找回密码、账单收据、团队邀请 |
| 显示名 | 你填的;不填就取邮箱 @ 前面那一段 | 界面上称呼你,以及团队成员列表 |
| 密码的哈希 | 由你的密码算出来 | 验证登录。我们没有存你的密码本身,见第 4 节 |
| 注册时间、上次登录时间、邮箱验证时间 | 系统记的 | 账号状态与安全排查 |
| 会话记录 | 你每次登录时生成 | 让你保持登录,以及让你能随时把某次登录踢下线 |
| API 密钥 | 你自己创建的 | 程序化访问。只存哈希与前 8 位,见第 4 节 |
| 推送 token | 你在移动端开启通知时 | 出片了给你发一条通知。你删掉设备记录就没了 |
| 团队与角色 | 创建团队或被邀请时 | 决定你能看到、能改哪些东西 |
你做的东西
| 数据 | 具体是什么 |
|---|---|
| 项目 | 标题、你写的那句创意原文、形态、画幅、语言、题材,以及产线生成的一句话梗概、故事梗概、段落结构、风格设定 |
| 你上传的音乐 | 音频文件本身,以及文件的原始文件名、时长、类型 |
| 分集 | 标题、摘要、完整剧本(场次、场景标题、动作描述、每一句台词和说话人) |
| 镜头 | 画面描述、运镜、台词、说话人、时长 |
| 物料 | 人物/场景/道具的名称与设定文字 |
| 成片 | 标题、时长、分享状态、分享链接的令牌、观看次数(只是一个计数器) |
| 媒体文件本身 | 镜头视频、配音音频、参考图、海报、字幕、成片 MP4,以及你上传的音乐 |
| 工序记录 | 每一道工序的输入参数、结果摘要、日志和失败原因 |
用量与账单
| 数据 | 具体是什么 |
|---|---|
| 用量记录 | 哪家厂商、哪个模型、多少秒或多少字、耗时多久、成功还是失败、从哪一家兜底过来的。不含你写的任何文字 |
| 积分流水 | 每一笔增减、变动原因、变动后的余额 |
| 订阅状态 | Stripe 的客户号与订阅号、订阅状态、当前周期结束时间 |
| Stripe 事件去重表 | 只有 Stripe 的事件 id 和事件类型,不含任何账单内容 |
你主动给的反馈
在成片或镜头上点赞/点踩时,我们记下评价、可选的原因,以及你填的那段自由文字。这条记录不记录是谁填的 —— 它挂在团队和项目上,不挂在你的账号上。
3我们没有收的#
这一节和上一节一样重要。以下这些东西,后端代码里根本不存在对应的字段或调用:
- IP 地址。我们不记录、不入库、不留访问日志。
- 浏览器 User-Agent、设备指纹、屏幕分辨率这类识别信息。
- 任何第三方分析或埋点。没有 Google Analytics、没有 Plausible、没有 PostHog、没有 Sentry、没有任何 SDK。营销站、工作台、移动端都没有。
- 用来跟踪你的 cookie。营销站一个 cookie 都不设;工作台只设一个登录用的,见 Cookie 与本地存储说明那一页。
- 用量记录里不含你写的文字。它记的是「视频、xAI、7.5 秒、成功、耗时 42 秒」,不记「这 7.5 秒的画面描述是什么」。
- 分享页的访客身份。观看次数是一个整数在加一,没有任何一条按访客记的记录。
服务器端也没有留访问日志
AWS 那边没有开启 CloudFront、负载均衡器或 S3 的访问日志,也没有开 CloudTrail 和 VPC 流日志。这既是事实,也是一条限制:我们没有一份完整的访问审计记录可以在出事时回溯。应用自己的运行日志见第 7 节。
上面这些不是承诺永远不做,而是描述现在的实现。如果哪天真的加了分析工具,这一页会先改,见第 14 节。
4密码、令牌和密钥是怎么存的#
这一节写得比一般隐私政策细,是故意的。「我们重视您的安全」这种话没有信息量,参数才有。
| 东西 | 怎么存的 | 多久失效 |
|---|---|---|
| 密码 | 从不以明文或可还原的形式保存。 用 scrypt 派生(N=16384、r=8、p=1、32 字节密钥、每个账号一个 16 字节随机盐)。scrypt 是内存困难的算法,批量爆破的成本比 MD5/SHA 这类高好几个数量级 | 不失效,直到你改密码 |
| 登录会话 | 生成一个 256 位随机串给你,数据库里只存它的 SHA-256。会话是服务端记录,不是自包含的 JWT —— 所以「立刻踢下线」是真的能立刻生效 | 30 天;每次使用会顺延。改密码会一次性删掉你所有的会话 |
| API 密钥 | 创建时给你看一次,之后只存 SHA-256 和开头 8 位(用于在列表里认出是哪一把)。丢了只能重发,我们也变不出来 | 不失效,直到你吊销 |
| 邮箱验证链接 | 同样只存哈希 | 24 小时 |
| 重置密码链接 | 同样只存哈希 | 1 小时 |
| 团队邀请链接 | 同样只存哈希 | 7 天;重新邀请同一个地址会作废之前那封 |
会话记录里不含 IP 和 User-Agent。代价是诚实的:我们没法给你看一份「最近登录的设备与地点」清单,因为我们本来就没记。
邀请里会存被邀请人的邮箱
你邀请同事进团队时,那个邮箱会存进邀请表 —— 哪怕对方从来没注册过。邀请到期或被作废之后这条记录仍然留着(它是一次性令牌表的一行)。如果这对你是个问题,邀请前先问过对方。
5你的创意会被发到哪里去#
这是整份文件里最需要看清楚的一节。我们不自己训练模型,也不自己跑推理 —— 画面、语音和剧作文本都来自外部厂商。这意味着你写的东西会离开我们的服务器。
只有配了凭据的厂商才会收到东西
这不是一句政策表态,是代码结构决定的:每一家厂商在能力目录里都挂着一个「有没有凭据」的判断,没配凭据的家在挑选阶段就被过滤掉;就算绕过挑选,它的构造函数也会因为缺密钥直接报错。没有配置的厂商在物理上收不到任何东西。
配了之后,谁会收到什么
| 厂商 | 用来做什么 | 会收到你的什么 |
|---|---|---|
| Octoryn 自己的 AI 路由服务(api.octoryn.dev) | 剧作:大纲、分集、剧本、物料、分镜 | 你写的那句创意原文、项目标题、语言、画幅、题材、目标时长、叙事结构,以及上游工序产出的大纲、分集摘要、完整剧本。不含你的邮箱、账号 id 或团队 id。路由服务再按配置转发给某个文本模型 |
| xAI(Grok Imagine) | 画面生成、参考图 | 单个镜头的画面描述;参考图以 base64 内嵌在请求里(最多 3 张) |
| 阿里云(通义万相、Qwen-TTS) | 画面生成、对口型、配音 | 镜头画面描述或台词文字;参考图与音频以可公开访问的链接形式提供,由厂商回来抓取 |
| Google(Veo 3.1,Gemini API) | 画面生成 | 镜头画面描述;首帧、尾帧与参考图以 base64 内嵌 |
| 字节跳动 · 火山引擎(Seedance、Seedream、豆包语音) | 画面生成、配音 | 镜头画面描述或台词文字;参考图以链接形式提供 |
| MiniMax(海螺、Speech) | 画面生成、配音 | 镜头画面描述或台词文字;首帧参考图以链接形式提供 |
| OpenAI(或任何 OpenAI 兼容的语音端点) | 配音 | 要念出来的那段台词或旁白文字 |
| Stripe | 订阅与付款 | 你的邮箱、团队名称、团队 id 与标识串。见第 6 节 |
| Expo 推送服务 | 移动端通知 | 你的推送 token,以及通知内容 —— 通知标题里含项目标题,失败通知里含截断后的错误信息 |
两个例外要说明:Stripe 只有配了密钥才会被调用,和上面那些一样;**但推送服务不是靠凭据开关的** —— 只要你在移动端注册过设备并开启了通知,出片或失败时就会给它发一条。不想要,把设备记录删掉即可。
一个镜头可能被发给不止一家
产线是按镜头挑厂商并按镜头兜底的:某一家失败或拒绝之后,同一个镜头的画面描述会被送到下一家再试。所以「这段文字去过哪里」的答案,可能不止一个名字。每一次尝试(含失败的)都会在用量记录里留一行。
草稿档不发给任何人
草稿质量档强制走内置实现:画面是本机用 Pillow 和 ffmpeg 画出来的概念板,配音在没有配语音厂商时走本机合成或静音音轨。改分镜的那几轮不会把任何东西发出去。 文本能力在没有配置路由服务时也走内置的模板实现,同样不出网。
数据会出境
上面这些厂商的端点分布在不同国家和地区 —— 其中阿里云、火山引擎的部分端点在中国大陆境内,xAI、Google、OpenAI、Stripe 的端点在美国,我们自己的服务器在澳大利亚。这意味着你的内容会跨境传输,而且经过的司法辖区取决于当时启用了哪几家。
我们如实告诉你数据去了哪里。我们不对这件事下合规结论 —— 具体到你所在地的法律要求什么、你的用途是否需要额外手续,见第 13 节。
厂商拿到之后怎么处理,由它们的条款决定
我们能控制的是「发什么、发给谁、什么时候发」。内容到了厂商那边之后如何留存、是否用于模型改进,取决于各家自己的条款 —— 我们没有和它们签订限制用途的单独协议,也没有拿到「不用于训练」的书面承诺。 如果这一点对你的项目是关键的,在把敏感素材放进来之前先看各家的条款。
6付款#
我们不接触你的卡号。 付款在 Stripe 托管的收银页面上完成,那个页面不是我们的,卡号、有效期、CVC 从来不经过我们的后端 —— 代码里根本没有接收这些字段的地方。修改支付方式和查看发票走 Stripe 的账单门户,同样是 Stripe 的页面。
| 内容 | |
|---|---|
| 我们发给 Stripe 的 | 你的邮箱、团队名称,以及团队 id 与标识串(用来把付款对上账号) |
| 我们从 Stripe 存下来的 | 客户号、订阅号、订阅状态、当前计费周期的结束时间 |
| 我们永远拿不到的 | 卡号、有效期、CVC、账单地址 |
订阅状态由 Stripe 发回的 webhook 驱动。那个端点是验签的:没有配置签名密钥时它直接拒绝处理,签名不对返回错误;并且按事件 id 去重,所以 Stripe 重发同一个事件不会导致重复发放额度。
Stripe 作为支付服务商,会按它自己的隐私政策处理你在它页面上填的信息。
7数据存在哪、存多久#
| 东西 | 存在哪 | 保护 | 保留多久 |
|---|---|---|---|
| 数据库(账号、项目、剧本、用量) | AWS RDS PostgreSQL,ap-southeast-2(澳大利亚悉尼) | 静态加密(AES-256),不对公网开放,只有应用容器能连 | 没有自动清理 —— 一直保留到被删除 |
| 媒体文件(视频、音频、图片、成片) | AWS S3,同一区域;通过 CloudFront 分发 | 静态加密(AES-256);存储桶封禁一切公开访问,只有 CDN 能读 | 90 天后自动删除,见下 |
| 数据库备份 | AWS 自动快照,同一区域 | 随数据库加密 | 7 天 |
| 应用运行日志 | AWS CloudWatch,同一区域 | AWS 账号权限 | 30 天 |
| 营销站 | Cloudflare Pages | 全站静态文件,不含任何用户数据 | — |
媒体文件 90 天后会被自动删除
对象存储上配了一条生命周期规则:媒体文件在写入 90 天后过期删除 —— 包括镜头素材、配音、参考图,也包括你的成片 MP4 和你上传的音乐。数据库里的项目、剧本和分镜不受这条规则影响,会一直留着。也就是说 90 天之后,一个老项目的文字部分还在,但片子已经取不出来了。想长期保存的成片,请自己下载一份。
这 90 天是对象存储上的一条生命周期规则,不是一条保留承诺:我们既没有承诺至少保留 90 天,也没有承诺一定在第 90 天删除。这个值变更时按第 14 节处理。
9删除:按下之后到底删了什么#
这一节最容易写漂亮话。我们写实际发生的事。
| 你删的东西 | 真的被删掉的 | 留下来的 |
|---|---|---|
| 一个项目 | 项目本身,以及它的分集、剧本、镜头、物料、成片记录、工序记录 —— 数据库里全部清掉 | 媒体文件不会被删 —— 视频、配音、参考图、海报、成片 MP4 全部留在对象存储里,直到 90 天的生命周期规则把它们清掉。另外用量记录和你留的反馈也会保留,它们没有跟着项目走 |
| 项目里上传的音乐 | 数据库记录和音频文件都删掉 | — |
| 一个镜头 / 一条物料 / 一支成片 | 数据库记录 | 对应的媒体文件同样留在存储里 |
| 一个设备(推送) | 推送 token 与设备记录 | — |
| 一把 API 密钥 | 密钥记录(立即失效) | — |
| 一个团队成员 / 一封邀请 | 成员关系 / 邀请记录 | 该成员在团队里做过的项目仍属于团队 |
| 退出登录 | 这次会话记录 | 其它设备上的会话不受影响 |
目前没有「注销账号」这个功能
代码里没有删除账号或删除团队的接口 —— 这是实话,不是省略。 想让我们删掉你的账号和数据,现在只能发邮件,由人工处理。
这类请求我们不给出处理时限 —— 承诺一个我们没有能力保证的天数,比不承诺更没有意义。目前同样没有自助导出数据的功能,导出请求走同一条人工通道。
10谁能看到你的东西#
别的用户:看不到
所有业务数据都挂在团队上,接口一律按当前身份所属团队取资源。别的团队的资源在你这里一律返回「不存在」,而不是「无权访问」 —— 后者等于承认那个 id 存在,是一条可以用来枚举别人资源的信道。
你的团队成员:看得到
同一个团队里的成员共享项目、成片和用量。角色分 owner / admin / member,决定谁能改计费和管成员。邀请人进团队等于把团队里已有的内容给他看,邀请前想清楚。
我们自己:能,但受限
运维人员有数据库和对象存储的访问权限 —— 任何自托管的服务都是这样,声称没有是不诚实的。我们用它来排查故障和处理你提出的请求,不用它来浏览你的作品。
这份访问权限目前靠约定而不是靠机制约束:没有分级的内部权限制度,没有访问审批流程,也没有内部访问审计日志。这一条写在这里,是因为「运维能看到」这件事受什么约束,你有权知道。
11我们不拿你的东西训练模型#
我们不训练模型,一个都没有。 我们做的是编排:把外部厂商的能力串成一条能交付的产线。所以「用你的内容训练我们的模型」这件事在我们这里不存在 —— 没有可训的对象。
我们也不把你的内容拿去做别的:不卖、不共享给广告商、不用于除了给你出片和给你结账之外的用途。产线里会产生一份模型评分数据,它用的是用量记录(哪家、多少秒、成功还是失败、耗时多久),不含你写的任何文字。
但外部厂商那边不受我们控制
见第 5 节最后一段:内容发出去之后怎么处理是各家自己的条款说了算,我们没有替你拿到「不用于训练」的承诺。
12未成年人#
这个产品是按面向成年专业创作者设计的。 注册时不询问年龄,产品里也没有面向未成年人的功能或保护措施。各地对「多少岁可以自己同意」的规定不一样(有的 13,有的 14,有的 16),我们没有针对其中任何一部做过适配 —— 这一点和第 13 节说的是同一件事。
13关于法律合规,我们能说和不能说的#
一份隐私政策最容易骗人的地方,是在页脚写一句「我们符合 GDPR」。所以我们把话说清楚:
- 我们不声称符合欧盟《通用数据保护条例》(GDPR)。 我们没有设立数据保护官,没有做数据保护影响评估,没有指定欧盟代表,也没有为跨境传输做过标准合同条款之类的安排。
- 我们不声称符合美国加州的 CCPA/CPRA,也没有做过对应的评估。
- 我们不声称符合中国《个人信息保护法》。 我们没有做过出境安全评估、没有签订标准合同、也没有做过个人信息保护影响评估 —— 而如前所述,数据确实会跨境。
- 我们没有做过任何安全认证(SOC 2、ISO 27001 之类)。
- 我们没有可供签署的数据处理协议(DPA)模板。
我们能做的是把事实摆出来:数据存在澳大利亚、媒体 90 天过期、日志留 30 天、内容会发给上面列出的那些厂商、删除时哪些留下了。你所在地的法律对这些事实作何评价,以及你的用途是否需要额外手续,得由你(或你的法务)判断。 如果你所在的组织需要一份能签的书面文件,现在我们给不了 —— 直说比含糊有用。
14这份文件变更时#
版本号和最后更新日期在页面顶部。实质性变更(新增一类收集的数据、新增一家会收到你内容的厂商、缩短保留期限)会通过邮件通知已注册的用户,并在这里保留变更说明。措辞修正不另行通知。
如果哪天我们加了分析工具或第三方 cookie,这一页和 Cookie 说明会先改,再上线。 顺序反了的话,这两页就成了摆设。
15联系我们#
数据相关的问题、删除或导出请求,发到 [email protected]。请说明你的注册邮箱和具体诉求。