博客 / 对比
用户名与用户 ID:为什么社交账号名会变,而 ID 不会
每个社交账号都有两个身份。用户名是人们输入、标记、放进 URL 里的公开账号名。用户 ID 是平台在账号创建时分配的内部数字或字符串。大多数人只看得到账号名,所以大多数电子表格和 CRM 存的也是账号名。这在创作者改名之前都没问题,一旦改名,那一行记录就会悄无声息地指向空处,或者指向另一个人。本指南在各主要平台上对比这两者,并介绍如何存储创作者信息,让改名不会破坏你的数据。
简短回答
用户名是给人看的,通常可以由账号主人修改。用户 ID 是给机器用的,会伴随账号的整个生命周期。如果你下个月还需要认出同一个账号,就存 ID。账号名也要保留,因为它是你展示给别人看、用来搜索的东西,但要把它当作一个可能过时的标签。
| 用户名(账号名) | 用户 ID | |
|---|---|---|
| 是什么 | 主页 URL 中的公开名称,例如 @sophiemiller | 平台在注册时分配的数字或字符串 |
| 由谁选定 | 账号主人 | 平台 |
| 能否更改 | 能,在各平台的限制范围内 | 不能,它始终属于该账号 |
| 能否被重复使用 | 能,被释放的账号名可能被别人注册 | 不能,它永远不会分配给其他账号 |
| 在哪里能看到 | 主页、URL、提及、标记 | API、导出数据、部分 URL、网页源代码 |
| 适合用于 | 展示、搜索、外联 | 数据库主键、去重、长期追踪 |
各平台如何处理
各平台的规则不同,而且会变。下面的限制来自撰写本文时各平台的帮助页面。在构建任何依赖确切数字的功能之前,先查看对应的链接页面。
| 平台 | 账号名和 URL | 稳定 ID | 账号名多久能改一次 |
|---|---|---|---|
| YouTube | youtube.com/@handle,较早的频道还有旧版 /c/name 和 /user/name URL | 以 UC 开头的频道 ID,见于 youtube.com/channel/UC... | 14 天内可改两次,见 YouTube 帮助 |
| X | x.com/screen_name | 数字用户 ID,API 以字符串形式返回 | 可在设置中更改;X 的开发者文档称用户名(screen name)唯一,但可能变化 |
| TikTok | tiktok.com/@username | 内部用户 ID;官方 API 返回按应用区分的 ID | 每 30 天一次,见 TikTok 支持 |
instagram.com/username | 数字账号 ID,通过 Meta 面向专业账号的 API 提供 | 可在“编辑主页”中更改;应用会显示改过几次 | |
个人主页和公共主页都用 facebook.com/username | 数字个人主页 ID 或公共主页 ID | 可以更改;Facebook 提醒你可能无法拿回旧用户名 | |
linkedin.com/in/custom-url | 内部会员 ID,不在主页上显示 | 六个月内最多五次,见 LinkedIn 帮助 |
YouTube:账号名、频道 ID 和旧版 URL
YouTube 的标识符最多。频道 ID 是 youtube.com/channel/UC... 中以 UC 开头的字符串,YouTube 将其描述为频道 URL 中的唯一标识符。账号名(handle)是 @name 形式,YouTube 的账号名概述指出,账号名会自动成为频道的 URL。较早的频道可能还有 youtube.com/c/Name 这样的自定义 URL,现在已无法创建或更改,以及 youtube.com/user/Name 这样的旧版用户名 URL,也无法更改。根据 YouTube 的频道 URL 页面,这些旧版 URL 仍然有效,并会重定向到账号名 URL。
要找到频道 ID,打开频道,查看其简介面板,用分享选项复制频道 ID,或者找 /channel/UC... 形式的 URL。在所有形式中,只有频道 ID 保证不会变。
X:用户名和数字 ID
在 X 上,人们看到的是 @screen_name,而每个账号还有一个数字 ID。X 的开发者文档明确指出,ID 永远不变,而用户名可以变,并建议使用 ID 的字符串形式,因为这个数字对某些编程语言来说可能太大。API 可以按用户名查询账号,所以你可以一次性把账号名转换为 ID 并保存结果。
TikTok:用户名和按应用区分的 ID
TikTok 用户名出现在 tiktok.com/@username 中,根据 TikTok 支持页面,每 30 天可以更改一次。更改后主页链接也会随之改变。显示名称是另一回事,并不是账号名。如果你通过创作者登录使用 TikTok 的官方 API,要注意:根据 TikTok 的开发者文档,它返回的 open_id 只在你的应用内唯一,而 union_id 在同一开发者的多个应用之间保持不变。在你自己的系统中做记录时,这两者都比用户名更稳定。
Instagram、Facebook 和 LinkedIn
Instagram 用户名位于 instagram.com/username 的末尾,可以在“编辑主页”中更改。Instagram 的关于此账号页面会显示账号的用户名改过几次,但不会显示旧名字。在账号名背后,每个账号都有一个数字 ID,Meta 的 API 对商家账号和创作者账号使用这个 ID。Facebook 的个人主页和公共主页既有 URL 中的用户名,也有数字 ID,Facebook 的帮助页面提醒,用户名一旦更改,你可能无法再拿回来。在 LinkedIn 上,linkedin.com/in/... 中的自定义部分六个月内最多可改五次,除非会员主动解除关联,之前的 URL 会在六个月内继续指向该会员。
为什么数据库应该以 ID 作为主键
主键只有一个任务:永远指向同一个东西。账号名在三个方面过不了这一关。
- 它们会变。创作者会更换品牌形象、去掉数字、加个词,或者改用真名。你的记录里却还是旧账号名。
- 它们会被重复使用。账号名一旦被释放,别人就可以注册。你的记录现在指向一个陌生人,而且看起来一切正常。
- 格式不统一。
@Sophie.Miller、sophie.miller、完整 URL 以及带追踪参数的 URL,可能都指同一个账号。ID 只有一种形式。
一个实用的数据结构是每个账号一行,以平台加平台 ID 作为唯一键,账号名、显示名称和主页 URL 作为需要定期刷新的普通字段。加一个 handle_checked_at 日期,让你知道账号名有多新,再建一张历史表保存过去的账号名,这样旧的提及、合同和报告仍然能匹配上。
| 字段 | 示例 | 作用 |
|---|---|---|
| platform | youtube | 唯一键的一部分 |
| platform_id | UCxxxxxxxxxxxxxxxxxxxxxx | 唯一键的一部分;永不修改 |
| handle | @sophiemiller | 用于展示和搜索;定期刷新 |
| profile_url | https://www.youtube.com/@sophiemiller | 由账号名或 ID 生成 |
| handle_checked_at | 2026-10-23 | 账号名最近一次确认的时间 |
| creator_id | 你自己的内部 ID | 把同一个人在各平台上的账号归到一起 |
如果你目前只有账号名,仍然可以把它们规范化,让重复项更容易被发现。下面这样的表格公式会把账号名转为小写,并去掉 @ 和空格。它解决不了改名问题,但能避免同一个账号出现两次。
=LOWER(TRIM(SUBSTITUTE(A2, "@", "")))创作者更改账号名时会出什么问题
账号名一变,所有基于旧账号名搭建的东西都面临风险。以下是团队事后常发现的问题:
- 失效的主页链接,出现在你的 CRM、需求简报和报告中。有些平台会在一段时间内重定向,很多平台不会。
- 完全指向错误的账号,如果有人注册了被释放的账号名。外联、付款或报告就可能发给错误的人。
- 追踪中断。按旧
@handle过滤的社媒监听、提及提醒和话题标签报告,将无法匹配新帖子。 - 重复记录。有人用新账号名再次添加了这位创作者,他们的历史记录现在被拆分到两条记录里。
- 合同含义不清。只列出账号名的协议,可能已经无法清楚地描述合作所涉及的账号。
如何找回改名后的账号
如果你保存了 ID,找回只需查询一次。如果你只保存了账号名,就按以下步骤操作。
- Step 1如果有 ID,就按 ID 查询账号
使用平台自己的 API,或者接受 ID 的 URL,例如
youtube.com/channel/UC...。改名后 ID 仍然有效,并能给出当前的账号名。 - Step 2试试旧 URL
打开保存的链接。YouTube 旧版 URL 和最近更改的账号名可能会重定向,在某些平台上,旧账号名在更改后会被保留一小段时间。如果页面现在显示的是不同的内容,就假定账号名已被别人使用。
- Step 3顺着创作者的其他账号找
打开一个你确定仍然正确的平台,查看简介、主页链接页(link-in-bio)或个人网站上的链接。在一个平台上改名的创作者,通常会更新其他平台上指向它的链接。
- Step 4搜索名字和内容
搜索显示名称、最近一条视频的标题,或者简介中的一句独特表述。通过相同的面孔、内容和发帖历史,以及指回某个已知账号的链接来确认匹配。
- Step 5保存 ID 并记录旧账号名
确认之后,保存平台 ID,更新账号名,并把旧账号名移到历史表中,这样之前的记录仍然能匹配上。
对于单个 YouTube 频道,你可以用 YouTube Data API 的 channels.list 方法把账号名转换为频道 ID。该方法接受 forHandle 参数(旧版用户名用 forUsername),每次调用消耗一个配额单位。
// Resolve a YouTube handle to its stable channel ID.
const handle = "@sophiemiller";
const url = new URL("https://www.googleapis.com/youtube/v3/channels");
url.searchParams.set("part", "id,snippet");
url.searchParams.set("forHandle", handle);
url.searchParams.set("key", process.env.YOUTUBE_API_KEY);
const res = await fetch(url);
const data = await res.json();
const channel = data.items?.[0];
console.log(channel ? channel.id : "No channel for that handle"); // UC...什么时候用哪一个
两者你都需要,只是用途不同。一条简单的规则:用 ID 识别,用账号名沟通。
| 任务 | 使用 | 原因 |
|---|---|---|
| 数据库或 CRM 的主键 | 用户 ID | 它永远不会改变,也不会被重复使用 |
| 给创作者名单去重 | 先用用户 ID,再用规范化后的账号名 | ID 能识别改名;规范化的账号名能识别格式差异 |
| 给人看的需求简报、邮件和报告 | 账号名和主页 URL | 人们认得账号名,不认得数字 |
| 合同 | 账号名、URL 和 ID | 即使改名后也能描述清楚是哪个账号 |
| 社媒监听和提及提醒 | 账号名,定期刷新 | 提及使用的是当前账号名 |
| 追踪几个月的增长 | 用户 ID | 保持一条连续的历史记录 |
如果你手动收集创作者,最重要的习惯是在添加某人的那一刻就记下 ID,因为那时你最确定这是正确的账号。事后再补,既慢又没那么可靠。
保持跨平台记录的时效性
ID 解决了单个平台内的改名问题,但一位创作者通常在多个平台上有多个账号。把它们归到同一个内部创作者 ID 下,并定期重新核查账号名,才能让创作者数据库保持有用。如果你从一个主页链接出发,需要找到该创作者的其他账号,sociallinks.dev 可以帮你找到,并通过 API 返回匹配结果,然后你就可以按各平台的 ID 保存下来。
常见问题
用户名和用户 ID 有什么区别?
用户名是账号主人选定的公开账号名,通常可以更改。用户 ID 是平台在账号创建时分配的标识符,会伴随账号的整个生命周期,改名之后也不变。
YouTube 频道 ID 会变吗?
不会。频道 ID,也就是 youtube.com/channel/UC... 中以 UC 开头的字符串,是频道的唯一标识符。账号名和显示名称可以更改,旧版自定义 URL 会重定向,但频道 ID 保持不变。
TikTok 用户名多久能改一次?
TikTok 支持页面表示,用户名每 30 天可以更改一次。更改后主页链接也会改变,所以保存的指向旧用户名的链接可能会失效。
别人能注册创作者用过的旧账号名吗?
能。在大多数平台上,被释放的账号名最终都可能被其他账号注册。有些平台会先保留一小段时间。这就是为什么存在 CRM 里的账号名最后可能指向另一个人。
如何通过用户名找到 X 用户 ID?
使用 X API 的按用户名查询用户功能,它会返回账号的数字 ID。按照 X 开发者文档的建议,保存 ID 的字符串形式,因为这个数字对某些编程语言来说可能太大。
如果有了 ID,还需要保存账号名吗?
需要。账号名是人们认得的东西,也是外联和搜索时需要的。把它们作为可刷新的字段保存,并记录最近核查日期,同时把旧账号名保存在历史记录里,这样之前的记录仍然能匹配上。