Install
openclaw skills install @thcjp/emoji-toolkit-freeopenclaw skills install @thcjp/emoji-toolkit-free在表情符号中隐藏消息。Unicode变体选择器让隐秘通信成为可能。
有些信息需要在公开渠道传递但不希望被一眼看到。表情符号工具箱利用Unicode变体选择器(Variation Selectors, VS1-VS256)技术,将文本编码到表情符号内部。聊天应用只显示表情符号本身,但隐藏的变体选择器字符被完整保留,接收方可以解码出原始文本.
┌──────────────────────────────────────────────────┐
│ 隐藏消息编码原理 │
├──────────────────────────────────────────────────┤
│ │
│ 表面层:接收方看到的表情符号 │
│ 🥜 │
│ │
│ 隐藏层:实际携带的变体选择器序列 │
│ 🥜 + VS1VS2VS3...VS256 │
│ (每个VS对应一个字节) │
│ │
│ 编码过程: │
│ 文本 → UTF-8字节 → 变体选择器映射 → 表情符号 │
│ │
│ 解码过程: │
│ 表情符号 → 提取变体选择器 → 字节还原 → 文本 │
│ │
└──────────────────────────────────────────────────┘
# 解码隐藏在表情符号中的消息
node (请参考skill目录中的脚本文件) decode "<粘贴含隐藏消息的文本>"
# ...
# 编码隐藏消息到表情符号中
node (请参考skill目录中的脚本文件) encode "🥜" "你好,这是隐藏消息"
# ...
# 解码并显示元数据
node (请参考skill目录中的脚本文件) decode "<粘贴消息>" --metadata
# ...
# JSON格式输出(便于程序化处理)
node (请参考skill目录中的脚本文件) decode "<粘贴消息>" --metadata --json
将以下内容作为编解码请求的标准格式:
## 快速开始
1. 确认运行环境满足依赖说明中的要求
2. 在AI Agent对话中调用本技能,提供必要的输入参数
3. 检查输出结果,根据需要进行后续处理
> 详细的输入输出格式请参考下方章节说明。
## 表情符号编解码请求
# ...
### 操作类型
- [ ] 编码:将文本隐藏到表情符号中
- [ ] 解码:从表情符号中提取隐藏文本
- [ ] 元数据解析:解析代币元数据
# ...
### 输入信息
- 载体表情符号:[如 🥜]
- 隐藏文本/代币:[要编码的内容]
- 输出格式:[文本/JSON]
将任意文本隐藏到表情符号内部,视觉上只显示表情符号. 编码原理:
🥜)和一段文本编码示例:
# 将文本编码到表情符号中
node (请参考skill目录中的脚本文件) encode "🥜" "你好"
# ...
# 将代币字符串编码到表情符号中
node (请参考skill目录中的脚本文件) encode "🥜" "tokenA..."
载体表情符号选择建议:
| 表情符号 | 推荐度 | 理由 |
|---|---|---|
| 🥜 花生 | 高 | 不常见,不易引起注意 |
| 🌰 栗子 | 高 | 同上 |
| 🔭 药丸 | 中 | 可能有隐喻含义 |
| 🎱 台球 | 中 | 视觉简洁 |
| 自定义 | - | 避免使用过于常见的表情 |
技巧:在表情符号后跟随任意普通文本(哪怕一个字符),可以降低消息被截断或损坏的概率.
处理: 解析隐藏消息编码的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回隐藏消息编码的响应数据,包含状态码、结果和日志.
从包含隐藏消息的文本中提取原始文本. 解码原理:
解码语义(重要): 解码器忽略普通字符,直到找到领先个变体选择器字节,然后收集字节直到遇到变体选择器之后的领先个普通字符.
# 解码隐藏消息
node (请参考skill目录中的脚本文件) decode "<粘贴完整消息>"
# ...
# 解码并显示元数据
node (请参考skill目录中的脚本文件) decode "<粘贴完整消息>" --metadata
# ...
# JSON格式输出
node (请参考skill目录中的脚本文件) decode "<粘贴完整消息>" --metadata --json
JSON输出示例(代币):
{
"text": "tokenB...",
"isToken": true,
"metadata": {
"mint": "https://mint.example",
"unit": "sat",
"amount": 21
},
"metadataError": null
}
JSON输出示例(普通隐藏消息):
{
"text": "你好,这是隐藏消息",
"isToken": false
}
处理: 解析隐藏消息解码的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回隐藏消息解码的响应数据,包含状态码、结果和日志.
无需联网即可解析代币的基本元数据信息.
| 元数据字段 | 说明 | 获取方式 |
|---|---|---|
| mint | 铸造源URL | 本地解析代币字符串 |
| unit | 货币单位 | 本地解析 |
| amount | 面额数量 | 本地解析 |
重要:元数据解析是本地操作,不访问铸造源服务器,无法证明代币未被花费或是否有效。仅用于预检查.
处理: 解析代币元数据本地解析的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回代币元数据本地解析的响应数据,包含状态码、结果和日志.
| 概念 | 说明 |
|---|---|
| 变体选择器 | Unicode码位U+FE00到U+FE0F(VS1-VS16)和U+E0100到U+E01EF(VS17-VS256) |
| 设计初衷 | 用于指定前一个字符的显示变体(如文本形式vs表情形式) |
| 隐藏编码原理 | 将文本的UTF-8字节值映射到变体选择器的序号,附加到表情符号后 |
| 可见性 | 大多数应用只显示基础表情符号,变体选择器不可见 |
| 保留性 | 部分聊天应用会截断或规范化Unicode,导致变体选择器丢失 |
处理: 解析Unicode变体选择器原理的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回Unicode变体选择器原理的响应数据,包含状态码、结果和日志.
| 检测场景 | 说明 | 处理方式 |
|---|---|---|
| 正常解码 | 变体选择器完整保留 | 成功提取隐藏文本 |
| 部分截断 | 变体选择器被部分删除 | 解码返回不完整文本或乱码 |
| 完全丢失 | 变体选择器被全部删除 | 无法解码,提示重新发送 |
| 规范化 | 应用将变体选择器标准化 | 可能导致解码失败 |
如果解码返回部分代币或乱码,说明聊天应用可能破坏了变体选择器。建议重新发送,并在表情符号后添加一些普通文本.
处理: 解析消息完整性检测的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回消息完整性检测的响应数据,包含状态码、结果和日志.
| 安全原则 | 说明 |
|---|---|
| 代币即现金 | 解码出的代币字符串是持有人资产,应像现金一样对待 |
| 本地解析局限性 | --metadata仅做本地解析,无法证明代币未被花费 |
| 消息截断风险 | 部分聊天应用会截断Unicode,导致隐藏信息丢失 |
| 传输可靠性技巧 | 在表情符号后添加普通文本可提高传输可靠性 |
| Telegram技巧 | 在代码块/等宽格式中发送可更好保留隐藏字符 |
处理: 解析安全使用指南的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回安全使用指南的响应数据,包含状态码、结果和日志. 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:表情符号编码解码、变体选择器隐藏消、代币编码与元数据、表情符号工具箱免、费版解决在即时通、隐藏消息传递、代币安全传输、表情符号深度解析、的核心需求、表情符号工具箱利、将文本隐藏在表情、实现视觉上只显示、表情但实际携带隐、藏信息的效果、Use、when、需要数据分析、报表生成、统计洞察、数据可视化时使用、不适用于实时流数、据处理等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
痛点:在公开群聊中需要传递只让特定人看到的消息,不想使用加密工具引起注意. 解决方案:
# 编码隐藏消息
node (请参考skill目录中的脚本文件) encode "🥜" "晚上8点老地方见"
# ...
# 发送:群聊中只显示🥜,接收方解码获取消息
# 解码:
node (请参考skill目录中的脚本文件) decode "<复制的消息>"
效果:群聊中只显示一个花生表情符号,只有知道方法的人才能解码出隐藏消息.
痛点:需要在聊天应用中发送数字代币(如电子现金代币),但不想直接暴露代币字符串. 解决方案:
# 将代币编码到表情符号中
node (请参考skill目录中的脚本文件) encode "🥜" "tokenB..."
# ...
# 接收方解码并检查元数据
node (请参考skill目录中的脚本文件) decode "<复制的消息>" --metadata --json
# ...
# 输出:面额、单位、铸造源等元数据
效果:代币隐藏在表情符号中传输,聊天记录中不显示代币字符串,降低被窃取风险.
痛点:希望在分享的文本内容中嵌入隐藏水印,用于版权追溯,但不影响阅读体验. 解决方案:
# 在文章末尾的表情符号中嵌入水印
node (请参考skill目录中的脚本文件) encode "🎯" "作者ID:12345 时间:2026-07-18"
# ...
# 文章末尾显示🎯,但隐藏了作者标识和时间戳
# 追溯时解码即可获取水印信息
许多聊天应用会截断或规范化Unicode字符。变体选择器是特殊的Unicode字符,如果应用在消息处理过程中将其删除或标准化,嵌入的隐藏信息就会丢失。建议在表情符号后添加普通文本、使用代码块格式发送,或更换支持完整Unicode保留的聊天应用.
这通常意味着聊天应用破坏了变体选择器字符。请要求发送方重新发送消息,建议在表情符号后添加一些普通文本(哪怕一个字符),这可以降低消息被截断的概率。在Telegram中,使用代码块/等宽格式发送也有帮助.
不能。--metadata是本地解析操作,仅从代币字符串中提取面额、单位和铸造源等基本信息,不访问铸造源服务器。它无法证明代币未被花费或是否仍然有效。要验证代币有效性,需要向铸造源发起兑换请求.
变体选择器在大多数应用中不可见,普通用户无法察觉。但技术上可以通过Unicode分析检测到变体选择器的存在。因此,这不适用于对抗专业检测的高安全场景,仅适用于日常隐私保护.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
| Node.js 14+ | 运行时 | 必需 | 从nodejs.org安装 |
| emoji-toolkit.js | 脚本 | 必需 | 随本技能提供 |
本技能基于原始开源作品改进,保留原始版权声明:
本改进作品在原始作品基础上进行了深度差异化改造,包括但不限于:
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:emoji-toolkit-pro
# 在此执行相关操作
echo "操作完成"
```bash
# 在此执行相关操作
echo "操作完成"
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |