@akilles/soundcloud-watcher 1.0.0 → 1.0.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/LICENSE +21 -0
- package/README.md +215 -0
- package/package.json +10 -7
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Akilles William Lindstedt
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# SoundCloud Watcher - OpenClaw Plugin
|
|
2
|
+
|
|
3
|
+
Monitor your SoundCloud account and track artist releases. Get notified when someone follows you, likes your tracks, or when artists you care about drop new music.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Features
|
|
7
|
+
|
|
8
|
+
- **Follower tracking** - See who followed you recently
|
|
9
|
+
- **Track engagement** - Monitor who liked your tracks
|
|
10
|
+
- **New releases** - Get notifications when tracked artists release new music
|
|
11
|
+
- **Smart API usage** - Only fetches what changed, automatically skips dormant artists (configurable threshold)
|
|
12
|
+
- **Rate limit handling** - Exponential backoff for API reliability
|
|
13
|
+
- **Automatic background checking** - Configurable interval (default: 6 hours)
|
|
14
|
+
- **Session-agnostic notifications** - Works with any OpenClaw session (Telegram, Discord, etc.)
|
|
15
|
+
|
|
16
|
+
## Prerequisites
|
|
17
|
+
|
|
18
|
+
- OpenClaw gateway running
|
|
19
|
+
- Node.js 22+ installed
|
|
20
|
+
- SoundCloud API credentials ([get them here](https://soundcloud.com/you/apps))
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### 1. Install
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# From npm (recommended)
|
|
28
|
+
openclaw plugins install @akilles/soundcloud-watcher
|
|
29
|
+
|
|
30
|
+
# Or from source
|
|
31
|
+
git clone https://github.com/wlinds/openclaw-soundcloud-watcher
|
|
32
|
+
openclaw plugins install -l ./openclaw-soundcloud-watcher/openclaw-soundcloud-watcher
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### 2. Get SoundCloud Credentials
|
|
37
|
+
|
|
38
|
+
1. Log into SoundCloud
|
|
39
|
+
2. Go to [soundcloud.com/you/apps](https://soundcloud.com/you/apps)
|
|
40
|
+
3. Click "Register a new application"
|
|
41
|
+
4. Fill in name and website
|
|
42
|
+
5. Copy your **Client ID** and **Client Secret** for next step
|
|
43
|
+
|
|
44
|
+
### 3. Configure
|
|
45
|
+
|
|
46
|
+
Run the setup command to see the configuration template:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
/soundcloud-setup
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then edit `~/.openclaw/openclaw.json` and paste your credentials:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"plugins": {
|
|
57
|
+
"enabled": true,
|
|
58
|
+
"entries": {
|
|
59
|
+
"soundcloud-watcher": {
|
|
60
|
+
"enabled": true,
|
|
61
|
+
"config": {
|
|
62
|
+
"clientId": "YOUR_CLIENT_ID",
|
|
63
|
+
"clientSecret": "YOUR_CLIENT_SECRET",
|
|
64
|
+
"username": "your_soundcloud_username",
|
|
65
|
+
"checkIntervalHours": 6,
|
|
66
|
+
"myTracksLimit": 10,
|
|
67
|
+
"dormantDays": 90,
|
|
68
|
+
"sessionKey": "agent:main:main"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 4. Restart & Verify
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
openclaw gateway restart
|
|
80
|
+
openclaw plugins list # Should show soundcloud-watcher
|
|
81
|
+
/soundcloud-status # Should show your account info
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 5. Start Tracking your favorite artist
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
/soundcloud-add lindstedt
|
|
88
|
+
/soundcloud-add noisia
|
|
89
|
+
/soundcloud-list
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Done! Updates arrive automatically every 6 hours.
|
|
93
|
+
|
|
94
|
+
## Commands
|
|
95
|
+
|
|
96
|
+
| Command | Description |
|
|
97
|
+
|---------|-------------|
|
|
98
|
+
| `/soundcloud-setup` | Interactive setup guide with config status |
|
|
99
|
+
| `/soundcloud-status` | Show tracking status and account info |
|
|
100
|
+
| `/soundcloud-check` | Run immediate check (don't wait for interval) |
|
|
101
|
+
| `/soundcloud-add <username>` | Track artist(s) - space-separated |
|
|
102
|
+
| `/soundcloud-remove <username>` | Untrack artist |
|
|
103
|
+
| `/soundcloud-list` | List all tracked artists |
|
|
104
|
+
|
|
105
|
+
## Configuration Options
|
|
106
|
+
|
|
107
|
+
All options in `~/.openclaw/openclaw.json` under `plugins.entries.soundcloud-watcher.config`:
|
|
108
|
+
|
|
109
|
+
| Option | Type | Required | Default | Description |
|
|
110
|
+
|--------|------|----------|---------|-------------|
|
|
111
|
+
| `enabled` | boolean | No | true | Enable/disable watcher |
|
|
112
|
+
| `clientId` | string | Yes | - | SoundCloud API Client ID |
|
|
113
|
+
| `clientSecret` | string | Yes | - | SoundCloud API Client Secret |
|
|
114
|
+
| `username` | string | Yes | - | Your SoundCloud username |
|
|
115
|
+
| `checkIntervalHours` | number | No | 6 | Hours between automatic checks |
|
|
116
|
+
| `myTracksLimit` | number | No | 10 | Number of your tracks to monitor |
|
|
117
|
+
| `dormantDays` | number | No | 90 | Days before artist is considered dormant |
|
|
118
|
+
| `sessionKey` | string | No | `agent:main:main` | OpenClaw session for notifications |
|
|
119
|
+
|
|
120
|
+
## Architecture
|
|
121
|
+
|
|
122
|
+
The plugin consists of three main components:
|
|
123
|
+
|
|
124
|
+
- **Plugin entry** ([openclaw-soundcloud-watcher/index.ts](openclaw-soundcloud-watcher/index.ts)) - Manages lifecycle, spawns watcher process
|
|
125
|
+
- **Watcher** ([openclaw-soundcloud-watcher/soundcloud_watcher.ts](openclaw-soundcloud-watcher/soundcloud_watcher.ts)) - Pure TypeScript implementation of monitoring logic
|
|
126
|
+
- **Manifest** ([openclaw-soundcloud-watcher/openclaw.plugin.json](openclaw-soundcloud-watcher/openclaw.plugin.json)) - Configuration schema and plugin metadata
|
|
127
|
+
|
|
128
|
+
### File Locations
|
|
129
|
+
|
|
130
|
+
After installation:
|
|
131
|
+
|
|
132
|
+
- **Plugin code:** `~/.openclaw/extensions/soundcloud-watcher/`
|
|
133
|
+
- **Config:** `~/.openclaw/openclaw.json`
|
|
134
|
+
- **Credentials:** `~/.openclaw/secrets/soundcloud.env`
|
|
135
|
+
- **Account data:** `~/.openclaw/data/soundcloud_tracking.json`
|
|
136
|
+
- **Artist data:** `~/.openclaw/data/artists.json`
|
|
137
|
+
- **Backoff state:** `~/.openclaw/soundcloud_backoff.json`
|
|
138
|
+
|
|
139
|
+
## Troubleshooting
|
|
140
|
+
|
|
141
|
+
### Plugin not loading
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
openclaw plugins list
|
|
145
|
+
openclaw gateway logs
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Check that:
|
|
149
|
+
- Plugin shows as `enabled: true` in list
|
|
150
|
+
- Gateway logs don't show errors
|
|
151
|
+
|
|
152
|
+
Verify plugin directory exists:
|
|
153
|
+
```bash
|
|
154
|
+
ls -la ~/.openclaw/extensions/soundcloud-watcher/
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### API rate limits
|
|
158
|
+
|
|
159
|
+
If you hit rate limits:
|
|
160
|
+
1. Increase `checkIntervalHours` in config (default: 6)
|
|
161
|
+
2. Increase `dormantDays` to skip inactive artists sooner (default: 90)
|
|
162
|
+
3. Check SoundCloud API status
|
|
163
|
+
|
|
164
|
+
### No notifications
|
|
165
|
+
|
|
166
|
+
Check gateway session key in the plugin config (default is `agent:main:main`).
|
|
167
|
+
|
|
168
|
+
Verify gateway is running:
|
|
169
|
+
```bash
|
|
170
|
+
openclaw gateway status
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Setup help
|
|
174
|
+
|
|
175
|
+
Run `/soundcloud-setup` for detailed instructions with current config status.
|
|
176
|
+
|
|
177
|
+
## Updating
|
|
178
|
+
|
|
179
|
+
If installed via symlink (`-l`):
|
|
180
|
+
```bash
|
|
181
|
+
cd /path/to/openclaw-soundcloud-watcher
|
|
182
|
+
git pull
|
|
183
|
+
openclaw gateway restart
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
If installed from npm:
|
|
187
|
+
```bash
|
|
188
|
+
openclaw plugins install @akilles/soundcloud-watcher # Gets latest
|
|
189
|
+
openclaw gateway restart
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Uninstalling
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
openclaw plugins disable soundcloud-watcher
|
|
196
|
+
openclaw plugins uninstall soundcloud-watcher
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Clean up data (optional):
|
|
200
|
+
```bash
|
|
201
|
+
rm -rf ~/.openclaw/data/soundcloud_tracking.json
|
|
202
|
+
rm -rf ~/.openclaw/data/artists.json
|
|
203
|
+
rm -rf ~/.openclaw/secrets/soundcloud.env
|
|
204
|
+
rm -rf ~/.openclaw/soundcloud_backoff.json
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Support
|
|
208
|
+
|
|
209
|
+
- **GitHub:** https://github.com/wlinds/openclaw-soundcloud-watcher
|
|
210
|
+
- **Issues:** https://github.com/wlinds/openclaw-soundcloud-watcher/issues
|
|
211
|
+
- **OpenClaw Docs:** https://docs.openclaw.ai/plugin
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
MIT - See [LICENSE](LICENSE) for details
|
package/package.json
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akilles/soundcloud-watcher",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "OpenClaw plugin to monitor SoundCloud account and track artist releases",
|
|
5
5
|
"main": "index.ts",
|
|
6
|
-
"openclaw
|
|
7
|
-
"
|
|
8
|
-
|
|
6
|
+
"openclaw": {
|
|
7
|
+
"extensions": [
|
|
8
|
+
"index.ts"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
9
11
|
"scripts": {
|
|
10
12
|
"preinstall": "echo 'Installing SoundCloud Watcher dependencies...'",
|
|
11
|
-
"postinstall": "echo '
|
|
13
|
+
"postinstall": "echo 'SoundCloud Watcher installed! Run /soundcloud-setup to configure.'",
|
|
12
14
|
"test": "echo \"No tests yet\""
|
|
13
15
|
},
|
|
14
16
|
"keywords": [
|
|
@@ -19,7 +21,7 @@
|
|
|
19
21
|
"monitoring",
|
|
20
22
|
"typescript"
|
|
21
23
|
],
|
|
22
|
-
"author": "Akilles William
|
|
24
|
+
"author": "Akilles William Lindstedt",
|
|
23
25
|
"license": "MIT",
|
|
24
26
|
"repository": {
|
|
25
27
|
"type": "git",
|
|
@@ -34,7 +36,8 @@
|
|
|
34
36
|
"index.ts",
|
|
35
37
|
"soundcloud_watcher.ts",
|
|
36
38
|
"openclaw.plugin.json",
|
|
37
|
-
"README.md"
|
|
39
|
+
"README.md",
|
|
40
|
+
"LICENSE"
|
|
38
41
|
],
|
|
39
42
|
"dependencies": {
|
|
40
43
|
"tsx": "^4.0.0"
|