Skip to content

Commit 78b9d92

Browse files
committed
Merge branch 'doc/clarity' into 'main'
docs: add license, badges, screenshot, requirements, contributing guide, and changelog See merge request nwpie/vibe/ai-claude-loop!8
2 parents 89d9ec4 + 2d932ff commit 78b9d92

File tree

7 files changed

+138
-5
lines changed

7 files changed

+138
-5
lines changed

.env.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ SLACK_CHANNEL_ID=
1111
# (Optional) Webhook URL fallback — used if no Bot Token
1212
# SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXX/YYY/ZZZ
1313

14-
# Blackblaze-b2 storage (10GB)
14+
# Backblaze B2 storage (10GB)
1515
B2_KEY_ID=
1616
B2_APP_KEY=
1717
B2_BUCKET_NAME=
1818

19-
# Whishper from HugginfFace inference API
19+
# Whisper from HuggingFace inference API
2020
HF_TOKEN=

CHANGELOG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
Format based on [Keep a Changelog](https://keepachangelog.com/).
6+
7+
## [0.4.0] - 2026-03-16
8+
9+
### Added
10+
- MIT LICENSE
11+
- `requirements.txt` for Python dependencies
12+
- `CONTRIBUTING.md` with development and PR guidelines
13+
- README: shields.io badges (license, Python, CI, last commit)
14+
- README: demo screenshot section
15+
- README: system dependencies table and `pip install` step
16+
17+
## [0.3.0] - 2026-03-16
18+
19+
### Added
20+
- Video links in combined digest markdown and PDF output
21+
22+
### Changed
23+
- Publisher and published date shown in YT digest output
24+
25+
## [0.2.0] - 2026-03-13
26+
27+
### Added
28+
- CI and lint configuration (pre-commit, ruff, shellcheck)
29+
- Per-step state tracking for YT digest (resume on partial failure)
30+
- Video date metadata in YT digest output
31+
32+
## [0.1.0] - 2026-03-11
33+
34+
### Added
35+
- `/ai-news-digest-yt` command — YouTube digest pipeline
36+
- Transcript extraction (subtitles → Whisper fallback)
37+
- HTML + PDF generation via headless Chrome
38+
- Backblaze B2 upload with presigned URLs
39+
- Thumbnail support in digest output
40+
41+
## [0.0.1] - 2026-03-08
42+
43+
### Added
44+
- `/ai-news-digest-news` command — web news digest
45+
- Bilingual summaries (English + Traditional Chinese)
46+
- Slack posting via Bot Token with webhook fallback
47+
- 6 AI news categories
48+
- News freshness filtering and deduplication

CONTRIBUTING.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Contributing to AI News Digest
2+
3+
Thanks for your interest in contributing! This project automates daily AI news digests via Claude Code.
4+
5+
## Getting Started
6+
7+
1. Fork and clone the repo
8+
2. Copy `.env.example``.env` and fill in credentials
9+
3. Install Python dependencies:
10+
```bash
11+
pip install -r requirements.txt
12+
```
13+
4. Install system dependencies (see README for details)
14+
15+
## Development
16+
17+
- Python scripts live in `scripts/yt/`
18+
- Slash commands live in `.claude/commands/`
19+
- State files in `.state/` are gitignored — never commit them
20+
- Test your changes locally before opening a PR:
21+
```bash
22+
pre-commit run --all-files
23+
```
24+
25+
## Adding a New Digest Type
26+
27+
1. Create a slash command in `.claude/commands/ai-news-digest-<type>.md`
28+
2. Add helper scripts under `scripts/<type>/`
29+
3. Add a state file entry in `.state/last-digest-<type>.json`
30+
4. Update `CLAUDE.md` with the new digest's structure and usage
31+
5. Update `README.md` with setup and usage instructions
32+
33+
## Pull Requests
34+
35+
- Keep PRs focused — one feature or fix per PR
36+
- Follow existing code style and patterns
37+
- Update documentation if your change affects usage
38+
- Ensure `pre-commit run --all-files` passes before submitting

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 osisdie
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.

README.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,42 @@
11
# AI News Digest
22

3+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
4+
[![Python 3.12+](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://www.python.org/)
5+
[![CI](https://github.com/osisdie/ai-claude-loop/actions/workflows/ci.yml/badge.svg)](https://github.com/osisdie/ai-claude-loop/actions)
6+
[![Last Commit](https://img.shields.io/github/last-commit/osisdie/ai-claude-loop)](https://github.com/osisdie/ai-claude-loop/commits/main)
7+
38
Automated daily AI news digest powered by Claude Code's `/loop` feature. Posts bilingual digests (English + Traditional Chinese) to Slack `#update-vibe`.
49

510
Two digest types:
611
- **News Digest** — Web news across 6 AI categories
712
- **YouTube Digest** — Video summaries from [@AIDailyBrief](https://www.youtube.com/@AIDailyBrief) with PDF exports
813

14+
## Demo
15+
16+
![YouTube Digest Example](docs/screenshots/example-ai-news-digest-yt.png)
17+
918
## Setup
1019

11-
1. Copy `.env.example` to `.env` and fill in credentials:
20+
1. Install Python dependencies:
21+
```bash
22+
pip install -r requirements.txt
23+
```
24+
25+
2. Install system dependencies:
26+
27+
| Tool | Purpose | Install |
28+
|------|---------|---------|
29+
| `yt-dlp` | Fetch YouTube videos & metadata | `pip install yt-dlp` |
30+
| `ffmpeg` | Audio extraction for Whisper | [ffmpeg.org](https://ffmpeg.org/download.html) |
31+
| `google-chrome` | Headless PDF generation | [chrome](https://www.google.com/chrome/) |
32+
| `b2` | Backblaze B2 CLI for uploads | `pip install b2` |
33+
34+
3. Copy `.env.example` to `.env` and fill in credentials:
1235
```bash
1336
cp .env.example .env
1437
```
1538

16-
2. Required environment variables:
39+
4. Required environment variables:
1740
| Variable | Purpose |
1841
|----------|---------|
1942
| `SLACK_BOT_TOKEN` | Slack Bot Token (`xoxb-...`) with `chat:write` scope |
@@ -24,7 +47,7 @@ Two digest types:
2447
| `B2_BUCKET_NAME` | B2 bucket name (e.g. `claw-dir`) |
2548
| `HF_TOKEN` | HuggingFace token (Whisper fallback for transcripts) |
2649

27-
3. Invite your Slack bot to `#update-vibe`:
50+
5. Invite your Slack bot to `#update-vibe`:
2851
```
2952
/invite @YourBotName
3053
```
342 KB
Loading

requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
markdown>=3.5
2+
python-dotenv>=1.0
3+
huggingface-hub>=0.20

0 commit comments

Comments
 (0)