@acedatacloud/skills 2026.713.0 → 2026.713.2
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/AGENTS.md +1 -0
- package/README.md +2 -0
- package/package.json +1 -1
- package/skills/reddit/SKILL.md +65 -52
- package/skills/reddit/scripts/reddit.py +540 -0
- package/skills/reddit/tests/test_reddit.py +378 -0
- package/skills/tgstat/SKILL.md +139 -83
- package/skills/tgstat/scripts/tgstat.py +652 -0
package/AGENTS.md
CHANGED
|
@@ -29,6 +29,7 @@ Skills are located in the `skills/` directory (also mirrored to `.agents/skills/
|
|
|
29
29
|
### AI Chat & Tools
|
|
30
30
|
- **ai-chat** — Unified LLM gateway — GPT, Claude, Gemini, Kimi, Grok (50+ models)
|
|
31
31
|
- **google-search** — Search the web, images, news, maps, places, and videos via Google
|
|
32
|
+
- **tgstat** — Discover and analyze public Telegram channels/groups (no login; optional TGStat API Token)
|
|
32
33
|
- **face-transform** — Face analysis, beautification, age/gender transform, swap, cartoon
|
|
33
34
|
- **short-url** — Create and manage short URLs
|
|
34
35
|
- **onepage-pdf** — Convert an HTML page into one tall single-page PDF (local; no API token; needs Python + pymupdf + Chrome/Edge)
|
package/README.md
CHANGED
|
@@ -48,6 +48,7 @@ Compatible with **30+ AI coding agents** via the [agentskills.io](https://agents
|
|
|
48
48
|
|-------|-------------|
|
|
49
49
|
| [ai-chat](skills/ai-chat/) | Unified LLM gateway — GPT, Claude, Gemini, Kimi, Grok (50+ models) |
|
|
50
50
|
| [google-search](skills/google-search/) | Search the web, images, news, maps, places, and videos via Google |
|
|
51
|
+
| [tgstat](skills/tgstat/) | Discover and analyze public Telegram channels/groups; no login required, optional TGStat API Token |
|
|
51
52
|
| [face-transform](skills/face-transform/) | Face analysis, beautification, age/gender transform, swap, cartoon |
|
|
52
53
|
| [short-url](skills/short-url/) | Create and manage short URLs |
|
|
53
54
|
| [onepage-pdf](skills/onepage-pdf/) | Convert an HTML page into one tall single-page PDF — no pagination breaks (local, no token) |
|
|
@@ -75,6 +76,7 @@ These skills drive third-party connectors users wire up at [auth.acedata.cloud/u
|
|
|
75
76
|
| [didi-ride](skills/didi-ride/) | Book DiDi rides, estimate fares, query/cancel orders, plan routes via the DiDi MCP | `didi` (BYOC) |
|
|
76
77
|
| [wecom](skills/wecom/) | WeCom (企业微信) self-built app — contacts, app messages, WeDoc, schedules, meetings | `wecom` (BYOC) |
|
|
77
78
|
| [tencent-docs](skills/tencent-docs/) | Create / read / list / search / manage Tencent Docs — docs, sheets, slides, mind maps, flowcharts | `tencentdocs` (BYOC) |
|
|
79
|
+
| [tgstat](skills/tgstat/) | Public Telegram source discovery, rankings, and audience research | `tgstat` (public; optional Token) |
|
|
78
80
|
|
|
79
81
|
## Prerequisites
|
|
80
82
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acedatacloud/skills",
|
|
3
|
-
"version": "2026.713.
|
|
3
|
+
"version": "2026.713.2",
|
|
4
4
|
"description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-skills",
|
package/skills/reddit/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reddit
|
|
3
|
-
description: Submit posts (link or text) to subreddits and read your Reddit identity /
|
|
3
|
+
description: Submit posts (link or text) to subreddits and read your Reddit identity / submissions using either official OAuth or your own Reddit login cookies. Use when the user mentions Reddit, posting to a subreddit, submitting a link or self-post, or checking their Reddit profile / submissions.
|
|
4
4
|
when_to_use: |
|
|
5
5
|
Trigger when the user wants to submit a post to a subreddit (link or
|
|
6
6
|
self/text post), or read their own Reddit identity and submissions.
|
|
@@ -8,75 +8,88 @@ when_to_use: |
|
|
|
8
8
|
/ karma requirements — confirm the target subreddit, title and body
|
|
9
9
|
before submitting.
|
|
10
10
|
connections: [reddit]
|
|
11
|
-
allowed_tools: [Bash]
|
|
11
|
+
allowed_tools: [Bash, publish_artifact]
|
|
12
12
|
license: Apache-2.0
|
|
13
13
|
metadata:
|
|
14
14
|
author: acedatacloud
|
|
15
|
-
version: "
|
|
15
|
+
version: "2.0"
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
token is in `$REDDIT_TOKEN`. **Every call MUST send a `User-Agent` header** or
|
|
20
|
-
Reddit returns `429`. Use the OAuth host `https://oauth.reddit.com`.
|
|
18
|
+
# Reddit — OAuth or login-cookie access
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
UA="web:cloud.acedata.connectors:v1.0 (by /u/acedatacloud)"
|
|
24
|
-
```
|
|
20
|
+
The connector injects exactly one of these credentials:
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
- `REDDIT_COOKIES`: JSON cookie array captured by the ACE browser extension.
|
|
23
|
+
It includes `reddit_session` and grants full account access. **Secret — never
|
|
24
|
+
echo, print, log or return it.**
|
|
25
|
+
- `REDDIT_TOKEN`: official OAuth bearer token (`identity read submit`).
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
The helper automatically prefers Cookie when present and otherwise uses OAuth.
|
|
28
|
+
It sends Reddit's required descriptive User-Agent and never forwards cookies
|
|
29
|
+
outside `reddit.com`.
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
curl -sS -H "Authorization: Bearer $REDDIT_TOKEN" -H "User-Agent: $UA" \
|
|
33
|
-
"https://oauth.reddit.com/api/v1/me" | jq '{name, total_karma, link_karma}'
|
|
34
|
-
```
|
|
31
|
+
## Script resolution
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
curl -sS -X POST "https://oauth.reddit.com/api/submit" \
|
|
44
|
-
-H "Authorization: Bearer $REDDIT_TOKEN" -H "User-Agent: $UA" \
|
|
45
|
-
--data-urlencode "sr=test" \
|
|
46
|
-
--data-urlencode "kind=self" \
|
|
47
|
-
--data-urlencode "title=My title" \
|
|
48
|
-
--data-urlencode "text=My self-post body in markdown" \
|
|
49
|
-
--data-urlencode "api_type=json" \
|
|
50
|
-
| jq '.json | {errors, url: .data.url, id: .data.id}'
|
|
33
|
+
Bash calls do not share shell variables. Resolve the helper inside **every**
|
|
34
|
+
fenced Bash invocation before using it:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
|
|
38
|
+
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
39
|
+
python3 "$R" whoami
|
|
51
40
|
```
|
|
52
41
|
|
|
53
|
-
|
|
42
|
+
If authentication fails, ask the user to reconnect at
|
|
43
|
+
<https://auth.acedata.cloud/user/connections>. Do not loop-retry a blocked or
|
|
44
|
+
expired session.
|
|
45
|
+
|
|
46
|
+
## Read
|
|
54
47
|
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
--data-urlencode "api_type=json" | jq '.json'
|
|
48
|
+
```sh
|
|
49
|
+
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
|
|
50
|
+
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
51
|
+
python3 "$R" whoami
|
|
52
|
+
python3 "$R" submissions --limit 10
|
|
61
53
|
```
|
|
62
54
|
|
|
63
|
-
##
|
|
55
|
+
## Submit a post — GATED
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
```
|
|
57
|
+
Posting is public. **Always show the subreddit, final title and final body/URL,
|
|
58
|
+
then obtain explicit confirmation.** Without a trailing `--confirm`, both write
|
|
59
|
+
commands are dry-runs and make no network request.
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
|
|
63
|
+
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
70
64
|
|
|
71
|
-
|
|
65
|
+
# Text post: use a file for long Markdown.
|
|
66
|
+
python3 "$R" submit-text --subreddit test --title "My title" --text-file post.md
|
|
67
|
+
python3 "$R" submit-text --subreddit test --title "My title" --text-file post.md --confirm
|
|
68
|
+
|
|
69
|
+
# Link post.
|
|
70
|
+
python3 "$R" submit-link --subreddit test --title "My title" --url "https://example.com"
|
|
71
|
+
python3 "$R" submit-link --subreddit test --title "My title" --url "https://example.com" --confirm
|
|
72
|
+
```
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
-
|
|
74
|
+
`--confirm` is honored only when it is the final argument. A title or body that
|
|
75
|
+
contains the text `--confirm` can never trigger a write.
|
|
76
|
+
|
|
77
|
+
## Safety and failure handling
|
|
78
|
+
|
|
79
|
+
- Never print `REDDIT_COOKIES`, `REDDIT_TOKEN`, `reddit_session` or the modhash.
|
|
80
|
+
- Do not vote, send private messages, evade bans, automate engagement, or
|
|
81
|
+
cross-post identical content. This skill intentionally exposes none of those
|
|
82
|
+
operations.
|
|
83
|
+
- Follow each subreddit's rules. Account age, karma and flair requirements can
|
|
84
|
+
reject a post; report the rejection without exposing Reddit's raw authenticated
|
|
85
|
+
response, which may contain reflected credential material.
|
|
86
|
+
- Do not retry a write automatically. A timeout may occur after Reddit accepted
|
|
87
|
+
it, and replaying could create a duplicate.
|
|
88
|
+
- Respect rate limits and never bulk-submit. Use `r/test` only for a deliberate
|
|
89
|
+
end-to-end validation.
|
|
90
|
+
- Cookie mode drives Reddit's first-party web JSON endpoints and may drift when
|
|
91
|
+
Reddit changes its site. Report unexpected HTML or route errors as upstream
|
|
92
|
+
drift instead of guessing another private endpoint.
|
|
80
93
|
|
|
81
94
|
|
|
82
95
|
## Record the output
|