sophhub 0.4.43 → 0.4.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/claw-agent-get-send/skill.json +13 -2
- package/skills/claw-agent-get-send/src/SKILL.md +6 -0
- package/skills/claw-agent-get-send/src/scripts/appia_claw.py +90 -5
- package/skills/image-classify/skill.json +9 -2
- package/skills/image-classify/src/pyproject.toml +2 -2
- package/skills/image-description/skill.json +9 -2
- package/skills/image-description/src/pyproject.toml +2 -2
- package/skills/image-identify-world/skill.json +9 -2
- package/skills/image-identify-world/src/pyproject.toml +2 -2
- package/skills/online-bug-report/skill.json +9 -2
- package/skills/online-bug-report/src/pyproject.toml +1 -1
- package/skills/sophnet-age-appearance/skill.json +9 -2
- package/skills/sophnet-age-appearance/src/pyproject.toml +2 -2
- package/skills/sophnet-customized-marketing/skill.json +9 -2
- package/skills/sophnet-customized-marketing/src/pyproject.toml +1 -1
- package/skills/sophnet-docx/skill.json +9 -2
- package/skills/sophnet-docx/src/pyproject.toml +1 -1
- package/skills/sophnet-face-search/skill.json +9 -2
- package/skills/sophnet-face-search/src/pyproject.toml +2 -2
- package/skills/sophnet-id-photo/skill.json +9 -2
- package/skills/sophnet-id-photo/src/pyproject.toml +2 -2
- package/skills/sophnet-image-edit/skill.json +9 -2
- package/skills/sophnet-image-edit/src/pyproject.toml +2 -2
- package/skills/sophnet-image-generate/skill.json +9 -2
- package/skills/sophnet-image-generate/src/pyproject.toml +2 -2
- package/skills/sophnet-image-ocr/skill.json +9 -2
- package/skills/sophnet-image-ocr/src/pyproject.toml +2 -2
- package/skills/sophnet-image-ocr/src/references/api-details.md +1 -1
- package/skills/sophnet-infinite-talk/skill.json +9 -2
- package/skills/sophnet-infinite-talk/src/pyproject.toml +1 -1
- package/skills/sophnet-oss/skill.json +11 -2
- package/skills/sophnet-oss/src/SKILL.md +4 -14
- package/skills/sophnet-oss/src/pyproject.toml +2 -2
- package/skills/sophnet-pdf/skill.json +9 -2
- package/skills/sophnet-pdf/src/pyproject.toml +1 -1
- package/skills/sophnet-sticker-edit/skill.json +9 -2
- package/skills/sophnet-sticker-edit/src/pyproject.toml +2 -2
- package/skills/sophnet-tts/skill.json +9 -2
- package/skills/sophnet-tts/src/pyproject.toml +1 -1
- package/skills/sophnet-video-generate/skill.json +9 -2
- package/skills/sophnet-video-generate/src/pyproject.toml +2 -2
- package/skills/sophnet-xlsx/skill.json +9 -2
- package/skills/sophnet-xlsx/src/pyproject.toml +1 -1
- package/skills/store-marketing/skill.json +9 -2
- package/skills/store-marketing/src/pyproject.toml +2 -2
package/package.json
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claw-agent-get-send",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"types": ["store"],
|
|
5
5
|
"displayName": "Claw Agent Get/Send",
|
|
6
6
|
"description": "Appia(IM 即时通讯)侧 claw.agent.groups.get / claw.agent.message.send:查询机器人在哪些群聊、向群发纯文本或 Markdown;脚本封装 + HTTP/curl 参考(JWT、msg/md、错误码)",
|
|
7
7
|
"changelog": [
|
|
8
|
+
{
|
|
9
|
+
"version": "1.1.0",
|
|
10
|
+
"date": "2026-06-16",
|
|
11
|
+
"changes": [
|
|
12
|
+
"appia_claw.py:新增 upload 子命令(POST agent.file.upload,multipart/form-data)",
|
|
13
|
+
"appia_claw.py:send 子命令新增 --file-ids 参数,支持上传后带附件发送",
|
|
14
|
+
"reference-http.md:新增 agent.file.upload、agent.message.send fileIds 章节",
|
|
15
|
+
"SKILL.md:新增 upload、send --file-ids 用法示例",
|
|
16
|
+
"design.md:新增 upload 子命令说明与测试用例 TC-032–TC-039"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
8
19
|
{
|
|
9
20
|
"version": "1.0.1",
|
|
10
21
|
"date": "2026-05-09",
|
|
@@ -28,5 +39,5 @@
|
|
|
28
39
|
}
|
|
29
40
|
],
|
|
30
41
|
"createdAt": "2026-04-28",
|
|
31
|
-
"updatedAt": "2026-
|
|
42
|
+
"updatedAt": "2026-06-16"
|
|
32
43
|
}
|
|
@@ -32,6 +32,12 @@ uv run {baseDir}/scripts/appia_claw.py --cred-file /path/to.cred.json send-md --
|
|
|
32
32
|
|
|
33
33
|
# 7. 从 JSON 文件读 md 数组
|
|
34
34
|
uv run {baseDir}/scripts/appia_claw.py --cred-file /path/to.cred.json send-md --md-file /tmp/md.json --rid "<rid>"
|
|
35
|
+
|
|
36
|
+
# 8. 上传文件到群聊(不发消息,返回 file._id)
|
|
37
|
+
uv run {baseDir}/scripts/appia_claw.py --cred-file /path/to.cred.json upload report.pdf --rid "<rid>"
|
|
38
|
+
|
|
39
|
+
# 9. 上传后带附件发消息(两步:先 upload 拿 _id,再 send 带 --file-ids)
|
|
40
|
+
uv run {baseDir}/scripts/appia_claw.py --cred-file /path/to.cred.json send --text "请查收附件" --rid "<rid>" --file-ids "<file._id>"
|
|
35
41
|
```
|
|
36
42
|
|
|
37
43
|
不用凭证文件时,可在环境中设置 `CLAW_JWT`、`APP_AGENT_ID`、`CLAW_USER_ID`(及场景需要的 `TARGET_RID` 等),命令相同,省略 `--cred-file …` 即可。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""Appia Claw HTTP API: agent.groups.get, agent.message.send (plaintext + md + chunking)."""
|
|
2
|
+
"""Appia Claw HTTP API: agent.groups.get, agent.message.send (plaintext + md + chunking), agent.file.upload."""
|
|
3
3
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
@@ -217,8 +217,8 @@ def _send_request(body_obj: dict[str, Any], timeout: float) -> dict[str, Any]:
|
|
|
217
217
|
return data
|
|
218
218
|
|
|
219
219
|
|
|
220
|
-
def _send_plain(rid: str, msg: str, timeout: float) -> dict[str, Any]:
|
|
221
|
-
"""
|
|
220
|
+
def _send_plain(rid: str, msg: str, timeout: float, file_ids: list[str] | None = None) -> dict[str, Any]:
|
|
221
|
+
"""发送纯文本消息,可选附带已上传的文件(fileIds)。"""
|
|
222
222
|
aid = _agent_id()
|
|
223
223
|
body_obj: dict[str, Any] = {
|
|
224
224
|
"rid": rid,
|
|
@@ -226,6 +226,8 @@ def _send_plain(rid: str, msg: str, timeout: float) -> dict[str, Any]:
|
|
|
226
226
|
"userId": _user_id(),
|
|
227
227
|
"msg": msg,
|
|
228
228
|
}
|
|
229
|
+
if file_ids:
|
|
230
|
+
body_obj["fileIds"] = file_ids
|
|
229
231
|
return _send_request(body_obj, timeout)
|
|
230
232
|
|
|
231
233
|
|
|
@@ -241,6 +243,63 @@ def _send_md(rid: str, md: list[dict[str, Any]], timeout: float) -> dict[str, An
|
|
|
241
243
|
return _send_request(body_obj, timeout)
|
|
242
244
|
|
|
243
245
|
|
|
246
|
+
def _file_upload(rid: str, file_path: str, timeout: float) -> dict[str, Any]:
|
|
247
|
+
"""上传文件到 Appia 群聊(不发消息),返回 file._id。"""
|
|
248
|
+
import mimetypes as _mimetypes
|
|
249
|
+
|
|
250
|
+
base = _base_url()
|
|
251
|
+
url = f"{base}/api/v1/claw/agent.file.upload"
|
|
252
|
+
fpath = os.path.expanduser(file_path)
|
|
253
|
+
fname = os.path.basename(fpath)
|
|
254
|
+
mime_type, _ = _mimetypes.guess_type(fpath)
|
|
255
|
+
if not mime_type:
|
|
256
|
+
mime_type = "application/octet-stream"
|
|
257
|
+
|
|
258
|
+
boundary = "----ClawUploadBoundary" + os.urandom(16).hex()
|
|
259
|
+
body_parts: list[bytes] = []
|
|
260
|
+
for field_name, value in (
|
|
261
|
+
("userId", _user_id()),
|
|
262
|
+
("agentId", _agent_id()),
|
|
263
|
+
("rid", rid),
|
|
264
|
+
):
|
|
265
|
+
body_parts.append(f"--{boundary}\r\n".encode())
|
|
266
|
+
body_parts.append(
|
|
267
|
+
f'Content-Disposition: form-data; name="{field_name}"\r\n\r\n'.encode()
|
|
268
|
+
)
|
|
269
|
+
body_parts.append(f"{value}\r\n".encode())
|
|
270
|
+
|
|
271
|
+
body_parts.append(f"--{boundary}\r\n".encode())
|
|
272
|
+
body_parts.append(
|
|
273
|
+
f'Content-Disposition: form-data; name="file"; filename="{fname}"\r\n'.encode()
|
|
274
|
+
)
|
|
275
|
+
body_parts.append(f"Content-Type: {mime_type}\r\n\r\n".encode())
|
|
276
|
+
with open(fpath, "rb") as fh:
|
|
277
|
+
body_parts.append(fh.read())
|
|
278
|
+
body_parts.append(f"\r\n--{boundary}--\r\n".encode())
|
|
279
|
+
body = b"".join(body_parts)
|
|
280
|
+
|
|
281
|
+
req = request.Request(
|
|
282
|
+
url,
|
|
283
|
+
data=body,
|
|
284
|
+
headers={
|
|
285
|
+
"Authorization": f"Bearer {_jwt()}",
|
|
286
|
+
"Content-Type": f"multipart/form-data; boundary={boundary}",
|
|
287
|
+
"Accept": "application/json",
|
|
288
|
+
},
|
|
289
|
+
method="POST",
|
|
290
|
+
)
|
|
291
|
+
try:
|
|
292
|
+
with request.urlopen(req, timeout=timeout) as resp:
|
|
293
|
+
out = resp.read().decode("utf-8")
|
|
294
|
+
except error.HTTPError as exc:
|
|
295
|
+
out = exc.read().decode("utf-8", errors="replace")
|
|
296
|
+
raise RuntimeError(f"HTTP {exc.code}: {out}") from exc
|
|
297
|
+
data = json.loads(out)
|
|
298
|
+
if not data.get("success"):
|
|
299
|
+
raise RuntimeError(json.dumps(data, ensure_ascii=False))
|
|
300
|
+
return data
|
|
301
|
+
|
|
302
|
+
|
|
244
303
|
def _chunk_text(text: str, size: int) -> list[str]:
|
|
245
304
|
if size <= 0:
|
|
246
305
|
return [text]
|
|
@@ -265,11 +324,15 @@ def cmd_send(args: argparse.Namespace) -> int:
|
|
|
265
324
|
else:
|
|
266
325
|
print("⚠️ 需要 --file 或 --text", file=sys.stderr)
|
|
267
326
|
return 1
|
|
327
|
+
file_ids: list[str] = []
|
|
328
|
+
if args.file_ids:
|
|
329
|
+
for item in args.file_ids:
|
|
330
|
+
file_ids.extend(fid.strip() for fid in item.split(",") if fid.strip())
|
|
268
331
|
chunk_raw = _cfg("APPIA_MSG_CHUNK_SIZE")
|
|
269
332
|
chunk_size = int(chunk_raw) if chunk_raw else DEFAULT_CHUNK_SIZE
|
|
270
333
|
parts = _chunk_text(text, chunk_size)
|
|
271
334
|
for idx, part in enumerate(parts):
|
|
272
|
-
data = _send_plain(rid, part, args.timeout)
|
|
335
|
+
data = _send_plain(rid, part, args.timeout, file_ids=file_ids if file_ids else None)
|
|
273
336
|
if args.json:
|
|
274
337
|
print(json.dumps(data, ensure_ascii=False, indent=2))
|
|
275
338
|
elif len(parts) > 1:
|
|
@@ -328,6 +391,21 @@ def cmd_send_md(args: argparse.Namespace) -> int:
|
|
|
328
391
|
return 0
|
|
329
392
|
|
|
330
393
|
|
|
394
|
+
def cmd_upload(args: argparse.Namespace) -> int:
|
|
395
|
+
"""上传文件到群聊(不发消息),返回 file._id 供 send 的 --file-ids 使用。"""
|
|
396
|
+
rid = args.rid or _cfg("TARGET_RID")
|
|
397
|
+
if not rid:
|
|
398
|
+
print("⚠️ upload 需要 TARGET_RID 或 --rid", file=sys.stderr)
|
|
399
|
+
return 1
|
|
400
|
+
data = _file_upload(rid, args.file, args.timeout)
|
|
401
|
+
if args.json:
|
|
402
|
+
print(json.dumps(data, ensure_ascii=False, indent=2))
|
|
403
|
+
else:
|
|
404
|
+
finfo = data.get("data", {}).get("file", {})
|
|
405
|
+
print(f"file._id={finfo.get('_id')} name={finfo.get('name')} size={finfo.get('size')} type={finfo.get('type')}")
|
|
406
|
+
return 0
|
|
407
|
+
|
|
408
|
+
|
|
331
409
|
def main() -> int:
|
|
332
410
|
global _CRED
|
|
333
411
|
p = argparse.ArgumentParser(description="Appia Claw (groups.get / message.send)")
|
|
@@ -347,10 +425,11 @@ def main() -> int:
|
|
|
347
425
|
vp = sub.add_parser("verify-target", help="校验 TARGET_RID + TARGET_GROUP_NAME")
|
|
348
426
|
vp.set_defaults(_run=cmd_verify_target)
|
|
349
427
|
|
|
350
|
-
sp = sub.add_parser("send", help="POST agent.message.send(纯文本 msg;超出 APPIA_MSG_CHUNK_SIZE
|
|
428
|
+
sp = sub.add_parser("send", help="POST agent.message.send(纯文本 msg;超出 APPIA_MSG_CHUNK_SIZE 则分多条;可带 --file-ids 附件)")
|
|
351
429
|
sp.add_argument("--file", "-f", help="长文本文件")
|
|
352
430
|
sp.add_argument("--text", "-t", help="短文本")
|
|
353
431
|
sp.add_argument("--rid", help="覆盖 TARGET_RID")
|
|
432
|
+
sp.add_argument("--file-ids", nargs="*", help="已上传文件的 _id,多个可用逗号分隔或重复传参")
|
|
354
433
|
sp.add_argument("--json", action="store_true")
|
|
355
434
|
sp.set_defaults(_run=cmd_send)
|
|
356
435
|
|
|
@@ -362,6 +441,12 @@ def main() -> int:
|
|
|
362
441
|
smp.add_argument("--json", action="store_true")
|
|
363
442
|
smp.set_defaults(_run=cmd_send_md)
|
|
364
443
|
|
|
444
|
+
up = sub.add_parser("upload", help="POST agent.file.upload(上传附件到群聊,返回 file._id)")
|
|
445
|
+
up.add_argument("file", help="待上传的文件路径")
|
|
446
|
+
up.add_argument("--rid", help="覆盖 TARGET_RID")
|
|
447
|
+
up.add_argument("--json", action="store_true")
|
|
448
|
+
up.set_defaults(_run=cmd_upload)
|
|
449
|
+
|
|
365
450
|
args = p.parse_args()
|
|
366
451
|
if args.cred_file:
|
|
367
452
|
_CRED = load_cred_file(args.cred_file)
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "image-classify",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "照片分类器",
|
|
8
8
|
"description": "照片分类器:注册人脸、按人搜索/一键分类相册。当用户说用照片分类器查找或搜索某人、对文件夹分类、添加/删除照片分类器用户时使用。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.7",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.6",
|
|
12
19
|
"date": "2026-05-20",
|
|
@@ -59,5 +66,5 @@
|
|
|
59
66
|
}
|
|
60
67
|
],
|
|
61
68
|
"createdAt": "2026-04-10",
|
|
62
|
-
"updatedAt": "2026-
|
|
69
|
+
"updatedAt": "2026-06-17"
|
|
63
70
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "image-classify"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.7"
|
|
4
4
|
description = "Photo classifier by face embedding similarity"
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"opencv-python-headless>=4.8.0",
|
|
8
8
|
"numpy>=1.24.0",
|
|
9
9
|
"requests>=2.28.0",
|
|
10
|
-
"sophnet-tools>=0.0.
|
|
10
|
+
"sophnet-tools>=0.0.2",
|
|
11
11
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "image-description",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "图片描述",
|
|
8
8
|
"description": "生成图片描述",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.4",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"changes": [
|
|
12
19
|
"ana_image.py:HTTP 200 但无法提取非空 content 时 stderr 报错并 exit 1,移除 json.dumps fallback"
|
|
@@ -37,5 +44,5 @@
|
|
|
37
44
|
}
|
|
38
45
|
],
|
|
39
46
|
"createdAt": "2026-04-21",
|
|
40
|
-
"updatedAt": "2026-06-
|
|
47
|
+
"updatedAt": "2026-06-17"
|
|
41
48
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "image-description"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.4"
|
|
4
4
|
description = "Generate image descriptions with Sophnet via chat/completions"
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = [
|
|
7
|
-
"sophnet-tools>=0.0.
|
|
7
|
+
"sophnet-tools>=0.0.2",
|
|
8
8
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "image-identify-world",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "识万物",
|
|
8
8
|
"description": "图像主体识别与科普说明,专业审慎地描述可能名称、特征、分布习性、安全提醒和不确定性。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"changes": [
|
|
12
19
|
"初次提交:VLM 识图 + 结构化百科输出"
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-05-13",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "image-identify-world"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.1"
|
|
4
4
|
description = "Identify image subjects with cautious explanatory detail via Sophnet VLM"
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = [
|
|
7
|
-
"sophnet-tools>=0.0.
|
|
7
|
+
"sophnet-tools>=0.0.2",
|
|
8
8
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "online-bug-report",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "在线提Bug",
|
|
8
8
|
"description": "当用户说「在线提交bug」时,收集问题描述并通过虾友 DM 提交工单。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.11",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"changes": [
|
|
12
19
|
"evals 断言改为引擎可识别的 contains/不包含 规则",
|
|
@@ -98,5 +105,5 @@
|
|
|
98
105
|
}
|
|
99
106
|
],
|
|
100
107
|
"createdAt": "2026-05-18",
|
|
101
|
-
"updatedAt": "2026-06-
|
|
108
|
+
"updatedAt": "2026-06-17"
|
|
102
109
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-age-appearance",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "年龄相貌模拟",
|
|
8
8
|
"description": "仅支持单张人物图:用 AI 模拟指定年龄的长相(幼年、青少年或成年以后等推演)。用户问「10 岁 / 20 岁长什么样」「变老变年轻」「年龄推演」「小时候或以后样子」并希望出图时使用;多图需分次调用。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"changes": [
|
|
12
19
|
"初版:单人参考图;支持单个或多个目标年龄;输出 IMAGE_URL"
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-05-13",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-age-appearance"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.1"
|
|
4
4
|
description = "Sophnet portrait age-appearance simulation via image-edit"
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
"pillow>=9.5.0",
|
|
10
10
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-customized-marketing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "个性化营销助手",
|
|
8
8
|
"description": "个性化营销助手:为中小商户策划营销活动,生成贴合业务的营销文案、宣传图片、海报、卡片和其他营销视觉物料,支持多渠道分发与老板风格定制。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.2",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.1",
|
|
12
19
|
"date": "2026-04-10",
|
|
@@ -24,5 +31,5 @@
|
|
|
24
31
|
}
|
|
25
32
|
],
|
|
26
33
|
"createdAt": "2026-04-09",
|
|
27
|
-
"updatedAt": "2026-
|
|
34
|
+
"updatedAt": "2026-06-17"
|
|
28
35
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-docx",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.1.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.1.0",
|
|
12
19
|
"date": "2026-06-08",
|
|
@@ -29,5 +36,5 @@
|
|
|
29
36
|
}
|
|
30
37
|
],
|
|
31
38
|
"createdAt": "2026-04-14",
|
|
32
|
-
"updatedAt": "2026-06-
|
|
39
|
+
"updatedAt": "2026-06-17"
|
|
33
40
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-face-search",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.0",
|
|
12
19
|
"date": "2026-04-09",
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-04-09",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-face-search"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.1"
|
|
4
4
|
description = "Face search using Sophnet face detection and embedding API"
|
|
5
5
|
requires-python = ">=3.8"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"opencv-python-headless>=4.8.0",
|
|
8
8
|
"numpy>=1.24.0",
|
|
9
9
|
"requests>=2.28.0",
|
|
10
|
-
"sophnet-tools>=0.0.
|
|
10
|
+
"sophnet-tools>=0.0.2",
|
|
11
11
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-id-photo",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "一键证件照",
|
|
8
8
|
"description": "Sophnet 证件照:人脸检测后在多张达标脸中取面积最大者裁切头肩,VL 预审后换纯色底(白/蓝/红)并微调体态与角度。用户要证件照、换证件照底色、一寸/二寸/报名或电子证照底色时使用。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"changes": [
|
|
12
19
|
"初版:白/蓝/红底,默认白底;输出 ALL_BG_TIP"
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-05-13",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-id-photo"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.1"
|
|
4
4
|
description = "Sophnet ID photo: solid background + corrections; optional compliance gate; preserve identity"
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
"opencv-python-headless>=4.8.0",
|
|
10
10
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-image-edit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.2",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.1",
|
|
12
19
|
"date": "2026-06-09",
|
|
@@ -23,5 +30,5 @@
|
|
|
23
30
|
}
|
|
24
31
|
],
|
|
25
32
|
"createdAt": "2026-04-09",
|
|
26
|
-
"updatedAt": "2026-06-
|
|
33
|
+
"updatedAt": "2026-06-17"
|
|
27
34
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-image-edit"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.2"
|
|
4
4
|
description = "Sophnet image editing (image-to-image) with task polling"
|
|
5
5
|
requires-python = ">=3.8"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
[[tool.uv.index]]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-image-generate",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.2",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.1",
|
|
12
19
|
"date": "2026-06-09",
|
|
@@ -23,5 +30,5 @@
|
|
|
23
30
|
}
|
|
24
31
|
],
|
|
25
32
|
"createdAt": "2026-04-09",
|
|
26
|
-
"updatedAt": "2026-06-
|
|
33
|
+
"updatedAt": "2026-06-17"
|
|
27
34
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-image-generate"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.2"
|
|
4
4
|
description = "Sophnet text-to-image generation with task polling"
|
|
5
5
|
requires-python = ">=3.8"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
[[tool.uv.index]]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-image-ocr",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "Use when the user needs to extract text, tables, or structured content from images or PDF files. Supports local files and URLs via Sophnet OCR API.",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.1.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.1.0",
|
|
12
19
|
"date": "2026-05-26",
|
|
@@ -28,5 +35,5 @@
|
|
|
28
35
|
}
|
|
29
36
|
],
|
|
30
37
|
"createdAt": "2026-04-09",
|
|
31
|
-
"updatedAt": "2026-
|
|
38
|
+
"updatedAt": "2026-06-17"
|
|
32
39
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "image-ocr"
|
|
3
|
-
version = "1.1.
|
|
3
|
+
version = "1.1.1"
|
|
4
4
|
description = "OCR text and table extraction using Sophnet PaddleOCR API"
|
|
5
5
|
requires-python = ">=3.8"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
[project.optional-dependencies]
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
## Dependencies
|
|
15
15
|
|
|
16
16
|
- `requests>=2.28.0` — HTTP client (always installed)
|
|
17
|
-
- `sophnet-tools>=0.0.
|
|
17
|
+
- `sophnet-tools>=0.0.2` — Sophnet API helpers (always installed)
|
|
18
18
|
- `pymupdf>=1.24.0` — PDF page rendering (auto-installed from Aliyun mirror on first PDF use)
|
|
19
19
|
|
|
20
20
|
## Workflow
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-infinite-talk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.0",
|
|
12
19
|
"date": "2026-04-09",
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-04-09",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-oss",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "OSS链接生成",
|
|
8
8
|
"description": "将文件转换为一个可供下载的文件链接",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"changes": [
|
|
12
|
+
"适配 sophnet-tools 0.0.2:返回链接改为短链接,移除签名参数相关约束",
|
|
13
|
+
"删除 SKILL.md 中「Signed URL 完整性」章节",
|
|
14
|
+
"更新前置条件要求 sophnet-tools>=0.0.2"
|
|
15
|
+
],
|
|
16
|
+
"date": "2026-06-17",
|
|
17
|
+
"version": "1.2.0"
|
|
18
|
+
},
|
|
10
19
|
{
|
|
11
20
|
"changes": [
|
|
12
21
|
"SKILL.md 全文中文化,精简 description 为中文「功能+触发场景」格式",
|
|
@@ -34,5 +43,5 @@
|
|
|
34
43
|
}
|
|
35
44
|
],
|
|
36
45
|
"createdAt": "2026-04-09",
|
|
37
|
-
"updatedAt": "2026-06-
|
|
46
|
+
"updatedAt": "2026-06-17"
|
|
38
47
|
}
|
|
@@ -7,19 +7,9 @@ description: 将本地文件路径转换为可下载链接(24小时有效)
|
|
|
7
7
|
|
|
8
8
|
将本地文件路径转换为可访问的下载 URL,链接有效期为 24 小时。
|
|
9
9
|
|
|
10
|
-
## Signed URL(签名链接)完整性
|
|
11
|
-
|
|
12
|
-
`DOWNLOAD_URL` 由 OSS **预签名**生成,**查询串(`?` 及之后的参数)即访问凭证**。在本次 skill 的全流程中:
|
|
13
|
-
|
|
14
|
-
- **必须**使用脚本输出的 `DOWNLOAD_URL` **完整字符串**(一字不改)填入下文展示模板中的下载链接,或原样写入下游。
|
|
15
|
-
- **禁止**去掉 `?` 及后续查询参数、禁止截取签名片段、禁止尝试「换成更短的裸 URL」或做任何 URL「美化」。
|
|
16
|
-
- 签名 URL 的参数中,**`x-oss-signature-version` 和 `x-oss-credential` 不可省略**,分别为签名算法的版本标识和访问凭证标识,缺失任一参数均会导致签名校验失败。**`x-oss-credential` 内嵌的日期不可修改**,禁止插入重复的 credential 参数。
|
|
17
|
-
- 若裸域名路径在无签名时可访问,那是偶然行为;本 skill **不以裸链为准**,仅以脚本输出的带签名 URL 为准。
|
|
18
|
-
- 向用户展示时沿用下文「转换成功后」的固定格式即可;**不要改模板结构**,只保证链接内容为完整签名 URL。
|
|
19
|
-
|
|
20
10
|
## 前置条件
|
|
21
11
|
|
|
22
|
-
- Python 包:`sophnet-tools`(需预先安装在系统 Python 环境中)
|
|
12
|
+
- Python 包:`sophnet-tools>=0.0.2`(需预先安装在系统 Python 环境中)
|
|
23
13
|
|
|
24
14
|
## Usage
|
|
25
15
|
|
|
@@ -63,7 +53,7 @@ ERROR=错误描述
|
|
|
63
53
|
文件路径已转换为可访问链接:
|
|
64
54
|
|
|
65
55
|
文件路径:/absolute/path/to/file
|
|
66
|
-
下载链接:<完整 DOWNLOAD_URL
|
|
56
|
+
下载链接:<完整 DOWNLOAD_URL>
|
|
67
57
|
|
|
68
58
|
⏰ 链接有效期:24小时
|
|
69
59
|
```
|
|
@@ -93,7 +83,7 @@ Resolved relative path: "media/inbound/images/xxx.pdf" -> "/absolute/path/to/wor
|
|
|
93
83
|
- 大文件可增大 `--timeout`(默认 120 秒)
|
|
94
84
|
- 始终使用绝对路径以保证可靠
|
|
95
85
|
- **严格串行执行**:禁止并发、禁止拆分子任务、禁止后台运行,一次只转换一个文件
|
|
96
|
-
-
|
|
86
|
+
- **不修改下载链接**:`DOWNLOAD_URL` 必须原样使用,不截取、不"美化"、不修改任何字符
|
|
97
87
|
|
|
98
88
|
## ⚠️ 禁止操作
|
|
99
89
|
|
|
@@ -101,4 +91,4 @@ Resolved relative path: "media/inbound/images/xxx.pdf" -> "/absolute/path/to/wor
|
|
|
101
91
|
- 禁止并发转换多个文件
|
|
102
92
|
- 禁止将任务拆分为多个步骤
|
|
103
93
|
- 禁止使用后台进程
|
|
104
|
-
- 禁止修改 `DOWNLOAD_URL`
|
|
94
|
+
- 禁止修改 `DOWNLOAD_URL` 中的任何字符
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-pdf",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "PDF处理",
|
|
8
8
|
"description": "PDF文档处理工具,支持创建、编辑和分析 PDF 文档",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.0",
|
|
12
19
|
"date": "2026-04-14",
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-04-14",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-sticker-edit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "表情包生成",
|
|
8
8
|
"description": "根据输入的图片生成表情包",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.2",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"changes": [
|
|
12
19
|
"pyproject:requires-python 提升至 >=3.10;SKILL 文档删减冗余 `{baseDir}` 说明"
|
|
@@ -23,5 +30,5 @@
|
|
|
23
30
|
}
|
|
24
31
|
],
|
|
25
32
|
"createdAt": "2026-05-13",
|
|
26
|
-
"updatedAt": "2026-
|
|
33
|
+
"updatedAt": "2026-06-17"
|
|
27
34
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-sticker-edit"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.2"
|
|
4
4
|
description = "Sophnet sticker/emoji image-to-image with random or custom styles (Qwen-Image-Edit-2509)"
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-tts",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.0",
|
|
12
19
|
"date": "2026-04-09",
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-04-09",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-video-generate",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin",
|
|
6
6
|
"store"
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
"displayName": "视频生成",
|
|
9
9
|
"description": "通过 Sophnet API 生成视频,支持文生视频和图生视频",
|
|
10
10
|
"changelog": [
|
|
11
|
+
{
|
|
12
|
+
"version": "1.0.4",
|
|
13
|
+
"date": "2026-06-17",
|
|
14
|
+
"changes": [
|
|
15
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
11
18
|
{
|
|
12
19
|
"version": "1.0.3",
|
|
13
20
|
"date": "2026-06-09",
|
|
@@ -41,5 +48,5 @@
|
|
|
41
48
|
}
|
|
42
49
|
],
|
|
43
50
|
"createdAt": "2026-04-09",
|
|
44
|
-
"updatedAt": "2026-
|
|
51
|
+
"updatedAt": "2026-06-17"
|
|
45
52
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sophnet-video-generate"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.4"
|
|
4
4
|
description = "Sophnet video generation with task polling"
|
|
5
5
|
requires-python = ">=3.8"
|
|
6
6
|
dependencies = [
|
|
7
7
|
"requests>=2.28.0",
|
|
8
|
-
"sophnet-tools>=0.0.
|
|
8
|
+
"sophnet-tools>=0.0.2",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
[[tool.uv.index]]
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-xlsx",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "Excel表格处理",
|
|
8
8
|
"description": "",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.0.0",
|
|
12
19
|
"date": "2026-04-14",
|
|
@@ -16,5 +23,5 @@
|
|
|
16
23
|
}
|
|
17
24
|
],
|
|
18
25
|
"createdAt": "2026-04-14",
|
|
19
|
-
"updatedAt": "2026-
|
|
26
|
+
"updatedAt": "2026-06-17"
|
|
20
27
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "store-marketing",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"types": [
|
|
5
5
|
"store"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "门店营销辅助",
|
|
8
8
|
"description": "门店营销助手:为通用门店策划活动、分群触达、生成多渠道文案与海报。结合会员分群、目录价格、节日热点与老板风格。触发:营销/推广/促销/文案/海报/沉睡客户/活动方案/朋友圈/小红书/营销日历。",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "1.1.4",
|
|
12
|
+
"date": "2026-06-17",
|
|
13
|
+
"changes": [
|
|
14
|
+
"升级 sophnet-tools 依赖版本 >=0.0.1 → >=0.0.2"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"version": "1.1.3",
|
|
12
19
|
"date": "2026-06-03",
|
|
@@ -63,7 +70,7 @@
|
|
|
63
70
|
}
|
|
64
71
|
],
|
|
65
72
|
"createdAt": "2026-05-29",
|
|
66
|
-
"updatedAt": "2026-
|
|
73
|
+
"updatedAt": "2026-06-17",
|
|
67
74
|
"resources": [
|
|
68
75
|
"references",
|
|
69
76
|
"playbooks"
|