通过Reddit API提交帖子(文本或链接)并读取用户身份及内容。需携带User-Agent,先验证身份再操作,注意速率限制和子版块权限。
Trigger Scenarios
Install
npx skills add NeverSight/learn-skills.dev --skill reddit -g -y
SKILL.md
Frontmatter
{
"name": "reddit",
"license": "Apache-2.0",
"metadata": {
"author": "acedatacloud",
"version": "1.0"
},
"connections": [
"reddit"
],
"description": "Submit posts (link or text) to subreddits and read your Reddit identity \/ content via the Reddit API. Use when the user mentions Reddit, posting to a subreddit, submitting a link or self-post, or checking their Reddit profile \/ submissions.",
"when_to_use": "Trigger when the user wants to submit a post to a subreddit (link or\nself\/text post), or read their own Reddit identity and submissions.\nPosting to a subreddit is public and subject to that subreddit's rules\n\/ karma requirements — confirm the target subreddit, title and body\nbefore submitting.\n",
"allowed_tools": [
"Bash"
]
}
Call the Reddit API (OAuth endpoints) with curl + jq. The user's bearer
token is in $REDDIT_TOKEN. Every call MUST send a User-Agent header or
Reddit returns 429. Use the OAuth host https://oauth.reddit.com.
UA="web:cloud.acedata.connectors:v1.0 (by /u/acedatacloud)"
Errors are JSON; a submit returns {"json":{"errors":[...], "data":{...}}} —
if errors is non-empty, show them verbatim. 401 → token expired, re-connect.
Always start by confirming identity:
curl -sS -H "Authorization: Bearer $REDDIT_TOKEN" -H "User-Agent: $UA" \
"https://oauth.reddit.com/api/v1/me" | jq '{name, total_karma, link_karma}'
Submit a post
Confirm the subreddit + title + body with the user first. sr is the
subreddit name WITHOUT the r/ prefix.
# Self (text) post: kind=self + text. Link post: kind=link + url.
curl -sS -X POST "https://oauth.reddit.com/api/submit" \
-H "Authorization: Bearer $REDDIT_TOKEN" -H "User-Agent: $UA" \
--data-urlencode "sr=test" \
--data-urlencode "kind=self" \
--data-urlencode "title=My title" \
--data-urlencode "text=My self-post body in markdown" \
--data-urlencode "api_type=json" \
| jq '.json | {errors, url: .data.url, id: .data.id}'
For a link post:
curl -sS -X POST "https://oauth.reddit.com/api/submit" \
-H "Authorization: Bearer $REDDIT_TOKEN" -H "User-Agent: $UA" \
--data-urlencode "sr=test" --data-urlencode "kind=link" \
--data-urlencode "title=My title" --data-urlencode "url=https://example.com" \
--data-urlencode "api_type=json" | jq '.json'
Read my submissions
curl -sS -H "Authorization: Bearer $REDDIT_TOKEN" -H "User-Agent: $UA" \
"https://oauth.reddit.com/user/USERNAME/submitted?limit=10" \
| jq '.data.children[] | .data | {title, subreddit, ups, num_comments, permalink}'
Gotchas
- User-Agent is mandatory on every request — omitting it →
429. - Many subreddits gate posting on account age / karma / flair; a submit can
return
errorslike[["SUBREDDIT_NOTALLOWED", ...]]— surface it and tryr/testto validate the flow. - Respect rate limits: read the
X-Ratelimit-Remainingresponse header; space out bulk submits. - Use
r/testas a safe target when validating that the connection works.
Version History
- e0220ca Current 2026-07-05 22:55


