@talesofai/neta-skills 0.16.6 → 0.17.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @neta/skills-neta
2
2
 
3
+ ## 0.17.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add authenticated user commands: `me` (profile/identity check), `get_ap_info` (AP balance breakdown), `get_ap_history` (cursor-paginated AP transactions), and `list_my_artifacts` (offset-paginated generated media with modality/starred filters)
8
+ - API layer: add `apInfo()`, `apDeltaInfo()` to user APIs; add `listArtifacts()` to artifact APIs
9
+ - Documentation: add "Credits & your artifacts" section to neta-creative SKILL.md (EN/ZH); add reference docs `ap-credits.md` and `my-artifacts.md` (EN/ZH)
10
+
11
+ ## 0.16.7
12
+
13
+ ### Patch Changes
14
+
15
+ - update config dir path
16
+
3
17
  ## 0.16.6
4
18
 
5
19
  ### Patch Changes
package/README.md CHANGED
@@ -69,12 +69,13 @@ npx skills add talesofai/neta-skills/skills/neta-adventure
69
69
 
70
70
  ### Available Commands
71
71
 
72
- The skill includes **45 commands** for various tasks:
72
+ The skill includes **49 commands** for various tasks:
73
73
 
74
74
  | Category | Command | Description |
75
75
  |----------|---------|-------------|
76
76
  | **User** | `login` | Start OAuth device login (`request-code`) or complete it (`verify-code`); stores tokens locally on success |
77
77
  | | `logout` | Clear stored CLI session (access token and any in-progress device flow) |
78
+ | | `me` | Show the authenticated user's profile, AP balance, and asset totals |
78
79
  | **Adventure Campaigns** | `create_adventure_campaign` | Create an AI-driven interactive story adventure |
79
80
  | | `update_adventure_campaign` | Update an existing adventure campaign |
80
81
  | | `list_my_adventure_campaigns` | List your created adventure campaigns |
@@ -86,6 +87,10 @@ The skill includes **45 commands** for various tasks:
86
87
  | | `edit_collection` | Edit an existing collection (name, description, tags, status, etc.) |
87
88
  | | `publish_collection` | Publish or update a collection |
88
89
  | | `search_character_or_elementum` | Search reusable TCP building blocks (characters / elements / flows) |
90
+ | | `get_ap_info` | Get detailed AP (Action Points) balance breakdown |
91
+ | | `get_ap_history` | Get paginated AP consumption and recharge history |
92
+ | | `list_my_artifacts` | List your generated media assets with filters |
93
+ | | `upload` | Upload a local or remote media file to create a media artifact |
89
94
  | **Premium** | `get_current_premium_plan` | Get the signed-in user’s current tier and subscription end when applicable |
90
95
  | | `list_premium_plans` | List available premium plans and SPU UUIDs |
91
96
  | | `create_premium_order` | Create an order for a plan (by SPU UUID) |
@@ -299,8 +304,11 @@ pnpm type-check
299
304
  # Run lint
300
305
  pnpm lint
301
306
 
302
- # Test CLI commands locally
303
- pnpm dev <command> [options]
307
+ # Test CLI commands locally (commands without extra flags)
308
+ pnpm dev -- <command>
309
+
310
+ # Subcommands with options: `pnpm` may insert `--` before argv; use the entrypoint directly, e.g.:
311
+ # NODE_ENV=development node src/cli.ts get_ap_history --page_size 5
304
312
 
305
313
  # Build bin scripts
306
314
  pnpm build
