yt-briefing 1.0.0 → 1.1.1
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/README.md +16 -4
- package/data.example/README.md +2 -1
- package/dist/lib/llm.js +7 -3
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +4 -2
package/README.md
CHANGED
|
@@ -61,8 +61,9 @@ YT_BRIEFING_YOUTUBE_API_KEY=<key> # console.cloud.google.com → enable "YouT
|
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
Optional extras: `YT_BRIEFING_MODEL` picks the Claude model for filtering and summaries (default
|
|
64
|
-
`
|
|
65
|
-
transcript fetches through a proxy on
|
|
64
|
+
`sonnet`, any alias or model name `claude --model` accepts, `haiku` to go lighter on your plan's
|
|
65
|
+
usage limits), and `YT_BRIEFING_PROXY` routes transcript fetches through a proxy on
|
|
66
|
+
datacenter/VPS IPs.
|
|
66
67
|
|
|
67
68
|
4. Onboard:
|
|
68
69
|
|
|
@@ -122,6 +123,9 @@ it to go deeper, lower it for a quicker pass:
|
|
|
122
123
|
Open your project in Claude Code and type `/yt`. The briefing opens in a pane: the summary, and
|
|
123
124
|
under it four keys.
|
|
124
125
|
|
|
126
|
+
The keys work while the pane has the focus (it takes it when it opens, `/yt` from an empty
|
|
127
|
+
prompt), and Esc closes it.
|
|
128
|
+
|
|
125
129
|
| Key | What it does |
|
|
126
130
|
|-----|--------------|
|
|
127
131
|
| `1` OK | Neutral. The video is marked as seen, the next one loads. |
|
|
@@ -132,9 +136,12 @@ under it four keys.
|
|
|
132
136
|
The **Comment** field takes anything else. Type what you think in your own words ("too many panel
|
|
133
137
|
shows, skip those") and press Enter: Claude turns it into a standing rule for that channel and
|
|
134
138
|
infers the rating. `? your question` starts research with that question, `stop` closes the pane.
|
|
139
|
+
Claude Code on a phone has no text fields, so there the pane shows the four keys only.
|
|
135
140
|
|
|
136
|
-
Each step is the engine, not a chat turn: rating a video
|
|
137
|
-
the next summary is usually ready before you have finished reading the current one.
|
|
141
|
+
Each step is the engine, not a chat turn: rating a video takes no turn and no context of your
|
|
142
|
+
session, and the next summary is usually ready before you have finished reading the current one.
|
|
143
|
+
The summaries themselves still count toward your Claude plan's usage, like any other Claude Code
|
|
144
|
+
work.
|
|
138
145
|
|
|
139
146
|
`/yt` is a Claude Code mod (a plugin in `.claude/skills/yt-briefing/`). Claude Code loads it on
|
|
140
147
|
its own once you trust the project folder. If `/yt` is not listed, start a fresh session. To
|
|
@@ -195,6 +202,11 @@ at a separate private repo) and commit after each rating: set `"after_rate"` in
|
|
|
195
202
|
|
|
196
203
|
## Running on a VPS
|
|
197
204
|
|
|
205
|
+
Claude Code has to be installed and logged in on the server too, because the engine runs
|
|
206
|
+
`claude -p` there. With no browser on the box, `claude setup-token` creates a long-lived login
|
|
207
|
+
token for your subscription. An `ANTHROPIC_API_KEY` alone is not enough: the engine removes it
|
|
208
|
+
for its calls (see above), so a server set up only with an API key fails with a login error.
|
|
209
|
+
|
|
198
210
|
YouTube blocks datacenter IPs, so transcript fetches fail on most servers. Route them through a
|
|
199
211
|
free Cloudflare WARP proxy. See [docs/warp-proxy.md](./docs/warp-proxy.md).
|
|
200
212
|
|
package/data.example/README.md
CHANGED
|
@@ -5,7 +5,8 @@ reference for the shape of that data, and a home for the channel-profile templat
|
|
|
5
5
|
|
|
6
6
|
```
|
|
7
7
|
data/
|
|
8
|
-
├── config.json { "output_lang": "English" } ← your summary
|
|
8
|
+
├── config.json { "output_lang": "English" } ← your summary language. Optional
|
|
9
|
+
│ "after_rate": "<command>" runs after every rating (sync)
|
|
9
10
|
├── channels.md the channels you follow (a flat list)
|
|
10
11
|
├── state.md per-channel per-type cursor (last video seen of each type)
|
|
11
12
|
├── channels/
|
package/dist/lib/llm.js
CHANGED
|
@@ -15,11 +15,15 @@
|
|
|
15
15
|
* (or a "credit balance too low" failure). The briefing is meant to run on the login.
|
|
16
16
|
*
|
|
17
17
|
* Env (all optional):
|
|
18
|
-
* YT_BRIEFING_MODEL model alias or full name passed to `claude --model` (default:
|
|
18
|
+
* YT_BRIEFING_MODEL model alias or full name passed to `claude --model` (default: sonnet)
|
|
19
19
|
*/
|
|
20
20
|
import { spawn, spawnSync } from 'node:child_process';
|
|
21
|
-
/**
|
|
22
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Model alias for every call; one model does both stages. Sonnet: the summary is the product, and a
|
|
23
|
+
* subscription login does not bill per token, so the default buys quality over speed. Set
|
|
24
|
+
* YT_BRIEFING_MODEL=haiku for faster, lighter runs.
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_MODEL = 'sonnet';
|
|
23
27
|
export function getModel() {
|
|
24
28
|
return process.env.YT_BRIEFING_MODEL || DEFAULT_MODEL;
|
|
25
29
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yt-briefing",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "A self-learning YouTube briefing for Claude Code: it sweeps the channels you follow, filters noise in two stages (title, then transcript), gives you a short briefing of the rest in your language in a pane, and adapts to your ratings — one video at a time.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yt-briefing",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "The /yt briefing loop as a Claude Code pane: summary, one-key rating, research hand-off.",
|
|
5
|
-
"author": {
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Michal Ryzio"
|
|
7
|
+
},
|
|
6
8
|
"types": "./types/index.d.ts"
|
|
7
9
|
}
|