ملخص أخبار AI اليومي عبر Claude Code CLI وObsidian — صفر تبعيات
كيف بنيت وكيل بحث إخباري يومي بسكربت bash من 6 أسطر، ووضع headless في Claude Code، وmacOS launchd. يبحث في 11 موضوعًا ويكتب الملخصات مباشرةً إلى Obsidian.
TL;DR
سكربت bash من 6 أسطر يشغّل Claude Code CLI في وضع headless كل صباح عند الساعة 9:00. يبحث في الويب عن الأخبار عبر 11 موضوعًا قابلًا للتهيئة، ويرشّح الضجيج، ويكتب ملخصًا منسّقًا بصيغة markdown مباشرةً داخل Obsidian vault متزامن عبر iCloud. صفر تبعيات. نحو 100 سطر من الإعدادات إجمالًا.
المشكلة
بصفتك مطوّرًا، مواكبة عدة تقنيات في آنٍ واحد ضريبة يومية. خلاصات RSS مزدحمة بالضجيج، وTwitter يبتلع الوقت، والنشرات البريدية تصل حين تكون غارقًا في تدفّق العمل. كنت بحاجة إلى شيء يقوم بالبحث نيابةً عني ويعرض النتائج حيث أعمل بالفعل — داخل Obsidian vault الخاص بي.
الحل المعتاد هو بناء خط سكرابينغ: مجدول، وزاحف، وخط معالجة لغة طبيعية NLP، وقاعدة بيانات، وخدمة إشعارات. أسابيع من العمل لأجل شيء قد ينهار حين يغيّر أي موقع بنية HTML الخاصة به. كنت أريد شيئًا أبنيه في فترة بعد ظهر واحدة.
البنية
النظام بأكمله 4 ملفات وصفر تبعيات. إليك كيف يعمل من البداية إلى النهاية:
macOS launchd (9:00 AM daily)
│
└── digest.sh
│
└── claude -p "$(cat prompt.md)" --max-turns 20 --allowedTools Read,WebSearch,WebFetch,Write
│
├── Reads topics.yaml (11 configurable topics)
├── WebSearch → finds news for each topic (last 24-48h)
├── WebFetch → reads full articles
├── Filters noise: old tutorials, promos, AI spam
└── Write → saves digest to Obsidian Vault
│
└── ~/Obsidian Vault/digests/2026-04-12.md
│
└── iCloud sync → available on all devicesالشيفرة (كاملةً)
المشروع بسيط عن قصد. كل سطر يستحق مكانه.
نقطة الدخول: digest.sh
التطبيق بأكمله سكربت bash من 6 أسطر:
#!/bin/bash
DIGEST_DIR="$HOME/Developer/news-digest"
claude -p "$(cat "$DIGEST_DIR/prompt.md")" \
--max-turns 20 \
--allowedTools Read,WebSearch,WebFetch,Writeالخيارات الأساسية: -p يشغّل Claude في وضع headless (دون طرفية تفاعلية)، و--max-turns 20 يمنح الوكيل مساحة كافية للبحث في كل المواضيع، و--allowedTools يقصر الوكيل على قراءة الملفات والبحث في الويب وكتابة المخرجات فقط.
العقل: prompt.md
هنا يكمن الذكاء. يحوّل الـ prompt نموذج Claude إلى وكيل بحث إخباري بتعليمات محددة عمّا يبحث عنه، وكيف يرشّح، وأين يحفظ:
# News Digest Agent
You are a news research agent. Your job is to find today's most important
and interesting news for a senior frontend developer.
## Instructions
1. Read the topics file at ~/Developer/news-digest/topics.yaml
2. For EACH topic, search the web for news from the last 24-48 hours
3. Filter: only include genuinely new and noteworthy items
4. Write the digest as a markdown file to Obsidian Vault digests/YYYY-MM-DD.md
5. IMPORTANT: Use the Write tool to save the file. Do NOT output to stdout.
## Rules
- Language: Ukrainian for summaries, English for titles and technical terms
- If there's no real news for a topic — SKIP IT ENTIRELY
- Prioritize: releases > breaking changes > security > new patterns > discussions
- Max 5 items per topic, sorted by importance
- Include direct links to sources
- Skip promotional content, generic tutorials, and AI-generated spamالإعداد: topics.yaml
المواضيع قابلة للتهيئة بالكامل — أضِف موضوعًا جديدًا فيُدرَج في ملخص الغد. لكل موضوع اسم وسياق اختياري يوجّه بحث الذكاء الاصطناعي:
topics:
- name: better-auth
context: "auth library for TypeScript. New releases, breaking changes"
- name: Next.js
context: "GitHub issues, releases, App Router, Turbopack, performance"
- name: SolidJS
context: "SolidStart, releases, ecosystem, comparison with React"
- name: Tailwind CSS
context: "v4 updates, new utilities, plugins"
- name: Claude AI
context: "Anthropic announcements, Claude Code, new models, MCP, API"
- name: GPT AI
context: "OpenAI announcements, new models, ChatGPT features"
- name: React
context: "React 19+, Server Components, new patterns, ecosystem"
- name: Apple
context: "Hardware, software, WWDC, developer tools, Apple Intelligence"
- name: Notable People
context: >
Latest tweets from: Elon Musk, Dario Amodei, Sam Altman,
Jensen Huang, Andrej Karpathy, Simon Willison, Swyx...
- name: AI Global
context: "Major AI news, new models, regulations, open-source AI"الجدولة عبر launchd
على macOS، يُعدّ launchd الطريقة الأصيلة لجدولة المهام المتكررة (مثل cron على Linux). يحدّد ملف plist متى وكيف يُشغَّل السكربت:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.news-digest</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/you/Developer/news-digest/digest.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/Users/you/Developer/news-digest/logs/stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/you/Developer/news-digest/logs/stderr.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin</string>
<key>HOME</key>
<string>/Users/you</string>
</dict>
</dict>
</plist>ثبّته عبر launchctl load ~/Library/LaunchAgents/com.news-digest.plist. يعمل السكربت يوميًا عند الساعة 9:00، حتى لو كنت قد سجّلت الخروج — سيشغّل launchd المهام الفائتة حين يستيقظ النظام.
كيف تبدو المخرجات
كل صباح، يظهر ملف markdown جديد في Obsidian vault يحوي أخبارًا منظمة ومرتّبة حسب الأولوية:
---
date: 2026-04-12
---
# News Digest — 2026-04-12
## Next.js
### Next.js 16.1 Released with Improved Turbopack Caching
Нова версія Next.js 16.1 включає покращене кешування для Turbopack,
що зменшує час холодного старту на ~40%.
[Посилання](https://nextjs.org/blog/next-16-1)
### Critical Memory Leak Fix in App Router
Виправлено витік пам'яті в App Router при частому перемиканні
між динамічними маршрутами.
[GitHub Issue](https://github.com/vercel/next.js/issues/...)
## Claude AI
### Claude Code 1.5 — MCP Server Auto-Discovery
Anthropic випустив оновлення Claude Code з автоматичним
виявленням MCP серверів у проєкті.
[Блог](https://www.anthropic.com/news/...)بالأرقام
| Metric | Value |
|---|---|
| Total files in project | 4 (digest.sh, prompt.md, topics.yaml, .gitignore) |
| Lines of code | ~100 |
| External dependencies | 0 |
| Setup time | ~10 minutes |
| Daily execution time | 2-5 minutes |
| Cost per run | ~$0.10-0.30 (Claude API usage) |
قرارات التصميم الأساسية
- Claude Code CLI بدلًا من الـ API — لا حاجة لإدارة مفاتيح API أو عملاء HTTP أو تحليل الاستجابات. تتولى الـ CLI المصادقة وتنفيذ الأدوات والتعافي من الأخطاء جاهزةً
- Obsidian بدلًا من البريد الإلكتروني — الملخصات قابلة للبحث والربط ودائمة. تعيش إلى جوار ملاحظاتي بدل أن تغرق في صندوق الوارد
- launchd بدلًا من cron — launchd هو المجدول الأصيل في macOS. يعالج التشغيلات الفائتة والتسجيل ومتغيرات البيئة بنظافة
- YAML للمواضيع — إضافة موضوع جديد تغييرٌ من سطرين. لا حاجة لتعديل الشيفرة
- تخطّي المواضيع الفارغة — إن لم تكن هناك أخبار حقيقية، يُحذف القسم بالكامل. بلا حشو، وبلا محتوى ممطوط
كيف تبني نسختك الخاصة
يمكنك تشغيل هذا خلال 10 دقائق:
- ثبّت Claude Code CLI وسجّل الدخول
- استنسخ المستودع:
git clone https://github.com/oleksiimazurenko/news-digest - عدّل
topics.yamlباهتماماتك وprompt.mdبمسار الحفظ الخاص بك - عدّل ملف plist باسم المستخدم والمسارات الخاصة بك، ثم شغّل
launchctl load - انتظر الساعة 9:00 — أو اختبر يدويًا عبر
bash digest.sh
الخلاصة
أكثر ما يثير الاهتمام في هذا المشروع هو ما ليس فيه. لا قاعدة بيانات، ولا خادم API، ولا حاوية Docker، ولا حزم npm، ولا Python virtualenv، ولا محلل HTML، ولا خط معالجة NLP. مجرد prompt، وقائمة مواضيع، وسكربت من 6 أسطر يفوّض كل العمل الشاق إلى وكيل ذكاء اصطناعي.
هكذا يبدو البناء بوكلاء الذكاء الاصطناعي عمليًا: تحدّد أنت ماذا وأين، ويتولى الوكيل كيف. بلغ إجمالي وقت التطوير نحو ساعتين، بما في ذلك تكرار صياغة الـ prompt للوصول إلى جودة ترشيح جيدة.
المصادر
- news-digest on GitHub — full source code
- Claude Code Documentation — headless mode and CLI flags
- Apple Developer — creating launchd jobs
- Obsidian — markdown knowledge base