@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.
Files changed (3) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. 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.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.extensions": [
7
- "index.ts"
8
- ],
6
+ "openclaw": {
7
+ "extensions": [
8
+ "index.ts"
9
+ ]
10
+ },
9
11
  "scripts": {
10
12
  "preinstall": "echo 'Installing SoundCloud Watcher dependencies...'",
11
- "postinstall": "echo 'SoundCloud Watcher installed! Run /soundcloud-setup to configure.'",
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 Lndstedt",
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"