Install
openclaw skills install nl2json将自然语言转换成JSON参数。当用户说"帮我把自然语言转成JSON"、"把这段话转换成JSON参数"、"识别成JSON"、"转成JSON"、"转换成JSON"、"帮我生成JSON"、"用JSON表示"、"提取成JSON"、"解析成JSON"、"把这句话变成JSON"、"帮我做JSON转换"、"查询数据转JSON"...
openclaw skills install nl2json这个技能帮助用户将自然语言描述转换成结构化的JSON参数。
templates/default.json 模板,严格按照模板字段输出YYYY-mm-dd H:i:s 格式当用户连续进行多次转换时,检查对话历史:
other 对象中的所有参数第一次输入: "转成json,小米汽车头条数据top10最近一周"
第二次输入(部分查询): "最近三天呢"
处理逻辑: 继承第一次的所有参数,只修改时间范围:
在开始处理前,必须先读取 templates/default.json 文件,了解需要输出的字段结构。
根据模板中定义的每个字段,从用户的自然语言输入中提取对应的信息:
string 类型字段,提取对应的文本内容object 类型字段({}),提取相关信息作为嵌套对象array 类型字段([]),提取相关信息作为数组对于模板中定义但用户输入中没有提到的字段:
""{}[]所有时间参数必须转换为 YYYY-mm-dd H:i:s 格式:
| 自然语言描述 | 转换结果 (当前日期: 2026-03-04) |
|---|---|
| 今天 | 2026-03-04 00:00:00 |
| 昨天 | 2026-03-03 00:00:00 |
| 最近1天 | start_time: 2026-03-03 00:00:00, end_time: 2026-03-04 23:59:59 |
| 最近7天 | start_time: 2026-02-25 00:00:00, end_time: 2026-03-04 23:59:59 |
| 本周 | start_time: 2026-03-02 00:00:00, end_time: 2026-03-08 23:59:59 |
| 上周 | start_time: 2026-02-23 00:00:00, end_time: 2026-03-01 23:59:59 |
| 本月 | start_time: 2026-03-01 00:00:00, end_time: 2026-03-31 23:59:59 |
| 上个月 | start_time: 2026-02-01 00:00:00, end_time: 2026-02-28 23:59:59 |
| 自然语言描述 | 转换结果 |
|---|---|
| 2026年3月5日 | 2026-03-05 00:00:00 |
| 2026-3-5 14:30 | 2026-03-05 14:30:00 |
| 3月5日下午3点 | 2026-03-05 15:00:00 |
| 明天上午9点 | 2026-03-05 09:00:00 |
templates/default.json 文件,确认需要输出的字段YYYY-mm-dd H:i:s 格式用户可以用以下任何方式触发此技能:
直接转换类:
查询数据类:
格式输出类:
舆情监控场景:
数据查询场景:
简单查询场景:
假设 templates/default.json 模板为:
{
"input": "string",
"question_name": "string",
"other": {}
}
则输出格式如下(严格按照模板字段):
{
"input": "帮我转换JSON,查询人民网最近1天关于小米汽车的负面舆情数据",
"question_name": "查询人民网最近1天关于小米汽车的负面舆情数据",
"other": {
"source": "人民网",
"start_time": "2026-03-03 00:00:00",
"end_time": "2026-03-04 23:59:59",
"subject": "小米汽车",
"sentiment": "负面",
"data_type": "舆情数据"
}
}
第一次输入(完整查询):
转成json,小米汽车头条数据top10最近一周
第一次输出:
{
"input": "转成json,小米汽车头条数据top10最近一周",
"question_name": "小米汽车头条数据top10最近一周",
"other": {
"source": "头条",
"subject": "小米汽车",
"data_type": "数据",
"limit": "top10",
"start_time": "2026-02-25 00:00:00",
"end_time": "2026-03-04 23:59:59"
}
}
第二次输入(部分查询,只修改时间):
最近三天呢
第二次输出(继承其他参数,只修改时间):
{
"input": "最近三天呢",
"question_name": "小米汽车头条数据top10最近三天",
"other": {
"source": "头条",
"subject": "小米汽车",
"data_type": "数据",
"limit": "top10",
"start_time": "2026-03-02 00:00:00",
"end_time": "2026-03-04 23:59:59"
}
}
第一次输入:
查询小米汽车微博热点数据top10最近一周
第二次输入(只修改数量):
top20
第二次输出(继承其他参数,只修改limit):
{
"input": "top20",
"question_name": "小米汽车微博热点数据top20最近一周",
"other": {
"source": "微博",
"subject": "小米汽车",
"data_type": "热点数据",
"limit": "top20",
"start_time": "2026-02-25 00:00:00",
"end_time": "2026-03-04 23:59:59"
}
}
第一次输入:
查询小米汽车微博热点数据top10最近一周
第二次输入(只修改来源):
换成抖音
第二次输出(继承其他参数,只修改source):
{
"input": "换成抖音",
"question_name": "小米汽车抖音热点数据top10最近一周",
"other": {
"source": "抖音",
"subject": "小米汽车",
"data_type": "热点数据",
"limit": "top10",
"start_time": "2026-02-25 00:00:00",
"end_time": "2026-03-04 23:59:59"
}
}
以下输入被识别为部分查询,触发上下文继承:
如果输入包含两个或多个以上新参数,或输入是一个全新的完整查询,则按新查询处理,不继承上下文。
templates/default.json 模板,严格按照模板中定义的字段输出YYYY-mm-dd H:i:s 格式question_name 字段需要更新为完整的查询描述