البحث
حوّل سؤالًا واحدًا إلى موجز بحث بمصادر
اسأل الويب واحفظ الصفحات خلف الإجابة بصيغة Markdown وأضف ما يقوله الممارسون على X واحتفظ بالأدلة في LiveDoc يمكن البحث فيه لاحقًا.
انسخ الموجّه
استبدل الحقول بين الأقواس المربعة وألصق في Claude Code أو Codex أو أي ذكاء اصطناعي يملك وصولًا إلى الطرفية. يثبّت مهارة Felo ويسأل قبل إنفاق الرصيد وينفّذ سير العمل.
أعدّ موجزًا بحثيًا موثّقًا بالمصادر حول [السؤال أو القرار]. النطاق: [السوق، المنطقة، اللغة]. الفترة: [آخر 30 يومًا / آخر 12 شهرًا]. الجمهور: [من سيقرؤه]. العمق: [نظرة من صفحة واحدة / موجز كامل]. أنتج موجزًا بصيغة Markdown يتضمن: 1. إجابة قصيرة في ثلاث نقاط. 2. جدول أدلة: الادعاء، عنوان المصدر، الرابط، تاريخ النشر. 3. النقاط التي تختلف فيها المصادر. 4. ما لا يزال مجهولًا. 5. قائمة كاملة بالمصادر. القواعد: - كل ادعاء واقعي يحتاج إلى رابط مصدر. افصل الحقائق والآراء واستنتاجاتك. - لا تختلق اقتباسات أو أرقامًا أو تواريخ أو مصادر. البيانات الناقصة تُكتب «لا تتوفر بيانات»، وليس صفرًا. - فضّل المصادر الأولية. استخدم X كإشارة من الممارسين، لا كدليل. - حوّل الفترة إلى تاريخي بداية ونهاية صريحين واذكر المنطقة الزمنية. - قبل استهلاك الأرصدة، اعرض استدعاءات API المخطط لها وانتظر موافقتي. - لا تنشئ مهمة متكررة ولا ترسل رسائل ولا تنشر شيئًا. - اكتب النتيجة في ./research-brief.md ولخّصها في الدردشة.
تتضمن النسخة خطوات التثبيت وقواعد الأمان أيضًا.
ما تحصل عليه
مخرجات نموذجية لتشغيل واحد. ليست توليدًا مباشرًا.
هل تحل النماذج الصغيرة محل الكبيرة في بوتات الدعم؟
إجابة قصيرة
- النماذج الصغيرة كافية للتصنيف والردود الأولى.
- العائق هو جودة الاسترجاع، لا حجم النموذج.
- الفرق التي انتقلت تذكر انخفاض التكلفة لكل تذكرة، لا ارتفاع معدل الحل.
| الادعاء | المصدر | التاريخ |
|---|---|---|
| جودة الاسترجاع تحدد جودة الإجابة | https://example.com/rag-eval | 2026-10-12 |
| تكلفة التذكرة المحلولة انخفضت 38% | https://example.com/support-case | 2026-09-28 |
أين تختلف المصادر
معايير الموردين تُظهر تكافؤًا تقريبًا؛ الاختبارات المستقلة لا تزال ترى فجوة في استرداد المبالغ متعدد الخطوات.
ما لا يزال مجهولًا
هل تُغلق الفجوة بأدوات أفضل أم تحتاج نموذجًا أكبر.
الاستدعاءات الدقيقة
للمطورين: سير العمل نفسه ككود، بترتيب التنفيذ.
عرض استدعاءات API الفعلية
اسأل الويب
يبحث Chat في الويب ويرتّب المصادر ويكتب الإجابة ويعيد الموارد المستخدمة. احفظ الثلاثة الأولى: كل خطوة تالية تتبع أحد هذه الروابط. يرسل المساعد المفتاح مرة واحدة ويرفع خطأً خارج 2xx.
research.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type ChatData = { data: { answer: string; resources: { link: string; title: string }[] }; }; export async function answer(question: string) { const chat = await felo<ChatData>("/v2/chat", { query: question }); return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) }; }مخرجات نموذجية
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }نزّل الصفحات خلف الإجابة
مقتطف لا يكفي لموجز. نزّل الصفحات بصيغة Markdown مع وضع القراءة ليبقى الاقتباس والعناوين دون تشويش التنقل. إعادة طلب URL نفسه قد تستخدم ذاكرة الاستخراج.
research.ts type ExtractData = { data: { content: string } }; const pages = await Promise.all( sources.map((source) => felo<ExtractData>("/v2/web/extract", { url: source.link, output_format: "markdown", with_readability: true, with_cache: true, }).then((page) => ({ ...source, content: page.data.content })), ), );مخرجات نموذجية
// pages[0].content "# Example Article\n\nExtracted article content…"
أضف ما يقوله X
تغطي الأخبار الإعلانات؛ يُظهر X ما يواجهه الناس عمليًا. ابحث آخر سبعة أيام واحفظ الكاتب والوقت لينسب الموجز كل ادعاء. ارفع
limitللتوسيع؛ كل صفحة نتائج فيها cursor.research.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; }[]; }; }; const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000); const social = await felo<XData>("/v2/x/tweet/search", { query: question, limit: 10, since_time: since, });مخرجات نموذجية
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }أرشِف الأدلة في LiveDoc
أنشئ LiveDoc وأضف المصادر كموارد URL. تزيل API تكرار URL التي رآها وتعيد resource id لكل URL، فتستطيع الأسئلة اللاحقة البحث في الأدلة نفسها دون إعادة تنزيل.
research.ts type LiveDocData = { data: { short_id: string } }; const doc = await felo<LiveDocData>("/v2/livedocs", { name: `Research: ${question.slice(0, 60)}`, description: "Sources collected while answering the question", }); await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, { urls: sources.map((source) => ({ url: source.link, title: source.title })), }); console.log(doc.data.short_id); // keep this for later queriesاسأل الأدلة لاحقًا
هذه هي الفائدة: يجري السؤال التالي بحثًا دلاليًا على LiveDoc لا على الويب المفتوح. مرّر
resource_idsفقط لتقييد مجموعة معروفة.research.ts type Retrieved = { data: { title: string; content: string; score: number }[]; }; async function ask(livedoc: string, query: string) { const hits = await felo<Retrieved>( `/v2/livedocs/${livedoc}/resources/retrieve`, { query }, ); return hits.data.filter((hit) => hit.score >= 0.7); }مخرجات نموذجية
[ { "title": "…", "content": "…", "score": 0.92 } ]
ما يتضمنه
- إجابة بمصادر من Chat API والصفحات خلفها
- استخراج الصفحات الكاملة بصيغة Markdown لأقوى المصادر
- منشورات X بالكاتب والتاريخ كإشارة من الممارسين
- LiveDoc يحفظ الأدلة قابلة للبحث للأسئلة اللاحقة
ما لا يفعله
- مصادر عامة فقط؛ قد تفشل الصفحات المدفوعة أو التي تتطلب تسجيل الدخول
- تغطية X إشارة لا مسح تمثيلي
- لا مقابلات ولا بيانات خاصة ولا قواعد بيانات مدفوعة
- حين تكون الأدلة ضعيفة يقول الموجز ذلك بدل ملء الفجوات
- تشغيل واحد لكل موجّه؛ الجدولة في وكيلك أو cron
أسئلة
من أين تأتي المصادر؟
يعيد Chat API الصفحات المستخدمة ويحوّل Web Fetch أقواها إلى Markdown ويضيف X Search منشورات مؤرخة للممارسين. كل عنصر يحتفظ بعنوان URL.
هل يمكن البحث في سوق خارج التقنية؟
نعم. استبدل حقل النطاق بسوقك. قد تملك الأسواق المتخصصة مصادر عامة أقل؛ يعلّم الموجز هذه الفجوات بدل التخمين.
هل تبقى الأدلة بعد التشغيل؟
نعم إذا نُفّذت خطوة LiveDoc. يتيح short_id المعاد للأسئلة اللاحقة البحث في الصفحات نفسها دون إعادة تنزيل.
كم تكلفة موجز واحد؟
يُحتسب بالرصيد حسب الاستخدام؛ الأسعار الحالية في صفحة الأسعار. يطلب الموجّه الموافقة قبل الإنفاق.
هل يمكن تشغيله أسبوعيًا؟
نعم لكن هذا الموجّه يعمل مرة واحدة. ضع الجدولة في وكيل أو cron يشغّل سير العمل نفسه.
ماذا لو كان المصدر خلف جدار دفع؟
يُتخطى ويُعلّم غير متاح. لا يملأ الموجز الفجوة أبدًا بحقيقة أو اقتباس مختلق.
سير عمل مرتبط
انشر ملخص أخبار AI يوميًا يقرأه الفريق فعلًا
احصل على ملخص بمصادر وأضف نقاش الممارسين على X وخذ نص فيديو وركّب الإصدار بصيغة Markdown وأرشفه في LiveDoc.
افتح سير العملالمكتبحوّل صفحة بحث إلى عرض تقديمي
استخرج الصفحة واحفظها كسياق LiveDoc ودع PPT Task API يبني العرض واسأل حتى تجهز الرابط.
افتح سير العملالدعمأجب عن أسئلة الدعم من وثائقك
أنشئ LiveDoc وحمّل مركز المساعدة ودليل التشغيل الداخلي واسترجع المقاطع التي تجيب التذكرة ودع النموذج يجيب من تلك الأدلة فقط.
افتح سير العملاجعله مناسبًا لك
الوصفة نفسها، معدّلة بحسب طريقة تسليمك الفعلية.
اكتب الموجز في ملف
اجمع الإجابة ومقتطفات الصفحات واقتباسات X في Markdown وسلّمها لأداة التقارير أو ثبّتها في مستودع الوثائق. أبقِ روابط المصادر قرب الادعاءات — قيمة الموجز بقيمة اقتباساته.
شغّله وفق جدول
غلّف `answer()` في cron واكتب كل موجز في ملف مؤرخ. يجمع LiveDoc نفسه المصادر، فيجيب الأسبوع الرابع بأدلة الأسابيع الثلاثة الأولى.
تخطَّ LiveDoc
إن كانت لديك قاعدة بيانات فاحفظ فيها إجابة الدردشة والصفحات المستخرجة. خطوة LiveDoc للبحث لا للتخزين الافتراضي.
واصل
صفحات المراجع خلف هذه الوصفة والخطوات التالية.