package/README.zh_cn.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Node](https://img.shields.io/badge/Node-%3E%3D22-green)](https://nodejs.org/)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://www.typescriptlang.org/)
6
6
 
7
- [简体中文](./README.md) · [English](./README.en.md)
7
+ [简体中文](./README.zh_cn.md) · [English](./README.md)
8
8
 
9
9
  ---
10
10
 
@@ -25,6 +25,7 @@
25
25
  ## ✨ 功能特性
26
26
 
27
27
  - 🎨 **多媒体创作**:使用最新的 AI 模型生成图片、视频和歌曲。
28
+ - ⭐ **会员与订阅**:列出套餐、创建订单、发起 Stripe 结账,并通过 CLI 校验当前档位(全球 API 环境)。
28
29
  - 🔧 **图像与视频处理**:支持移除背景、视频合并等常见素材处理流程。
29
30
  - 👤 **角色与风格管理**:搜索、获取角色与风格元素详情,在创作中标准化复用。
30
31
  - 🏷️ **社区与标签集成**:浏览热门标签、空间、玩法合集与角色。
@@ -69,12 +70,13 @@ npx skills add talesofai/neta-skills/skills/zh_cn/neta-adventure
69
70
 
70
71
  ### 可用指令总览
71
72
 
72
- 当前技能共包含 **36 个命令**,覆盖创作、奇遇、角色与社区探索等场景:
73
+ 当前技能共包含 **49 个命令**,覆盖用户身份、创作、会员、奇遇、VToken 与社区探索等场景:
73
74
 
74
75
  | 分类 | 命令 | 说明 |
75
76
  |------|------|------|
76
77
  | **用户 User** | `login` | OAuth 设备流:默认 `request-code` 发起登录;浏览器完成后用 `verify-code` 换票并写入本地会话 |
77
78
  | | `logout` | 清除本地保存的访问令牌及未完成的设备授权状态 |
79
+ | | `me` | 查看当前登录用户的资料、AP 汇总与作品统计 |
78
80
  | **奇遇剧本 Adventure** | `create_adventure_campaign` | 创建 AI 驱动的交互式故事冒险剧本 |
79
81
  | | `update_adventure_campaign` | 更新已有奇遇剧本 |
80
82
  | | `list_my_adventure_campaigns` | 列出你创建的奇遇剧本 |
@@ -86,6 +88,16 @@ npx skills add talesofai/neta-skills/skills/zh_cn/neta-adventure
86
88
  | | `edit_collection` | 编辑已有玩法合集(名称、描述、标签、状态等) |
87
89
  | | `publish_collection` | 发布或更新玩法合集内容 |
88
90
  | | `search_character_or_elementum` | 搜索可复用的 TCP(角色 / 元素 / 玩法模块) |
91
+ | | `get_ap_info` | 查询 AP(电量)余额明细(临时 / 付费 / 无限期等) |
92
+ | | `get_ap_history` | 分页查询 AP 消耗与充值流水(游标分页) |
93
+ | | `list_my_artifacts` | 分页列出你生成的媒体产物,可按类型 / 是否收藏筛选 |
94
+ | | `upload` | 上传本地或远程媒体文件以创建媒体产物 |
95
+ | **会员 Premium** | `get_current_premium_plan` | 查询当前用户档位与订阅到期时间(如适用) |
96
+ | | `list_premium_plans` | 列出可购套餐与 SPU UUID |
97
+ | | `create_premium_order` | 按 SPU 创建订单 |
98
+ | | `get_premium_order` | 查询单笔订单详情 |
99
+ | | `list_premium_orders` | 分页列出订单 |
100
+ | | `pay_premium_order` | 为未支付订单发起支付(如 Stripe Checkout) |
89
101
  | **VToken 管理** | `create_character` | 创建角色 VToken(消耗电量) |
90
102
  | | `update_character` | 更新现有角色 VToken |
91
103
  | | `list_my_characters` | 列出当前用户创建的所有角色 |
@@ -297,8 +309,11 @@ pnpm type-check
297
309
  # 代码检查(lint)
298
310
  pnpm lint
299
311
 
300
- # 本地调试技能(watch / dev)
301
- pnpm dev <command> [options]
312
+ # 本地调试(无额外参数时)
313
+ pnpm dev -- <command>
314
+
315
+ # 带子命令参数时,pnpm 可能在 argv 中插入 `--`,可直接调用入口,例如:
316
+ # NODE_ENV=development node src/cli.ts get_ap_history --page_size 5
302
317
 
303
318
  # 构建 bin 脚本
304
319
  pnpm build
@@ -65,6 +65,17 @@ export const createArtifactApis = (client) => {
65
65
  })
66
66
  .then((res) => res.data);
67
67
  };
