UniEmoji 是统一的 emoji 协议。同一套语义,换成任何一副表情。
UniEmoji is a unified emoji protocol. Same meanings, any face.
当前契约标识为:
uniemoji-core@1
Uni 表示统一的语义,也点 Unicode 这条线。模型或用户给出的是受控 Unicode 表情;显示端按 40 个稳定语义 key,换成当前表情包的图。换一套包,就是换一副脸,语义不变。贴吧、B 站、抖音、QQ、小红书、微博、知乎,以及以后任何画风,都可以成为一副可替换的皮。
本仓库是这份协议和素材的大本营,不是收录站。40 个 key 的含义、相近语义边界和绘制要求以 EMOJI_KEYS.md 为准。
AI 或用户只输出受控 Unicode。Host 再按本契约换成图。key 是机器协议,不翻译、不改名,也不把作品角色名写入 key。表情包只实现 key 与图片,不能自定义 Unicode 映射。
规范映射如下:
😊→happy 😢→sad 😕→confused 👀→watching
😠→angry 😑→speechless 😉→doge 😵💫→overloaded
😐→neutral 😆→laughing 😭→crying 😅→sweating
🤔→thinking 👌→okay 🙂↕️→nodding 😴→sleeping
🥺→hurt 🫣→peeking 👍→approve 🫶→heart
😳→shy 🤩→star-eyes 😂→laugh-cry 🥹→touched
😱→scared 🤦→facepalm 🙄→eye-roll 😮💨→sigh
😫→frustrated 😜→playful 🤭→snickering 😏→sarcastic
😎→cool 🎉→celebrate 💪→cheer 🙏→thanks
🙇→sorry 🤗→hug 🤲→please 👏→applause
Host 另接受两个明确别名:😄→laughing、🙂→happy。它们不新增素材 key。其他 Unicode 保持原样,不根据相似度或上下文猜测情绪,也不自动补图。
40 个稳定 key 是:
happy, sad, confused, watching, angry, speechless, doge, overloaded,
neutral, laughing, crying, sweating, thinking, okay, nodding, sleeping,
hurt, peeking, approve, heart, shy, star-eyes, laugh-cry, touched,
scared, facepalm, eye-roll, sigh, frustrated, playful, snickering,
sarcastic, cool, celebrate, cheer, thanks, sorry, hug, please, applause
以后分发 ZIP 时使用下面的结构。ZIP 可以直接包含这些文件,也可以再包一层同名目录:
my-emoji-pack.zip
├── pack.json
└── images/
├── happy.png
├── sad.png
└── ...其余 38 个标准 key
pack.json 必须同时声明:
{
"schemaVersion": 1,
"keySet": "uniemoji-core@1",
"id": "my-emoji-pack",
"name": "我的表情包",
"version": "1.0.0"
}schemaVersion 描述 ZIP 与 pack.json 的技术格式;keySet 描述图片所实现的语义集合。两者独立演进。当前成品包必须声明 uniemoji-core@1。
每个 key 必须且只能提供一张 images/<key>.png,文件名大小写与上表完全一致。id 使用小写字母、数字和连字符,version 使用 SemVer。uniemoji-core@1 中现有 key 的含义不会被静默改变;若未来发生不兼容的增删或重定义,将发布新的 keySet 主版本。
适配器可以额外限制体积、尺寸、路径和安装位置。那些限制属于 Host 实现,不属于本契约的语义部分。
第一个适配器是 dsh-emoji。本仓库只维护协议和素材,不实现 Host、浏览器插件或跨 Agent 接入。以后任何能把受控 Unicode 换成当前表情包图片的程序,都可以成为适配器。