backlog-digest 1.0.0__tar.gz

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 (67) hide show
  1. backlog_digest-1.0.0/.gitignore +17 -0
  2. backlog_digest-1.0.0/CHANGELOG.md +36 -0
  3. backlog_digest-1.0.0/LICENSE +21 -0
  4. backlog_digest-1.0.0/PKG-INFO +200 -0
  5. backlog_digest-1.0.0/README.md +159 -0
  6. backlog_digest-1.0.0/README.uk.md +217 -0
  7. backlog_digest-1.0.0/docs/FAQ.md +105 -0
  8. backlog_digest-1.0.0/docs/FAQ.uk.md +104 -0
  9. backlog_digest-1.0.0/docs/development.md +65 -0
  10. backlog_digest-1.0.0/docs/examples/video-summary.en.md +52 -0
  11. backlog_digest-1.0.0/docs/examples/video-summary.uk.md +52 -0
  12. backlog_digest-1.0.0/docs//320/242/320/227.md +186 -0
  13. backlog_digest-1.0.0/pyproject.toml +91 -0
  14. backlog_digest-1.0.0/src/backlog_digest/__init__.py +4 -0
  15. backlog_digest-1.0.0/src/backlog_digest/__main__.py +3 -0
  16. backlog_digest-1.0.0/src/backlog_digest/autostart.py +201 -0
  17. backlog_digest-1.0.0/src/backlog_digest/cli.py +256 -0
  18. backlog_digest-1.0.0/src/backlog_digest/config.py +179 -0
  19. backlog_digest-1.0.0/src/backlog_digest/db.py +532 -0
  20. backlog_digest-1.0.0/src/backlog_digest/doctor.py +210 -0
  21. backlog_digest-1.0.0/src/backlog_digest/export.py +205 -0
  22. backlog_digest-1.0.0/src/backlog_digest/folders.py +47 -0
  23. backlog_digest-1.0.0/src/backlog_digest/i18n.py +160 -0
  24. backlog_digest-1.0.0/src/backlog_digest/keys.py +82 -0
  25. backlog_digest-1.0.0/src/backlog_digest/library.py +362 -0
  26. backlog_digest-1.0.0/src/backlog_digest/llm.py +297 -0
  27. backlog_digest-1.0.0/src/backlog_digest/locales/en.toml +532 -0
  28. backlog_digest-1.0.0/src/backlog_digest/locales/es.toml +532 -0
  29. backlog_digest-1.0.0/src/backlog_digest/locales/fr.toml +532 -0
  30. backlog_digest-1.0.0/src/backlog_digest/locales/uk.toml +535 -0
  31. backlog_digest-1.0.0/src/backlog_digest/menu.py +797 -0
  32. backlog_digest-1.0.0/src/backlog_digest/notes.py +210 -0
  33. backlog_digest-1.0.0/src/backlog_digest/paths.py +62 -0
  34. backlog_digest-1.0.0/src/backlog_digest/pipeline.py +585 -0
  35. backlog_digest-1.0.0/src/backlog_digest/raindrop.py +147 -0
  36. backlog_digest-1.0.0/src/backlog_digest/readers.py +314 -0
  37. backlog_digest-1.0.0/src/backlog_digest/runstate.py +84 -0
  38. backlog_digest-1.0.0/src/backlog_digest/schedule.py +280 -0
  39. backlog_digest-1.0.0/src/backlog_digest/shortcut.py +97 -0
  40. backlog_digest-1.0.0/src/backlog_digest/sorting_menu.py +165 -0
  41. backlog_digest-1.0.0/src/backlog_digest/summarize.py +250 -0
  42. backlog_digest-1.0.0/src/backlog_digest/tools.py +88 -0
  43. backlog_digest-1.0.0/src/backlog_digest/web.py +280 -0
  44. backlog_digest-1.0.0/src/backlog_digest/wizard.py +113 -0
  45. backlog_digest-1.0.0/src/backlog_digest/youtube.py +210 -0
  46. backlog_digest-1.0.0/tests/conftest.py +29 -0
  47. backlog_digest-1.0.0/tests/samples.py +72 -0
  48. backlog_digest-1.0.0/tests/test_cli.py +116 -0
  49. backlog_digest-1.0.0/tests/test_config.py +77 -0
  50. backlog_digest-1.0.0/tests/test_db.py +122 -0
  51. backlog_digest-1.0.0/tests/test_doctor.py +114 -0
  52. backlog_digest-1.0.0/tests/test_export.py +157 -0
  53. backlog_digest-1.0.0/tests/test_i18n.py +136 -0
  54. backlog_digest-1.0.0/tests/test_keys.py +23 -0
  55. backlog_digest-1.0.0/tests/test_library.py +119 -0
  56. backlog_digest-1.0.0/tests/test_llm.py +139 -0
  57. backlog_digest-1.0.0/tests/test_menu.py +244 -0
  58. backlog_digest-1.0.0/tests/test_notes.py +106 -0
  59. backlog_digest-1.0.0/tests/test_panel.py +53 -0
  60. backlog_digest-1.0.0/tests/test_pipeline.py +382 -0
  61. backlog_digest-1.0.0/tests/test_raindrop.py +146 -0
  62. backlog_digest-1.0.0/tests/test_readers.py +96 -0
  63. backlog_digest-1.0.0/tests/test_schedule.py +171 -0
  64. backlog_digest-1.0.0/tests/test_summarize.py +64 -0
  65. backlog_digest-1.0.0/tests/test_web.py +139 -0
  66. backlog_digest-1.0.0/tests/test_wizard.py +68 -0
  67. backlog_digest-1.0.0/tests/test_youtube.py +129 -0
@@ -0,0 +1,17 @@
1
+ # Python
2
+ .venv/
3
+ __pycache__/
4
+ *.pyc
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .pytest_cache/
9
+
10
+ # секрети та локальні дані / secrets and local data
11
+ .env
12
+ config.yaml
13
+ client_secret*.json
14
+ token.json
15
+ *.session
16
+ cookies*.txt
17
+ data/
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+
3
+ All notable changes are listed here. The project follows [Semantic Versioning](https://semver.org/).
4
+
5
+ ## 1.0.0 — first public release
6
+
7
+ ### Sources
8
+ - **YouTube** playlists, channels and single videos through yt-dlp — no Google Cloud, no YouTube keys.
9
+ Two independent steps: collect subtitles (slow, gentle pauses, daily limit) and write summaries (fast).
10
+ Stops asking YouTube when it limits your address and keeps summarizing what is already collected.
11
+ - **Folders** of books and documents: PDF, EPUB, FB2, DOCX, ODT, RTF, HTML, TXT, MD; DJVU with DjVuLibre;
12
+ MOBI, AZW3, DOC with Calibre. Long books are read in parts and continue after a stop.
13
+ - **Web articles**: links, browser bookmarks (HTML export, with folder choice), Pocket, Instapaper, CSV.
14
+ Main text only.
15
+ - **Raindrop.io** bookmarks (read-only), collections become lists.
16
+
17
+ ### Summaries
18
+ - A note per item: what it is about, key ideas and facts, what is new, grounding and questionable claims,
19
+ filler with timestamps, audience, verdict and a strict 1–5 score; pseudoscience goes to "Skip".
20
+ - Any summary language; interface in English, Ukrainian, French and Spanish.
21
+ - A queue of models with spares (Gemini, OpenRouter, DeepSeek, your own or local), daily quotas remembered.
22
+ - Output to an Obsidian vault or a plain Markdown folder.
23
+
24
+ ### Library
25
+ - Sorting by topic: your own topics, "important / the rest" baskets or a topic tree proposed by the model,
26
+ with a preview before anything moves.
27
+ - A report and an index note per list: the best items, everything by topic, groups of repeats, off-topic,
28
+ unscientific, failed pages.
29
+ - Export to Raindrop.io: nested collections by list and topic, only new and changed items are sent.
30
+
31
+ ### Running
32
+ - First-run wizard: from zero to the first summary in a few minutes.
33
+ - Schedule with catch-up after the computer was off; autostart through Task Scheduler (Windows),
34
+ launchd (macOS), a systemd timer or cron (Linux), without administrator rights.
35
+ - A data panel above the menu, a desktop shortcut, `bdig doctor` health check.
36
+ - Install with `uv tool install backlog-digest`.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Makss1974
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.
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.5
2
+ Name: backlog-digest
3
+ Version: 1.0.0
4
+ Summary: Turn your backlog of saved videos, articles, books and posts into a readable library.
5
+ Project-URL: Homepage, https://github.com/Makss1974/backlog-digest
6
+ Project-URL: Documentation, https://github.com/Makss1974/backlog-digest#readme
7
+ Project-URL: FAQ, https://github.com/Makss1974/backlog-digest/blob/main/docs/FAQ.md
8
+ Project-URL: Changelog, https://github.com/Makss1974/backlog-digest/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/Makss1974/backlog-digest/issues
10
+ Author: Makss1974
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: bookmarks,gemini,llm,obsidian,raindrop,reading-list,summary,youtube
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: End Users/Desktop
17
+ Classifier: Natural Language :: English
18
+ Classifier: Natural Language :: French
19
+ Classifier: Natural Language :: Spanish
20
+ Classifier: Natural Language :: Ukrainian
21
+ Classifier: Operating System :: MacOS
22
+ Classifier: Operating System :: Microsoft :: Windows
23
+ Classifier: Operating System :: OS Independent
24
+ Classifier: Operating System :: POSIX :: Linux
25
+ Classifier: Programming Language :: Python :: 3
26
+ Classifier: Programming Language :: Python :: 3.11
27
+ Classifier: Programming Language :: Python :: 3.12
28
+ Classifier: Programming Language :: Python :: 3.13
29
+ Classifier: Topic :: Education
30
+ Classifier: Topic :: Text Processing :: General
31
+ Requires-Python: >=3.11
32
+ Requires-Dist: pypdf>=5
33
+ Requires-Dist: trafilatura<3,>=2
34
+ Requires-Dist: youtube-transcript-api<2,>=1.2
35
+ Requires-Dist: yt-dlp>=2025.1.1
36
+ Provides-Extra: dev
37
+ Requires-Dist: mypy>=1.10; extra == 'dev'
38
+ Requires-Dist: pytest>=8; extra == 'dev'
39
+ Requires-Dist: ruff>=0.6; extra == 'dev'
40
+ Description-Content-Type: text/markdown
41
+
42
+ # backlog-digest
43
+
44
+ **Work through your "saved for later" pile.** Thousands of saved videos, articles and books →
45
+ a library you can read in an evening.
46
+
47
+ [Українською](https://github.com/Makss1974/backlog-digest/blob/main/README.uk.md) · [FAQ](https://github.com/Makss1974/backlog-digest/blob/main/docs/FAQ.md) · [Example summary](https://github.com/Makss1974/backlog-digest/blob/main/docs/examples/video-summary.en.md) ·
48
+ License: [MIT](https://github.com/Makss1974/backlog-digest/blob/main/LICENSE)
49
+
50
+ For every item backlog-digest writes a summary with a **critical score** and an honest **"worth it or not"**
51
+ verdict, flags pseudoscience, sorts everything by topic, finds repeats, and puts the result into **your own**
52
+ Obsidian vault, a plain Markdown folder or Raindrop.io. It runs on your computer with free model keys, works
53
+ through thousands of items a little every day, and never loses progress.
54
+
55
+ ```text
56
+ ────────────────────────────────────────────────────────────
57
+ backlog-digest — 16 of 84 done, 66 in queue
58
+ waiting for subtitles: 44 (0 of 30 collected today) · ready to summarize: 22 · no text: 2
59
+ Sources: 2 (YouTube 1, Raindrop 1) · summaries → D:\Obsidian\Library
60
+ Models: 6 of 7 available · today's limit used up: gemini/gemini-3-flash-preview
61
+ ────────────────────────────────────────────────────────────
62
+ 1. Statistics
63
+ 2. Sources: YouTube, folders, articles, Raindrop
64
+ 3. Make summaries
65
+ 4. Sort by topic + report
66
+ 5. Export to Raindrop.io
67
+ 6. Schedule
68
+ 7. Health check (doctor)
69
+ 8. Settings
70
+ q. Quit
71
+ ```
72
+
73
+ ## What you get
74
+
75
+ A note per item ([full example](https://github.com/Makss1974/backlog-digest/blob/main/docs/examples/video-summary.en.md)):
76
+
77
+ > **Measles Explained — Vaccinate or Not?** · Kurzgesagt
78
+ >
79
+ > **Verdict: Watch** · Score: 5/5 ★★★★★
80
+ >
81
+ > **About:** how the measles virus bypasses the immune system, and why vaccination matters for herd immunity.
82
+ > **Key ideas and facts:** 10 points with numbers · **What is new** · **Grounding:** evidence level, what the
83
+ > author relies on, questionable claims · **How much filler:** ~10%, with timestamps · **Who it is for** ·
84
+ > **Why this verdict**
85
+
86
+ Verdicts: *Watch / Read*, *Watch part* (which fragments), *Summary is enough*, *Skip*. The score scale is
87
+ strict on purpose — an average item gets 3, and unscientific content goes to *Skip*.
88
+
89
+ Then, per list:
90
+
91
+ - **Sorting by topic** — your own topics, "important / the rest" baskets, or a topic tree the model proposes;
92
+ notes move into topic folders after you see a preview.
93
+ - **Index note** — the best items, everything by topic with scores, **groups of repeats** (watch only the
94
+ best one), off-topic and unscientific items, pages that failed.
95
+ - **Raindrop.io export** — nested collections by list and topic, with the summary in the bookmark note.
96
+
97
+ ## Sources
98
+
99
+ | Source | How |
100
+ |---|---|
101
+ | **YouTube** — playlists, channels, single videos | Subtitles via yt-dlp — no Google Cloud, no YouTube keys |
102
+ | **Folders** of books and documents (also Google Drive / OneDrive / Dropbox folders) | PDF, EPUB, FB2, DOCX, ODT, RTF, HTML, TXT, MD; DJVU with DjVuLibre; MOBI, AZW3, DOC with Calibre |
103
+ | **Web articles** — links, browser bookmarks (HTML export), Pocket, Instapaper, CSV | Main text only (no menus, ads, comments) |
104
+ | **Raindrop.io** bookmarks | Collections become lists; read-only |
105
+
106
+ Long books are read in parts and continue after a stop. The same video or book in several lists is summarized
107
+ once. YouTube links inside bookmarks become videos, PDF links become books.
108
+
109
+ ## Install
110
+
111
+ You only need [uv](https://docs.astral.sh/uv/) — a small tool that installs the right Python and
112
+ backlog-digest apart from the rest of your system. No administrator rights.
113
+
114
+ **1. Install uv** (once). Windows, in PowerShell:
115
+
116
+ ```powershell
117
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
118
+ ```
119
+
120
+ macOS and Linux, in a terminal:
121
+
122
+ ```bash
123
+ curl -LsSf https://astral.sh/uv/install.sh | sh
124
+ ```
125
+
126
+ **2. Install backlog-digest**, then close and reopen the terminal:
127
+
128
+ ```bash
129
+ uv tool install backlog-digest
130
+ uv tool update-shell
131
+ ```
132
+
133
+ **3. Run it:**
134
+
135
+ ```bash
136
+ bdig
137
+ ```
138
+
139
+ On the first run a wizard sets everything up in a few minutes — language, notes folder, a model key, the first
140
+ source, how many per day, a daily schedule — and makes your first summary right away.
141
+ `bdig shortcut` puts a desktop shortcut that opens the program in its own window; `bdig doctor` checks that
142
+ everything is in place.
143
+
144
+ **Model key.** The easiest is a free Google Gemini key: open <https://aistudio.google.com/apikey>, sign in,
145
+ "Create API key", paste it into the wizard. OpenRouter and DeepSeek keys work too and serve as spares when one
146
+ model's daily limit runs out.
147
+
148
+ Upgrade: `uv tool upgrade backlog-digest`. Uninstall: `bdig autostart off`, then `uv tool uninstall backlog-digest`
149
+ (your notes stay where they are).
150
+
151
+ ## Everyday use
152
+
153
+ Everything is in the menu (`bdig`); the same works as commands, which is handy for scripts:
154
+
155
+ ```bash
156
+ bdig add "https://www.youtube.com/playlist?list=..." --name Science # a YouTube source
157
+ bdig add "D:\Books" # a folder of books
158
+ bdig add bookmarks.html --only "Reading/Science" # browser bookmarks, one folder
159
+ bdig add raindrop "Read later" # Raindrop collections
160
+ bdig sync # find new items in all sources
161
+ bdig process --limit 20 # collect texts and write summaries
162
+ bdig export # send summaries to Raindrop
163
+ bdig run-jobs --force # run the scheduled jobs now
164
+ ```
165
+
166
+ **Schedule.** Menu → 6: what to do (update lists → summaries → report → Raindrop), how many, daily or weekly,
167
+ "not before HH:MM". Autostart uses the system scheduler without administrator rights — Task Scheduler on
168
+ Windows, launchd on macOS, a systemd timer or cron on Linux. If the computer was off, the job catches up the
169
+ next time. A log goes to a file and to a "_Schedule log" note.
170
+
171
+ **Gentle with limits.** Free models and YouTube have daily limits, so the program works in portions:
172
+ 1–3 minute pauses between subtitle requests, at most 30 subtitle requests a day (configurable), a queue of spare
173
+ models, and if YouTube limits your address it stops asking and keeps summarizing what is already collected.
174
+ Ctrl+C stops at any moment; the next run continues where it stopped.
175
+
176
+ **Languages.** The interface is in English, Ukrainian, French and Spanish. Summaries can be in any language,
177
+ regardless of the language of the video or book.
178
+
179
+ ## Your data stays yours
180
+
181
+ - Everything runs on your computer. Notes are plain Markdown files in your folder.
182
+ - Sources are read-only: nothing is changed in YouTube, your bookmarks or Raindrop (the export goes into its own
183
+ collection).
184
+ - Keys live in environment variables or in a `.env` file in the settings folder; the program never shows them.
185
+ - No telemetry.
186
+
187
+ | What | Windows | macOS | Linux |
188
+ |---|---|---|---|
189
+ | Settings `config.toml` and keys `.env` | `%APPDATA%\backlog-digest` | `~/Library/Application Support/backlog-digest` | `~/.config/backlog-digest` |
190
+ | Database, cache, logs | `%LOCALAPPDATA%\backlog-digest` | same | `~/.local/share/backlog-digest` |
191
+
192
+ `BACKLOG_DIGEST_HOME=<folder>` (or `bdig --home <folder>`) keeps everything in one folder.
193
+
194
+ ## More
195
+
196
+ - [FAQ](https://github.com/Makss1974/backlog-digest/blob/main/docs/FAQ.md): limits, blocked YouTube, scanned books, long paths on Windows and other pitfalls.
197
+ - [Development](https://github.com/Makss1974/backlog-digest/blob/main/docs/development.md): running from source, tests, project layout.
198
+ - [Specification](https://github.com/Makss1974/backlog-digest/blob/main/docs/ТЗ.md) (Ukrainian).
199
+
200
+ Grew out of the author's personal tool `yt-digest`, used daily for video summaries.
@@ -0,0 +1,159 @@
1
+ # backlog-digest
2
+
3
+ **Work through your "saved for later" pile.** Thousands of saved videos, articles and books →
4
+ a library you can read in an evening.
5
+
6
+ [Українською](https://github.com/Makss1974/backlog-digest/blob/main/README.uk.md) · [FAQ](https://github.com/Makss1974/backlog-digest/blob/main/docs/FAQ.md) · [Example summary](https://github.com/Makss1974/backlog-digest/blob/main/docs/examples/video-summary.en.md) ·
7
+ License: [MIT](https://github.com/Makss1974/backlog-digest/blob/main/LICENSE)
8
+
9
+ For every item backlog-digest writes a summary with a **critical score** and an honest **"worth it or not"**
10
+ verdict, flags pseudoscience, sorts everything by topic, finds repeats, and puts the result into **your own**
11
+ Obsidian vault, a plain Markdown folder or Raindrop.io. It runs on your computer with free model keys, works
12
+ through thousands of items a little every day, and never loses progress.
13
+
14
+ ```text
15
+ ────────────────────────────────────────────────────────────
16
+ backlog-digest — 16 of 84 done, 66 in queue
17
+ waiting for subtitles: 44 (0 of 30 collected today) · ready to summarize: 22 · no text: 2
18
+ Sources: 2 (YouTube 1, Raindrop 1) · summaries → D:\Obsidian\Library
19
+ Models: 6 of 7 available · today's limit used up: gemini/gemini-3-flash-preview
20
+ ────────────────────────────────────────────────────────────
21
+ 1. Statistics
22
+ 2. Sources: YouTube, folders, articles, Raindrop
23
+ 3. Make summaries
24
+ 4. Sort by topic + report
25
+ 5. Export to Raindrop.io
26
+ 6. Schedule
27
+ 7. Health check (doctor)
28
+ 8. Settings
29
+ q. Quit
30
+ ```
31
+
32
+ ## What you get
33
+
34
+ A note per item ([full example](https://github.com/Makss1974/backlog-digest/blob/main/docs/examples/video-summary.en.md)):
35
+
36
+ > **Measles Explained — Vaccinate or Not?** · Kurzgesagt
37
+ >
38
+ > **Verdict: Watch** · Score: 5/5 ★★★★★
39
+ >
40
+ > **About:** how the measles virus bypasses the immune system, and why vaccination matters for herd immunity.
41
+ > **Key ideas and facts:** 10 points with numbers · **What is new** · **Grounding:** evidence level, what the
42
+ > author relies on, questionable claims · **How much filler:** ~10%, with timestamps · **Who it is for** ·
43
+ > **Why this verdict**
44
+
45
+ Verdicts: *Watch / Read*, *Watch part* (which fragments), *Summary is enough*, *Skip*. The score scale is
46
+ strict on purpose — an average item gets 3, and unscientific content goes to *Skip*.
47
+
48
+ Then, per list:
49
+
50
+ - **Sorting by topic** — your own topics, "important / the rest" baskets, or a topic tree the model proposes;
51
+ notes move into topic folders after you see a preview.
52
+ - **Index note** — the best items, everything by topic with scores, **groups of repeats** (watch only the
53
+ best one), off-topic and unscientific items, pages that failed.
54
+ - **Raindrop.io export** — nested collections by list and topic, with the summary in the bookmark note.
55
+
56
+ ## Sources
57
+
58
+ | Source | How |
59
+ |---|---|
60
+ | **YouTube** — playlists, channels, single videos | Subtitles via yt-dlp — no Google Cloud, no YouTube keys |
61
+ | **Folders** of books and documents (also Google Drive / OneDrive / Dropbox folders) | PDF, EPUB, FB2, DOCX, ODT, RTF, HTML, TXT, MD; DJVU with DjVuLibre; MOBI, AZW3, DOC with Calibre |
62
+ | **Web articles** — links, browser bookmarks (HTML export), Pocket, Instapaper, CSV | Main text only (no menus, ads, comments) |
63
+ | **Raindrop.io** bookmarks | Collections become lists; read-only |
64
+
65
+ Long books are read in parts and continue after a stop. The same video or book in several lists is summarized
66
+ once. YouTube links inside bookmarks become videos, PDF links become books.
67
+
68
+ ## Install
69
+
70
+ You only need [uv](https://docs.astral.sh/uv/) — a small tool that installs the right Python and
71
+ backlog-digest apart from the rest of your system. No administrator rights.
72
+
73
+ **1. Install uv** (once). Windows, in PowerShell:
74
+
75
+ ```powershell
76
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
77
+ ```
78
+
79
+ macOS and Linux, in a terminal:
80
+
81
+ ```bash
82
+ curl -LsSf https://astral.sh/uv/install.sh | sh
83
+ ```
84
+
85
+ **2. Install backlog-digest**, then close and reopen the terminal:
86
+
87
+ ```bash
88
+ uv tool install backlog-digest
89
+ uv tool update-shell
90
+ ```
91
+
92
+ **3. Run it:**
93
+
94
+ ```bash
95
+ bdig
96
+ ```
97
+
98
+ On the first run a wizard sets everything up in a few minutes — language, notes folder, a model key, the first
99
+ source, how many per day, a daily schedule — and makes your first summary right away.
100
+ `bdig shortcut` puts a desktop shortcut that opens the program in its own window; `bdig doctor` checks that
101
+ everything is in place.
102
+
103
+ **Model key.** The easiest is a free Google Gemini key: open <https://aistudio.google.com/apikey>, sign in,
104
+ "Create API key", paste it into the wizard. OpenRouter and DeepSeek keys work too and serve as spares when one
105
+ model's daily limit runs out.
106
+
107
+ Upgrade: `uv tool upgrade backlog-digest`. Uninstall: `bdig autostart off`, then `uv tool uninstall backlog-digest`
108
+ (your notes stay where they are).
109
+
110
+ ## Everyday use
111
+
112
+ Everything is in the menu (`bdig`); the same works as commands, which is handy for scripts:
113
+
114
+ ```bash
115
+ bdig add "https://www.youtube.com/playlist?list=..." --name Science # a YouTube source
116
+ bdig add "D:\Books" # a folder of books
117
+ bdig add bookmarks.html --only "Reading/Science" # browser bookmarks, one folder
118
+ bdig add raindrop "Read later" # Raindrop collections
119
+ bdig sync # find new items in all sources
120
+ bdig process --limit 20 # collect texts and write summaries
121
+ bdig export # send summaries to Raindrop
122
+ bdig run-jobs --force # run the scheduled jobs now
123
+ ```
124
+
125
+ **Schedule.** Menu → 6: what to do (update lists → summaries → report → Raindrop), how many, daily or weekly,
126
+ "not before HH:MM". Autostart uses the system scheduler without administrator rights — Task Scheduler on
127
+ Windows, launchd on macOS, a systemd timer or cron on Linux. If the computer was off, the job catches up the
128
+ next time. A log goes to a file and to a "_Schedule log" note.
129
+
130
+ **Gentle with limits.** Free models and YouTube have daily limits, so the program works in portions:
131
+ 1–3 minute pauses between subtitle requests, at most 30 subtitle requests a day (configurable), a queue of spare
132
+ models, and if YouTube limits your address it stops asking and keeps summarizing what is already collected.
133
+ Ctrl+C stops at any moment; the next run continues where it stopped.
134
+
135
+ **Languages.** The interface is in English, Ukrainian, French and Spanish. Summaries can be in any language,
136
+ regardless of the language of the video or book.
137
+
138
+ ## Your data stays yours
139
+
140
+ - Everything runs on your computer. Notes are plain Markdown files in your folder.
141
+ - Sources are read-only: nothing is changed in YouTube, your bookmarks or Raindrop (the export goes into its own
142
+ collection).
143
+ - Keys live in environment variables or in a `.env` file in the settings folder; the program never shows them.
144
+ - No telemetry.
145
+
146
+ | What | Windows | macOS | Linux |
147
+ |---|---|---|---|
148
+ | Settings `config.toml` and keys `.env` | `%APPDATA%\backlog-digest` | `~/Library/Application Support/backlog-digest` | `~/.config/backlog-digest` |
149
+ | Database, cache, logs | `%LOCALAPPDATA%\backlog-digest` | same | `~/.local/share/backlog-digest` |
150
+
151
+ `BACKLOG_DIGEST_HOME=<folder>` (or `bdig --home <folder>`) keeps everything in one folder.
152
+
153
+ ## More
154
+
155
+ - [FAQ](https://github.com/Makss1974/backlog-digest/blob/main/docs/FAQ.md): limits, blocked YouTube, scanned books, long paths on Windows and other pitfalls.
156
+ - [Development](https://github.com/Makss1974/backlog-digest/blob/main/docs/development.md): running from source, tests, project layout.
157
+ - [Specification](https://github.com/Makss1974/backlog-digest/blob/main/docs/ТЗ.md) (Ukrainian).
158
+
159
+ Grew out of the author's personal tool `yt-digest`, used daily for video summaries.
@@ -0,0 +1,217 @@
1
+ # backlog-digest
2
+
3
+ **Розбери свої завали.** Тисячі збережених відео, статей і книг → бібліотека, яку можна прочитати за вечір.
4
+
5
+ [English](README.md) · [Питання й відповіді](docs/FAQ.uk.md) · [Приклад конспекту](docs/examples/video-summary.uk.md) ·
6
+ Ліцензія: [MIT](LICENSE)
7
+
8
+ Для кожного елемента backlog-digest пише конспект із **критичною оцінкою** й чесним вердиктом **«варто чи ні»**,
9
+ позначає псевдонауку, розкладає все за темами, знаходить повтори й складає результат у **ваше** сховище Obsidian,
10
+ звичайну теку Markdown або Raindrop.io. Працює на вашому комп'ютері з безкоштовними ключами моделей, розбирає
11
+ тисячі елементів потроху щодня й ніколи не губить прогрес.
12
+
13
+ ```text
14
+ ────────────────────────────────────────────────────────────
15
+ backlog-digest — готово 16 з 84, у черзі 66
16
+ чекають субтитрів: 44 (сьогодні зібрано 0 з 30) · готові до конспекту: 22 · без тексту: 2
17
+ Джерела: 2 (YouTube 1, Raindrop 1) · конспекти → D:\Obsidian\Бібліотека
18
+ Моделі: доступно 6 з 7 · ліміт на сьогодні вичерпано: gemini/gemini-3-flash-preview
19
+ ────────────────────────────────────────────────────────────
20
+ 1. Статистика
21
+ 2. Джерела: YouTube, папки, статті, Raindrop
22
+ 3. Зробити конспекти
23
+ 4. Сортування за темами + звіт
24
+ 5. Експорт у Raindrop.io
25
+ 6. Розклад
26
+ 7. Перевірка (doctor)
27
+ 8. Налаштування
28
+ q. Вихід
29
+ ```
30
+
31
+ ## Що виходить
32
+
33
+ Нотатка на кожен елемент ([повний приклад](docs/examples/video-summary.uk.md)):
34
+
35
+ > **Measles Explained — Vaccinate or Not?** · Kurzgesagt
36
+ >
37
+ > **Вердикт: Дивитися** · Оцінка: 5/5 ★★★★★
38
+ >
39
+ > **Про що:** як вірус кору обходить імунну систему і чому щеплення важливі для колективного імунітету.
40
+ > **Ключові ідеї та факти:** 10 пунктів із цифрами · **Що нового** · **Обґрунтованість:** рівень доказів,
41
+ > на що спирається автор, сумнівні твердження · **Скільки «води»:** ~10%, з позначками часу · **Для кого** ·
42
+ > **Чому такий вердикт**
43
+
44
+ Вердикти: *Дивитися / Читати*, *Переглянути частину* (які саме фрагменти), *Достатньо конспекту*, *Пропустити*.
45
+ Шкала оцінок навмисно сувора: звичайний матеріал отримує 3, ненаукове — «Пропустити».
46
+
47
+ Далі — для кожного списку:
48
+
49
+ - **Сортування за темами** — ваші теми, кошики «важливо / решта» або дерево тем, яке запропонує модель;
50
+ нотатки переносяться в теки тем лише після попереднього перегляду.
51
+ - **Індекс списку** — найкращі, усе за темами з оцінками, **групи повторів** (досить подивитися найкраще),
52
+ не в темі, ненаукове, сторінки з помилками.
53
+ - **Експорт у Raindrop.io** — вкладені колекції за списками й темами, конспект — у нотатці закладки.
54
+
55
+ ## Встановлення
56
+
57
+ Знадобиться лише [uv](https://docs.astral.sh/uv/) — невелика програма, яка сама поставить потрібний Python
58
+ і backlog-digest окремо від решти системи. Права адміністратора не потрібні.
59
+
60
+ **1. Встановіть uv** (один раз). Windows — у PowerShell:
61
+
62
+ ```powershell
63
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
64
+ ```
65
+
66
+ macOS і Linux — у Терміналі:
67
+
68
+ ```bash
69
+ curl -LsSf https://astral.sh/uv/install.sh | sh
70
+ ```
71
+
72
+ **2. Встановіть backlog-digest**, потім закрийте й знову відкрийте вікно терміналу:
73
+
74
+ ```bash
75
+ uv tool install backlog-digest
76
+ uv tool update-shell
77
+ ```
78
+
79
+ **3. Запустіть:**
80
+
81
+ ```bash
82
+ bdig
83
+ ```
84
+
85
+ Під час першого запуску майстер за кілька хвилин усе налаштує — мову, теку для конспектів, ключ моделі,
86
+ перше джерело, скільки на день, щоденний розклад — і одразу зробить перший конспект. Повторно: `bdig setup`.
87
+ `bdig shortcut` — ярлик на робочому столі (програма відкривається в окремому вікні); `bdig doctor` — перевірка,
88
+ чи все на місці.
89
+
90
+ **Ключ моделі.** Найпростіше — безкоштовний ключ Google Gemini: відкрийте <https://aistudio.google.com/apikey>,
91
+ увійдіть, «Create API key», вставте в майстрі (меню → 8 → 4). Ключі OpenRouter і DeepSeek теж підходять —
92
+ вони запасні, коли в однієї моделі скінчився добовий ліміт.
93
+
94
+ Оновлення — `uv tool upgrade backlog-digest`. Видалення — `bdig autostart off`, потім
95
+ `uv tool uninstall backlog-digest` (конспекти лишаються у вашій теці).
96
+
97
+ ## Джерела
98
+
99
+ ### YouTube
100
+
101
+ Без Google Cloud і без ключів YouTube. Меню → 2 Джерела → 1 → посилання на плейлист, канал (`@назва`) або відео.
102
+
103
+ Обробка має два незалежні кроки — їх можна робити разом або окремо, у різний час:
104
+ - **зібрати субтитри** — повільно, з вашої інтернет-адреси, моделі не потрібні. Тексти лежать у базі,
105
+ доки не готовий конспект, потім видаляються;
106
+ - **зробити конспекти** із зібраного — YouTube не потрібен, швидко, скільки дозволяють ліміти моделей.
107
+
108
+ Коли YouTube тимчасово обмежив вашу адресу, конспекти з уже зібраного далі робляться, а коли скінчились
109
+ ліміти моделей — далі збираються субтитри. Між запитами субтитрів — випадкова пауза 1–3 хв і не більше
110
+ 30 запитів на добу (`[youtube] delay_min/delay_max`, `[limits] per_day` у `config.toml`). Відео без субтитрів
111
+ отримують статус «без тексту». Те саме відео в кількох списках конспектується один раз.
112
+
113
+ ### Книги й документи з папки
114
+
115
+ Меню → 2 → 2 → повний шлях до теки (можна синхронізовану: Google Drive, OneDrive, Dropbox). Підтеки першого
116
+ рівня стають окремими списками.
117
+
118
+ - Формати: PDF, EPUB, FB2 (і .fb2.zip), DOCX, ODT, RTF, HTML, TXT, MD — без додаткових програм;
119
+ DJVU — безкоштовна DjVuLibre; MOBI, AZW3, DOC — безкоштовна Calibre (`bdig doctor` покаже, чи знайдено).
120
+ - Довга книга читається частинами: спершу робочі нотатки частин, потім підсумковий конспект; після зупинки
121
+ продовжується з того самого місця.
122
+ - Скан без текстового шару отримує статус «без тексту». Перейменований чи переміщений файл не стає новим.
123
+
124
+ ### Веб-статті й закладки браузера
125
+
126
+ Меню → 2 → 3 → по одному в рядку: посилання або шлях до файлу — HTML-експорт закладок Chrome, Edge, Firefox,
127
+ Safari (теки стають списками), експорт Pocket (HTML, CSV), Instapaper (CSV), будь-який CSV зі стовпцем `url`
128
+ або TXT з посиланнями.
129
+
130
+ - Береться лише основний текст сторінки (без меню, реклами й коментарів), з назвою, автором і датою.
131
+ Посилання на PDF читається як книга, на YouTube — як відео.
132
+ - Сторінки, якої більше немає, і сторінки без тексту (вхід, платний доступ) отримують «без тексту»;
133
+ тимчасові помилки сайту — повтор пізніше.
134
+ - **Лише потрібні теки.** Після файлу закладок програма показує теки з кількістю посилань: номер — вибрати
135
+ (з вкладеними), `>номер` — відкрити, `<` — назад, Enter — готово. Командою: `--only "Читати/Наука"`.
136
+ - Файл можна перезберегти з браузера — додадуться лише нові посилання.
137
+
138
+ ### Raindrop.io
139
+
140
+ 1. **Токен:** <https://app.raindrop.io/settings/integrations> → «Create new app» (назва будь-яка) →
141
+ відкрити створену програму → «Create test token».
142
+ 2. Меню → 2 → 4 → вставити токен (його не видно; перевіряється й зберігається у `.env`) → вибрати колекції
143
+ або Enter — усі закладки.
144
+
145
+ Колекції стають списками («Наука/Фізика»), «Несортовані» — без списку. Програма лише читає закладки.
146
+
147
+ ## Сортування, індекс, експорт
148
+
149
+ **Сортування за темами** (меню → 4 → список):
150
+ - **Мої теми** — теми й підтеми пишете ви (відкривається Блокнот / TextEdit / nano; підтема — з відступом);
151
+ - **Важливість** — кошики на зразок «Важливо, Різне» за вашим правилом словами;
152
+ - **Авто** — модель пропонує дерево тем, його можна виправити.
153
+
154
+ Можна додати критерії (зміст, цінність, глибина, обґрунтованість) і свої правила словами. Спершу —
155
+ попередній перегляд, нотатки переносяться лише після згоди. На 40 конспектів — один запит до моделі.
156
+ Схема запам'ятовується: нові конспекти списку розкладаються в її теми самі.
157
+
158
+ **Звіт та індекс.** Одним запитом модель визначає головну тему списку, групи повторів (✅ на найкращому)
159
+ і що не в темі. У теці списку з'являється нотатка `_Індекс — <список>.md`; після кожної обробки вона
160
+ оновлюється сама.
161
+
162
+ **Експорт у Raindrop.io** (меню → 5 або `bdig export`): окрема коренева колекція «Backlog digest», усередині —
163
+ списки й теми. Повторний експорт надсилає лише нове й змінене. Ваші закладки не змінюються, а колекція
164
+ експорту не імпортується назад.
165
+
166
+ ## Розклад
167
+
168
+ Меню → 6: що робити (оновити списки → конспекти → звіт → Raindrop), скільки, щодня чи раз на тиждень,
169
+ «не раніше ГГ:ХХ». Автозапуск — системним планувальником без прав адміністратора: Планувальник завдань Windows
170
+ (без вікна), launchd на macOS, таймер systemd або cron на Linux. Комп'ютер був вимкнений — завдання
171
+ наздожене при наступному ввімкненні. Паралельно не запускається; журнал — у файлі й у нотатці
172
+ «_Журнал розкладу».
173
+
174
+ ## Команди
175
+
176
+ Усе є в меню (`bdig`); те саме командами — зручно для скриптів:
177
+
178
+ ```bash
179
+ bdig add "https://www.youtube.com/playlist?list=..." --name "Наука" # джерело YouTube
180
+ bdig add "D:\Книги" # тека з книгами
181
+ bdig add bookmarks.html --only "Читати/Наука" # закладки, одна тека
182
+ bdig add raindrop "Читати пізніше" # колекції Raindrop
183
+ bdig sync # знайти нове в усіх джерелах
184
+ bdig process --limit 20 # зібрати тексти й зробити конспекти
185
+ bdig fetch --limit 30 # лише зібрати субтитри
186
+ bdig summarize # лише конспекти із зібраного
187
+ bdig export # конспекти — у Raindrop
188
+ bdig run-jobs --force # виконати завдання розкладу зараз
189
+ bdig autostart on|off|status # автозапуск розкладу
190
+ bdig --lang fr doctor # перевірка французькою (uk, en, fr, es)
191
+ ```
192
+
193
+ Ctrl+C зупиняє будь-якої миті, наступний запуск продовжить з того самого місця.
194
+
195
+ ## Ваші дані — ваші
196
+
197
+ - Усе працює на вашому комп'ютері; конспекти — звичайні файли Markdown у вашій теці.
198
+ - Джерела лише читаються: у YouTube, закладках і Raindrop нічого не змінюється (експорт — в окрему колекцію).
199
+ - Ключі — у змінних середовища або у файлі `.env` у теці налаштувань; програма ніколи не показує їхні значення.
200
+ - Без телеметрії.
201
+
202
+ | Що | Windows | macOS | Linux |
203
+ |---|---|---|---|
204
+ | Налаштування `config.toml` і ключі `.env` | `%APPDATA%\backlog-digest` | `~/Library/Application Support/backlog-digest` | `~/.config/backlog-digest` |
205
+ | База, кеш, журнали | `%LOCALAPPDATA%\backlog-digest` | те саме | `~/.local/share/backlog-digest` |
206
+
207
+ `BACKLOG_DIGEST_HOME=<тека>` (або `bdig --home <тека>`) кладе все в одну теку.
208
+
209
+ Мова інтерфейсу (uk, en, fr, es) і мова конспектів (будь-яка) — окремі налаштування (меню → 8).
210
+
211
+ ## Ще
212
+
213
+ - [Питання й відповіді](docs/FAQ.uk.md): ліміти, обмеження YouTube, скани, довгі шляхи Windows та інші граблі.
214
+ - [Розробка](docs/development.md): запуск із коду, тести, будова проєкту.
215
+ - [Технічне завдання](docs/ТЗ.md).
216
+
217
+ Виріс з особистого інструмента автора `yt-digest`, яким автор щодня робить конспекти відео.