68
+ const listArtifacts = async (params) => {
69
+ const res = await client.get("/v1/artifact/list", {
70
+ params: {
71
+ page_index: params?.page_index ?? 0,
72
+ page_size: params?.page_size ?? 20,
73
+ modality: params?.modality,
74
+ is_starred: params?.is_starred,
75
+ },
76
+ });
77
+ return res.data;
78
+ };
68
79
  return {
69
80
  makeImage,
70
81
  makeVideo,
@@ -76,5 +87,6 @@ export const createArtifactApis = (client) => {
76
87
  artifactDetail,
77
88
  createPicture,
78
89
  createVideo,
90
+ listArtifacts,
79
91
  };
80
92
  };
package/bin/apis/user.js CHANGED
@@ -4,6 +4,19 @@ export const createUserApis = (client) => {
4
4
  const res = await client.get("/v1/user/");
5
5
  return res.data ?? null;
6
6
  },
7
+ apInfo: async () => {
8
+ const res = await client.get("/v2/user/ap_info");
9
+ return res.data;
10
+ },
11
+ apDeltaInfo: async (params) => {
12
+ const res = await client.get("/v2/users/ap-delta-info", {
13
+ params: {
14
+ cursor_id: params?.cursor_id,
15
+ page_size: params?.page_size ?? 10,
16
+ },
17
+ });
18
+ return res.data;
19
+ },
7
20
  subscribeUser: async (params) => {
8
21
  const response = await client.request({
9
22
  method: "PUT",
@@ -0,0 +1,14 @@
1
+ name: get_ap_history
2
+ title: Get My AP History
3
+ description: |
4
+ Get the current user's AP (Action Points) transaction history, paginated by cursor.
5
+
6
+ Each record shows: type (operation type), ap_delta (negative = spent, positive = gained),
7
+ ctime (timestamp), and extra_data.display_name (human-readable label).
8
+
9
+ Pagination: pass the returned next_cursor as cursor_id to fetch the next page.
10
+ When has_next is false, you have reached the end of history.
11
+
12
+ parameters:
13
+ cursor_id: Cursor ID for pagination — pass the last record id from the previous page to get the next page (optional)
14
+ page_size: Number of records per page, defaults to 10 (optional)
@@ -0,0 +1,29 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { parseMeta } from "../../utils/parse_meta.js";
3
+ import { createCommand } from "../factory.js";
4
+ const meta = parseMeta(Type.Object({
5
+ name: Type.String(),
6
+ title: Type.String(),
7
+ description: Type.String(),
8
+ parameters: Type.Object({
9
+ cursor_id: Type.String(),
10
+ page_size: Type.String(),
11
+ }),
12
+ }), import.meta);
13
+ const getApHistoryParameters = Type.Object({
14
+ cursor_id: Type.Optional(Type.Integer({ description: meta.parameters.cursor_id })),
15
+ page_size: Type.Optional(Type.Integer({
16
+ minimum: 1,
17
+ maximum: 50,
18
+ default: 10,
19
+ description: meta.parameters.page_size,
20
+ })),
21
+ });
22
+ export const getApHistory = createCommand({
23
+ name: meta.name,
24
+ title: meta.title,
25
+ description: meta.description,
26
+ inputSchema: getApHistoryParameters,
27
+ }, async ({ cursor_id, page_size }, { apis }) => {
28
+ return apis.user.apDeltaInfo({ cursor_id, page_size });
29
+ });
@@ -0,0 +1,14 @@
1
+ name: get_ap_history
2
+ title: 获取我的 AP 电量变动记录
3
+ description: |
4
+ 获取当前用户的 AP 电量变动历史,支持游标分页。
5
+
6
+ 每条记录包含:type(操作类型)、ap_delta(负数=消耗,正数=获得)、
7
+ ctime(时间戳)、extra_data.display_name(可读的操作名称)。
8
+
9
+ 分页:将返回的 next_cursor 作为 cursor_id 传入即可获取下一页。
10
+ 当 has_next 为 false 时,表示已到达历史末尾。
11
+
12
+ parameters:
13
+ cursor_id: 分页游标,传入上一页最后一条记录的 id 以获取下一页(可选)
14
+ page_size: 每页记录数,默认 10(可选)
@@ -0,0 +1,13 @@
1
+ name: get_ap_info
2
+ title: Get My AP Info
3
+ description: |
4
+ Get the current user's AP (Action Points / Energy) balance details.
5
+
6
+ AP is the credit currency used to generate images, videos, and other AI content.
7
+ Returns: ap (available to spend), ap_limit (daily cap), temp_ap (daily free quota for
8
+ overseas users), paid_ap (purchased AP), and unlimited_until (timestamp if on unlimited plan).
9
+
10
+ Use this before starting a generation task to check if you have sufficient AP.
11
+ For transaction history, use get_ap_history instead.
12
+
13
+ parameters: {}
@@ -0,0 +1,22 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { parseMeta } from "../../utils/parse_meta.js";
3
+ import { createCommand } from "../factory.js";
4
+ const meta = parseMeta(Type.Object({
5
+ name: Type.String(),
6
+ title: Type.String(),
7
+ description: Type.String(),
8
+ }), import.meta);
9
+ export const getApInfo = createCommand({
10
+ name: meta.name,
11
+ title: meta.title,
12
+ description: meta.description,
13
+ }, async (_args, { apis }) => {
14
+ const info = await apis.user.apInfo();
15
+ return {
16
+ ap: info.ap,
17
+ ap_limit: info.ap_limit,
18
+ temp_ap: info.temp_ap ?? null,
19
+ paid_ap: info.paid_ap ?? null,
20
+ unlimited_until: info.unlimited_until,
21
+ };
22
+ });
@@ -0,0 +1,13 @@
1
+ name: get_ap_info
2
+ title: 获取我的 AP 电量信息
3
+ description: |
4
+ 获取当前用户的 AP(电量/行动点数)余额详情。
5
+
6
+ AP 是生成图片、视频等 AI 内容所消耗的虚拟货币。
7
+ 返回:ap(可用电量)、ap_limit(每日上限)、temp_ap(海外用户每日免费配额)、
8
+ paid_ap(付费购买的电量)、unlimited_until(无限套餐到期时间戳,如有)。
9
+
10
+ 在发起生成任务前可调用此命令确认电量是否充足。
11
+ 如需查看消耗明细,请使用 get_ap_history。
12
+
13
+ parameters: {}
@@ -0,0 +1,22 @@
1
+ name: list_my_artifacts
2
+ title: List My Artifacts
3
+ description: |
4
+ List AI-generated assets (images, videos, audio) created by the current user.
5
+
6
+ Returns: has_more (true = more pages exist, increment page_index and fetch again; false = done),
7
+ and list of artifacts. If has_more is true but next page returns an empty list, stop.
8
+
9
+ Each item includes: uuid, status, url (image/video thumbnail), modality (PICTURE / VIDEO / AUDIO),
10
+ is_starred, ctime, and audio_name (for audio).
11
+
12
+ Filter by modality to narrow results — e.g. pass "PICTURE" for images only, "VIDEO" for
13
+ videos only, or "PICTURE,VIDEO" for both. Leave empty to return all types.
14
+
15
+ Artifact uuids can be used with make_video (as image_source) or publish_collection
16
+ to incorporate assets into a story.
17
+
18
+ parameters:
19
+ page_index: Page index for pagination, defaults to 0 (optional)
20
+ page_size: Results per page, 1–100, defaults to 20 (optional)
21
+ modality: Filter by type — PICTURE, VIDEO, or AUDIO; comma-separate for multiple (optional)
22
+ is_starred: Filter to starred/favourited artifacts only — true or false (optional)
@@ -0,0 +1,49 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { parseMeta } from "../../utils/parse_meta.js";
3
+ import { createCommand } from "../factory.js";
4
+ const meta = parseMeta(Type.Object({
5
+ name: Type.String(),
6
+ title: Type.String(),
7
+ description: Type.String(),
8
+ parameters: Type.Object({
9
+ page_index: Type.String(),
10
+ page_size: Type.String(),
11
+ modality: Type.String(),
12
+ is_starred: Type.String(),
13
+ }),
14
+ }), import.meta);
15
+ const listMyArtifactsParameters = Type.Object({
16
+ page_index: Type.Optional(Type.Integer({
17
+ minimum: 0,
18
+ default: 0,
19
+ description: meta.parameters.page_index,
20
+ })),
21
+ page_size: Type.Optional(Type.Integer({
22
+ minimum: 1,
23
+ maximum: 100,
24
+ default: 20,
25
+ description: meta.parameters.page_size,
26
+ })),
27
+ modality: Type.Optional(Type.String({ description: meta.parameters.modality })),
28
+ is_starred: Type.Optional(Type.Boolean({ description: meta.parameters.is_starred })),
29
+ });
30
+ export const listMyArtifacts = createCommand({
31
+ name: meta.name,
32
+ title: meta.title,
33
+ description: meta.description,
34
+ inputSchema: listMyArtifactsParameters,
35
+ }, async ({ page_index, page_size, modality, is_starred }, { apis }) => {
36
+ const resolvedPageIndex = page_index ?? 0;
37
+ const resolvedPageSize = page_size ?? 20;
38
+ const result = await apis.artifact.listArtifacts({
39
+ page_index: resolvedPageIndex,
40
+ page_size: resolvedPageSize,
41
+ modality,
42
+ is_starred,
43
+ });
44
+ return {
45
+ has_more: result.list.length > 0 &&
46
+ (resolvedPageIndex + 1) * resolvedPageSize < result.total,
47
+ list: result.list,
48
+ };
49
+ });
@@ -0,0 +1,23 @@
1
+ name: list_my_artifacts
2
+ title: 获取我的素材列表
3
+ description: |
4
+ 获取当前用户生成的 AI 素材(图片、视频、音频)列表。
5
+
6
+ 返回:has_more(true = 还有更多页,递增 page_index 继续获取;false = 已全部返回),
7
+ 以及素材列表。若 has_more 为 true 但下一页返回空列表,则停止翻页。
8
+
9
+ 每条素材包含:uuid、status、url(图片/视频首帧)、
10
+ modality(PICTURE / VIDEO / AUDIO)、is_starred(是否收藏)、ctime、
11
+ audio_name(音频名称,仅音频类型)。
12
+
13
+ 通过 modality 过滤缩小结果范围 —— 例如传 "PICTURE" 仅返回图片,
14
+ "VIDEO" 仅返回视频,"PICTURE,VIDEO" 返回图片和视频。不传则返回全部类型。
15
+
16
+ 素材 uuid 可传入 make_video(作为 image_source)或 publish_collection
17
+ 以将素材加入作品中。
18
+
19
+ parameters:
20
+ page_index: 分页页码,默认 0(可选)
21
+ page_size: 每页数量,1–100,默认 20(可选)
22
+ modality: 按类型过滤 —— PICTURE、VIDEO 或 AUDIO;多选用逗号分隔(可选)
23
+ is_starred: 仅返回已收藏的素材 —— true 或 false(可选)
@@ -0,0 +1,14 @@
1
+ name: me
2
+ title: Who Am I
3
+ description: |
4
+ Show the current authenticated user's profile and account summary.
5
+
6
+ Returns: uuid, nick_name (nullable), avatar_url (nullable), AP balance
7
+ (ap / ap_limit, nullable if not available), content counts
8
+ (total_collections, total_pictures, total_travel_characters), and active privileges.
9
+
10
+ Related commands:
11
+ - get_ap_info: detailed AP balance breakdown
12
+ - list_my_characters / list_my_elementum: your created characters and elementum
13
+
14
+ parameters: {}
@@ -0,0 +1,30 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { parseMeta } from "../../utils/parse_meta.js";
3
+ import { createCommand } from "../factory.js";
4
+ const meta = parseMeta(Type.Object({
5
+ name: Type.String(),
6
+ title: Type.String(),
7
+ description: Type.String(),
8
+ }), import.meta);
9
+ export const me = createCommand({
10
+ name: meta.name,
11
+ title: meta.title,
12
+ description: meta.description,
13
+ }, async (_args, { user }) => {
14
+ return {
15
+ uuid: user.uuid,
16
+ nick_name: user.nick_name ?? null,
17
+ avatar_url: user.avatar_url,
18
+ ap: user.ap_info?.ap ?? null,
19
+ ap_limit: user.ap_info?.ap_limit ?? null,
20
+ unlimited_until: user.ap_info?.unlimited_until ?? null,
21
+ total_collections: user.total_collections,
22
+ total_pictures: user.total_pictures,
23
+ total_travel_characters: user.total_travel_characters,
24
+ privileges: user.privileges?.map((p) => ({
25
+ type: p.privilege_type,
26
+ is_active: p.is_active,
27
+ valid_until: p.valid_until,
28
+ })) ?? [],
29
+ };
30
+ });
@@ -0,0 +1,13 @@
1
+ name: me
2
+ title: 我是谁
3
+ description: |
4
+ 显示当前已登录用户的个人资料和账户概览。
5
+
6
+ 返回:uuid、昵称(可为 null)、头像(可为 null)、AP 电量(ap / ap_limit,不可用时为 null)、
7
+ 内容数量(作品数、生图数、奇遇角色数)以及当前有效的权益。
8
+
9
+ 相关命令:
10
+ - get_ap_info:详细的 AP 电量明细
11
+ - list_my_characters / list_my_elementum:你创建的捏宝角色和元素
12
+
13
+ parameters: {}
@@ -4,7 +4,7 @@ import { resolve } from "node:path";
4
4
  import envPaths from "env-paths";
5
5
  import { IS_DEV } from "./env.js";
6
6
  import { logger } from "./logger.js";
7
- const paths = envPaths("neta-cli", {
7
+ const paths = envPaths("neta", {
8
8
  suffix: IS_DEV ? "dev" : "",
9
9
  });
10
10
  const CONFIG_DIR = process.env["NETA_CONFIG_DIR"] ?? paths.config;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talesofai/neta-skills",
3
- "version": "0.16.6",
3
+ "version": "0.17.0",
4
4
  "description": "Neta API pi coding agent skills for interacting with Neta API to generate images, videos, songs, and manage characters/elements.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -140,6 +140,32 @@ npx -y @talesofai/neta-skills@latest pay_premium_order --order_uuid "order-uuid"
140
140
 
141
141
  📖 [Premium workflow and limits](./references/premium.md)
142
142
 
143
+ ### Credits & your artifacts
144
+
145
+ AP (Action Points) is consumed by every generation command. Use these to monitor your balance and review generated output.
146
+
147
+ **AP balance**
148
+
149
+ ```bash
150
+ npx -y @talesofai/neta-skills@latest get_ap_info
151
+ ```
152
+
153
+ **AP consumption history**
154
+
155
+ ```bash
156
+ npx -y @talesofai/neta-skills@latest get_ap_history --page_size 10
157
+ ```
158
+
159
+ **List your generated artifacts**
160
+
161
+ ```bash
162
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --page_size 20
163
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --modality PICTURE
164
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --is_starred true
165
+ ```
166
+
167
+ 📖 [AP credits guide](./references/ap-credits.md) · [Artifacts guide](./references/my-artifacts.md)
168
+
143
169
  ## Reference docs
144
170
 
145
171
  | Scenario | Doc |
@@ -152,4 +178,6 @@ npx -y @talesofai/neta-skills@latest pay_premium_order --order_uuid "order-uuid"
152
178
  | 👤 Character queries | [character-search.md](./references/character-search.md) |
153
179
  | 🖊️ Creative remixing | [collection-remix.md](./references/collection-remix.md) |
154
180
  | ⭐ Premium / subscribe | [premium.md](./references/premium.md) |
181
+ | 💡 AP credits | [ap-credits.md](./references/ap-credits.md) |
182
+ | 🖼️ My artifacts | [my-artifacts.md](./references/my-artifacts.md) |
155
183
 
@@ -0,0 +1,44 @@
1
+ # AP Credits
2
+
3
+ Guide for checking AP (Action Points) balance and consumption history.
4
+
5
+ ## get_ap_info
6
+
7
+ Get a detailed breakdown of your current AP balance.
8
+
9
+ ```bash
10
+ npx -y @talesofai/neta-skills@latest get_ap_info
11
+ ```
12
+
13
+ ### Response fields
14
+
15
+ - **`ap`** — currently available AP
16
+ - **`ap_limit`** — daily AP ceiling
17
+ - **`temp_ap`** — free/daily quota AP remaining
18
+ - **`paid_ap`** — purchased AP remaining
19
+ - **`unlimited_until`** — ISO timestamp if on an unlimited plan, otherwise `null`
20
+
21
+ ## get_ap_history
22
+
23
+ Paginated AP consumption and recharge history.
24
+
25
+ ```bash
26
+ npx -y @talesofai/neta-skills@latest get_ap_history
27
+ npx -y @talesofai/neta-skills@latest get_ap_history --cursor_id 0 --page_size 10
28
+ ```
29
+
30
+ ### Parameters
31
+
32
+ - **`cursor_id`** (optional) — cursor for next page; use `next_cursor` from the previous response
33
+ - **`page_size`** (optional, default `10`, max `50`)
34
+
35
+ ### Response fields
36
+
37
+ Each record includes:
38
+
39
+ - **`type`** — what the AP was spent on (e.g. `PICTURE,VERSE`)
40
+ - **`ap_delta`** — change amount (negative for consumption, positive for recharge)
41
+ - **`ctime`** — timestamp
42
+ - **`extra_data.display_name`** — human-readable reason (e.g. "图片生成")
43
+ - **`extra_data.ap_delta_original`** — original cost before discounts
44
+ - **`has_next`** / **`next_cursor`** — pagination controls; keep paginating while `has_next` is `true`
@@ -0,0 +1,35 @@
1
+ # My Artifacts
2
+
3
+ Guide for listing generated media artifacts owned by the current user.
4
+
5
+ ## list_my_artifacts
6
+
7
+ List generated media artifacts (images, videos, audio) owned by the authenticated user.
8
+
9
+ ```bash
10
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --page_size 10 --modality PICTURE
11
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --page_size 5 --is_starred true
12
+ ```
13
+
14
+ ### Parameters
15
+
16
+ - **`page_index`** (optional, default `0`)
17
+ - **`page_size`** (optional, default `20`, max `100`)
18
+ - **`modality`** (optional) — filter by `PICTURE`, `VIDEO`, `AUDIO`; comma-separated for multiple
19
+ - **`is_starred`** (optional boolean) — filter starred items only
20
+
21
+ ### Pagination
22
+
23
+ Keep incrementing `page_index` while `has_more` is `true`. Stop when `has_more` is `false` or `list` is empty.
24
+
25
+ ### Response
26
+
27
+ - **`has_more`** — `true` if more pages exist
28
+ - **`list`** — array of artifact records:
29
+ - `uuid` — artifact id; use this in `make_video --image_source`, `remove_background`, or collection commands
30
+ - `status` — e.g. `SUCCESS`, `PENDING`, `FAILED`
31
+ - `url` — media URL
32
+ - `modality` — `PICTURE` / `VIDEO` / `AUDIO`
33
+ - `is_starred` — starred flag
34
+ - `ctime` / `mtime` — creation and modification times
35
+ - `audio_name` — name if audio artifact
@@ -86,6 +86,32 @@ npx -y @talesofai/neta-skills@latest read_collection --uuid "作品-uuid"
86
86
 
87
87
  📖 [详细指南](./references/collection-remix.md)
88
88
 
89
+ ### 积分与我的作品
90
+
91
+ AP(Action Points,行动电量)在每次生成命令时消耗。使用以下命令查看余额和回顾生成记录。
92
+
93
+ **AP 余额**
94
+
95
+ ```bash
96
+ npx -y @talesofai/neta-skills@latest get_ap_info
97
+ ```
98
+
99
+ **AP 消耗历史**
100
+
101
+ ```bash
102
+ npx -y @talesofai/neta-skills@latest get_ap_history --page_size 10
103
+ ```
104
+
105
+ **列出我的作品**
106
+
107
+ ```bash
108
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --page_size 20
109
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --modality PICTURE
110
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --is_starred true
111
+ ```
112
+
113
+ 📖 [AP 积分指南](./references/ap-credits.md) · [作品指南](./references/my-artifacts.md)
114
+
89
115
  ## 参考文档
90
116
 
91
117
  | 场景 | 文档 |
@@ -97,3 +123,5 @@ npx -y @talesofai/neta-skills@latest read_collection --uuid "作品-uuid"
97
123
  | 📤 本地上传 | [media-upload.md](./references/media-upload.md) |
98
124
  | 👤 角色查询 | [character-search.md](./references/character-search.md) |
99
125
  | 🖊️ 内容创作思路 | [collection-remix.md](./references/collection-remix.md) |
126
+ | 💡 AP 积分 | [ap-credits.md](./references/ap-credits.md) |
127
+ | 🖼️ 我的作品 | [my-artifacts.md](./references/my-artifacts.md) |
@@ -0,0 +1,44 @@
1
+ # AP 积分
2
+
3
+ 查看 AP(Action Points,行动电量)余额和消耗历史的指南。
4
+
5
+ ## get_ap_info
6
+
7
+ 获取当前 AP 余额的详细明细。
8
+
9
+ ```bash
10
+ npx -y @talesofai/neta-skills@latest get_ap_info
11
+ ```
12
+
13
+ ### 响应字段
14
+
15
+ - **`ap`** — 当前可用 AP
16
+ - **`ap_limit`** — 每日 AP 上限
17
+ - **`temp_ap`** — 免费/每日额度 AP 剩余
18
+ - **`paid_ap`** — 购买的 AP 剩余
19
+ - **`unlimited_until`** — 无限套餐到期时间戳,否则为 `null`
20
+
21
+ ## get_ap_history
22
+
23
+ 分页获取 AP 消耗和充值历史。
24
+
25
+ ```bash
26
+ npx -y @talesofai/neta-skills@latest get_ap_history
27
+ npx -y @talesofai/neta-skills@latest get_ap_history --cursor_id 0 --page_size 10
28
+ ```
29
+
30
+ ### 参数
31
+
32
+ - **`cursor_id`**(可选)— 下一页游标;使用上一次响应的 `next_cursor`
33
+ - **`page_size`**(可选,默认 `10`,最大 `50`)
34
+
35
+ ### 响应字段
36
+
37
+ 每条记录包含:
38
+
39
+ - **`type`** — AP 消耗来源(如 `PICTURE,VERSE`)
40
+ - **`ap_delta`** — 变化量(消耗为负,充值为正)
41
+ - **`ctime`** — 时间戳
42
+ - **`extra_data.display_name`** — 可读原因(如"图片生成")
43
+ - **`extra_data.ap_delta_original`** — 折扣前原始消耗量
44
+ - **`has_next`** / **`next_cursor`** — 翻页控制;`has_next` 为 `true` 时继续翻页
@@ -0,0 +1,35 @@
1
+ # 我的作品
2
+
3
+ 列出当前用户生成媒体作品的指南。
4
+
5
+ ## list_my_artifacts
6
+
7
+ 列出已登录用户生成的媒体作品(图片、视频、音频)。
8
+
9
+ ```bash
10
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --page_size 10 --modality PICTURE
11
+ npx -y @talesofai/neta-skills@latest list_my_artifacts --page_size 5 --is_starred true
12
+ ```
13
+
14
+ ### 参数
15
+
16
+ - **`page_index`**(可选,默认 `0`)
17
+ - **`page_size`**(可选,默认 `20`,最大 `100`)
18
+ - **`modality`**(可选)— 按 `PICTURE`、`VIDEO`、`AUDIO` 过滤;多值用逗号分隔
19
+ - **`is_starred`**(可选布尔值)— 仅显示收藏项
20
+
21
+ ### 翻页
22
+
23
+ 持续递增 `page_index` 直到 `has_more` 为 `false`,或 `list` 为空时停止。
24
+
25
+ ### 响应
26
+
27
+ - **`has_more`** — `true` 表示还有更多页
28
+ - **`list`** — 作品记录数组:
29
+ - `uuid` — 作品 ID;可用于 `make_video --image_source`、`remove_background` 或合集命令
30
+ - `status` — 例如 `SUCCESS`、`PENDING`、`FAILED`
31
+ - `url` — 媒体 URL
32
+ - `modality` — `PICTURE` / `VIDEO` / `AUDIO`
33
+ - `is_starred` — 收藏标记
34
+ - `ctime` / `mtime` — 创建和修改时间
35
+ - `audio_name` — 音频作品的名称