Puppeteer لاستخراج بيانات الويب: دليل خطوة بخطوة

آخر تحديث في May 22, 2026
 Puppeteer scraper web scraping step-by-step guide title with browser window illustration on a spider web.

إذا جرّبت يومًا سحب بيانات من موقع يحمّل المحتوى أثناء التمرير، أو يخفي الأسعار خلف تسجيل دخول، أو يبدو وكأنه يغيّر تصميمه كل أسبوعين، فأنت تعرف أن المعاناة حقيقية. أدوات الاستخراج الثابتة لم تعد تكفي. في الواقع، يعتمد الآن أكثر من 67% من مستشاري الاستثمار في الولايات المتحدة على استخراج بيانات الويب للحصول على بيانات بديلة، كما أن 81% من تجار التجزئة في الولايات المتحدة يَؤتمتون مراقبة أسعار المنافسين. لكن المفاجأة الأهم: كثير من هذه البيانات موجود على مواقع ديناميكية تُحمَّل بواسطة JavaScript وتختبئ خلف تفاعلات المستخدم. وهنا يأتي دور أتمتة المتصفح بلا واجهة، وأدوات مثل Puppeteer.

وبصفتي شخصًا أمضى سنوات في بناء أدوات الأتمتة والذكاء الاصطناعي — ونعم، في استخراج بيانات عدد لا بأس به من المواقع لفرق المبيعات والعمليات — فقد رأيت بنفسي كيف يستطيع Puppeteer فتح الوصول إلى بيانات تفوّتُها الأدوات التقليدية. لكنني رأيت أيضًا كيف قد تصبح أعباء البرمجة عقبة حقيقية أمام مستخدمي الأعمال. لذلك، سأشرح لك في هذا الدليل ما هي أداة استخراج Puppeteer بالضبط، وكيف تستخدمها لاستخراج بيانات الويب، ومتى قد يكون من الأفضل اللجوء إلى خيار أبسط حتى — مثل Thunderbit، أداة استخراج ويب بالذكاء الاصطناعي ومن دون برمجة.

ما هي أداة استخراج Puppeteer؟ نظرة سريعة

puppeteer-scraper-data-extraction-automation.png لنبدأ من الأساسيات. Puppeteer هي مكتبة مفتوحة المصدر من Google تعمل مع Node.js، وتتيح لك التحكم في متصفح Chrome أو Chromium من دون واجهة باستخدام JavaScript. وببساطة: هي كأن لديك روبوتًا يستطيع فتح الصفحات، النقر على الأزرار، تعبئة النماذج، التمرير، والأهم من ذلك كله — استخراج البيانات — من دون أن يظهر أي شيء على شاشتك.

ما الذي يجعل Puppeteer مميزًا؟

  • يستطيع عرض المحتوى الديناميكي — أي إنه ينتظر تحميل JavaScript كما يفعل المستخدم الحقيقي.
  • يستطيع محاكاة أفعال المستخدم: النقر، والكتابة، والتمرير، وحتى التعامل مع النوافذ المنبثقة.
  • وهو مثالي لاستخراج البيانات من المواقع التي لا تظهر فيها المعلومات إلا بعد التفاعل، مثل قوائم التجارة الإلكترونية، أو موجزات التواصل الاجتماعي، أو لوحات التحكم.

كيف يقارن مع الأدوات الأخرى؟

  • Selenium: المخضرم في أتمتة المتصفحات. يعمل مع متصفحات ولغات متعددة، لكنه أثقل قليلًا وأكثر تقليدية. ممتاز لاختبار التوافق بين المتصفحات، لكن Puppeteer أسرع لمشروعات Chrome وNode.js.
  • Thunderbit: هنا أتحمس فعلًا. Thunderbit هو أداة استخراج ويب بلا برمجة ومدعومة بالذكاء الاصطناعي تعمل داخل متصفحك. بدل كتابة السكربتات، كل ما عليك هو النقر على «اقتراح الحقول بالذكاء الاصطناعي» ليكتشف الذكاء الاصطناعي ما ينبغي استخراجه. إنه مثالي لمستخدمي الأعمال الذين يريدون النتائج من دون كتابة كود (سأعود إلى هذا لاحقًا).

باختصار: Puppeteer = أعلى مستوى من التحكم (إذا كنت تبرمج). Thunderbit = أعلى مستوى من السهولة (إذا كنت لا تريد البرمجة).

لماذا يهم استخراج الويب باستخدام Puppeteer لمستخدمي الأعمال

ما هو استخراج البيانات وكيف يتم في 2026 Get Started Free

لنكن صريحين: استخراج بيانات الويب لم يعد حكرًا على المخترقين أو علماء البيانات. فرق المبيعات والعمليات والتسويق وحتى العقارات تستخدم بيانات الويب لتسبق غيرها. ومع وجود الكثير من المعلومات الحيوية محبوسة خلف مواقع ديناميكية، غالبًا ما يكون Puppeteer هو المفتاح لفتحها.

فيما يلي بعض حالات الاستخدام الواقعية:

حالة الاستخدامالمستفيدونالأثر / العائد على الاستثمار
توليد العملاء المحتملينالمبيعات، تطوير الأعمالأتمتة بناء قوائم العملاء المحتملين؛ توفير أكثر من 8 ساعات أسبوعيًا لكل مندوب (دراسة حالة)
مراقبة الأسعارالتجارة الإلكترونية، عمليات المنتجاتتتبّع المنافسين في الوقت الفعلي؛ وفّرت إحدى الشركات الكبرى 3.8 مليون دولار سنويًا (المصدر)
أبحاث السوقالتسويق، الاستراتيجية، المالية67% من مستشاري الاستثمار يستخدمون بيانات مستخرجة من الويب؛ ويصل العائد أحيانًا إلى 890% (المصدر)
تجميع بيانات العقاراتالوسطاء، المحللوناستخراج أكثر من 50 صفحة عقارية في دقائق بدل ساعات (المصدر)
تتبّع الامتثالالعمليات، الشؤون القانونيةأتمتة المراقبة؛ تجنّبت إحدى شركات التأمين غرامات بقيمة 50 مليون دولار (المصدر)

ولا ننسَ أيضًا أن أكثر من 40% من الموظفين يقضون ربع أسبوع عملهم في المهام المتكررة مثل جمع البيانات. أتمتة ذلك عبر استخراج الويب ليست مجرد ميزة لطيفة — بل ميزة تنافسية.

البدء: إعداد أداة استخراج Puppeteer

هل أنت مستعد لبدء التنفيذ؟ إليك كيفية تشغيل Puppeteer في أقل من 10 دقائق (بافتراض أنك مرتاح قليلًا مع JavaScript):

1. ثبّت Node.js
يعمل Puppeteer على Node.js. حمّل أحدث إصدار LTS من nodejs.org.

2. أنشئ مجلد مشروع جديد
افتح الطرفية وشغّل:

mkdir puppeteer-scraper-demo
cd puppeteer-scraper-demo
npm init -y

3. ثبّت Puppeteer

npm install puppeteer

سيؤدي هذا أيضًا إلى تنزيل إصدار متوافق من Chromium (حوالي 100 ميغابايت).

4. أنشئ أول سكربت لك
أنشئ ملفًا باسم scrape.js:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
  const title = await page.title();
  console.log('عنوان الصفحة:', title);
  await browser.close();
})();

وشغّله عبر:

node scrape.js

إذا رأيت «عنوان الصفحة: Example Domain»، فتهانينا — لقد أتمتَّ Chrome للتو!

بناء أول سكربت لاستخراج بيانات الويب باستخدام Puppeteer

لننتقل إلى التطبيق العملي. لنفترض أنك تريد استخراج الاقتباسات من quotes.toscrape.com (موقع تجريبي لأدوات الاستخراج).

الخطوة 1: الانتقال إلى الصفحة

await page.goto('http://quotes.toscrape.com', { waitUntil: 'networkidle0' });

الخطوة 2: استخراج البيانات

const quotes = await page.evaluate(() => {
  return Array.from(document.querySelectorAll('.quote')).map(node => ({
    text: node.querySelector('.text')?.innerText.trim(),
    author: node.querySelector('.author')?.innerText.trim(),
    tags: Array.from(node.querySelectorAll('.tag')).map(tag => tag.innerText.trim())
  }));
});
console.log(quotes);

الخطوة 3: التعامل مع الترقيم الصفحي

let hasNext = true;
let allQuotes = [];
while (hasNext) {
  // استخراج الاقتباسات كما في الأعلى
  const quotes = await page.evaluate(/* ... */);
  allQuotes.push(...quotes);

  const nextButton = await page.$('li.next > a');
  if (nextButton) {
    await Promise.all([
      page.click('li.next > a'),
      page.waitForNavigation({ waitUntil: 'networkidle0' })
    ]);
  } else {
    hasNext = false;
  }
}

الخطوة 4: الحفظ بصيغة JSON

const fs = require('fs');
fs.writeFileSync('quotes.json', JSON.stringify(allQuotes, null, 2));

وهكذا تكون قد أنشأت أداة Puppeteer أساسية تنتقل بين الصفحات، وتستخرج البيانات، وتتعامل مع الترقيم الصفحي، وتحفظ النتائج.

تقنيات متقدمة في أداة استخراج Puppeteer: التعامل مع المحتوى الديناميكي

معظم المواقع الواقعية ليست بسيطة كقائمة ثابتة. إليك كيف تتعامل مع الأمور الصعبة:

1. انتظار العناصر الديناميكية

await page.waitForSelector('.product-list-item');

هذا يضمن أن المحتوى الذي تريده قد تم تحميله قبل أن تحاول سحبه.

2. محاكاة أفعال المستخدم

  • النقر على زر: await page.click('#load-more');
  • الكتابة في حقل: await page.type('#search', 'laptop');
  • التمرير في الصفحات اللانهائية:
    // ملاحظة: تمت إزالة page.waitForTimeout في Puppeteer v22. استخدم وعدًا عاديًا بدلًا من ذلك.
    const sleep = (ms) => new Promise(r => setTimeout(r, ms));
    
    let previousHeight = await page.evaluate('document.body.scrollHeight');
    while (true) {
      await page.evaluate('window.scrollTo(0, document.body.scrollHeight)');
      await sleep(1500);
      const newHeight = await page.evaluate('document.body.scrollHeight');
      if (newHeight === previousHeight) break;
      previousHeight = newHeight;
    }
    


**3. التعامل مع تسجيل الدخول**
```javascript
await page.goto('https://exampleshop.com/login');
await page.type('#login-username', 'myusername');
await page.type('#login-password', 'mypassword');
await page.click('#login-button');
await page.waitForNavigation({ waitUntil: 'networkidle0' });

4. التعامل مع البيانات المحمّلة عبر AJAX أحيانًا لا تكون البيانات موجودة في DOM، بل تأتي من استدعاء API. يمكنك اعتراض الاستجابات الشبكية عبر:

page.on('response', async response => {
  if (response.url().includes('/api/products')) {
    const data = await response.json();
    // معالجة البيانات
  }
});

مثال واقعي: استخراج بيانات المنتجات من موقع تجارة إلكترونية

لنضع كل شيء معًا. تخيّل أنك تريد استخراج أسماء المنتجات والأسعار والصور من موقع تجارة إلكترونية (تجريبي) بعد تسجيل الدخول.

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();

  // الخطوة 1: تسجيل الدخول
  await page.goto('https://exampleshop.com/login');
  await page.type('#login-username', 'myusername');
  await page.type('#login-password', 'mypassword');
  await page.click('#login-button');
  await page.waitForNavigation({ waitUntil: 'networkidle0' });

  // الخطوة 2: الانتقال إلى صفحة الفئة
  await page.goto('https://exampleshop.com/category/laptops', { waitUntil: 'networkidle0' });

  // الخطوة 3: استخراج المنتجات
  const products = await page.evaluate(() => {
    return Array.from(document.querySelectorAll('.product-item')).map(item => ({
      name: item.querySelector('.product-title')?.innerText.trim() || '',
      price: item.querySelector('.product-price')?.innerText.trim() || '',
      image: item.querySelector('img.product-image')?.src || ''
    }));
  });

  // الخطوة 4: الحفظ بصيغة JSON
  fs.writeFileSync('products.json', JSON.stringify(products, null, 2));

  await browser.close();
})();

هذا السكربت يسجّل الدخول، ويتنقل بين الصفحات، ويستخرج البيانات، ويحفظها — كل ذلك تلقائيًا. وللاحتياجات الأكثر تقدمًا، يمكنك إضافة حلقات للترقيم الصفحي أو حتى النقر على كل منتج للحصول على تفاصيل أكثر.

Thunderbit: جعل أداة استخراج Puppeteer أبسط بالذكاء الاصطناعي

جرّب إضافة Thunderbit لمتصفح Chrome استخرج أي موقع باستخدام الذكاء الاصطناعي في نقرتين فقط. Get Started Free

الآن، إذا وصلت إلى هنا وقلت في نفسك: «هذا رائع، لكنني لا أريد كتابة كود كلما احتجت إلى مجموعة بيانات جديدة»، فأنت لست وحدك. لهذا السبب بالضبط بنينا Thunderbit.

ما الذي يجعل Thunderbit مختلفًا؟

  • من دون كتابة كود: ما عليك سوى تثبيت إضافة Thunderbit لمتصفح Chrome، وفتح الصفحة التي تريد استخراجها، ثم النقر على «اقتراح الحقول بالذكاء الاصطناعي».
  • اكتشاف الحقول بالذكاء الاصطناعي: يقرأ Thunderbit الصفحة ويقترح أفضل الأعمدة للاستخراج — مثل «اسم المنتج» و«السعر» و«الصورة» وغيرها.
  • يتعامل مع المحتوى الديناميكي: تمرير لا نهائي، ونوافذ منبثقة، وصفحات فرعية؟ يستطيع ذكاء Thunderbit التعامل معها، عبر التنقل بين الصفحات أو حتى زيارة صفحة تفاصيل كل منتج لإثراء بياناتك.
  • تصدير فوري: أرسل بياناتك مباشرة إلى Excel أو Google Sheets أو Notion أو Airtable بنقرة واحدة. ولا توجد رسوم إضافية على التصدير.
  • قوالب للمواقع الشائعة: تحتاج إلى استخراج Amazon أو Zillow أو LinkedIn؟ لدى Thunderbit قوالب فورية — من دون أي إعداد.
  • استخراج عبر السحابة أو المتصفح: للمهام الكبيرة، يستطيع Thunderbit استخراج ما يصل إلى 50 صفحة دفعة واحدة عبر السحابة.

رأيت مستخدمين ينتقلون من «أتمنى لو أستطيع الحصول على هذه البيانات» إلى «ها هو ملفّ الجدول الخاص بي» في أقل من خمس دقائق. والأفضل من ذلك؟ لا مزيد من القلق بشأن تعطل السكربتات عندما يغيّر الموقع تصميمه — فذكاء Thunderbit يتكيّف في الوقت الحقيقي.

جرّب أداة Thunderbit لاستخراج الويب بالذكاء الاصطناعي مجانًا

Puppeteer مقابل Thunderbit: اختيار أداة استخراج الويب المناسبة

إذًا، أيهما يجب أن تستخدم؟ هكذا ألخّص الأمر للفرق:

العاملPuppeteer (بالكود)Thunderbit (من دون كود، بالذكاء الاصطناعي)
سهولة الاستخداميتطلب معرفة بـ JavaScript وDOMبالنقر فقط، والذكاء الاصطناعي يقترح الحقول
سرعة الإعدادمن ساعات إلى أيام للمهام المعقدةدقائق — ثبّت وابدأ مباشرة
التحكم / المرونةأقصى مستوى: اكتب أي منطق مخصص وادمجه مع كود آخرممتاز للحالات القياسية؛ أقل ملاءمة لسير العمل شديد التخصيص
المحتوى الديناميكيبرمجة يدوية لعمليات الانتظار والنقر والتمريرالذكاء الاصطناعي المدمج يتعامل تلقائيًا مع المحتوى الديناميكي والترقيم الصفحي والصفحات الفرعية
الصيانةأنت مسؤول عن السكربتات — حدّثها عندما يتغير الموقعيتكيّف الذكاء الاصطناعي مع تغيّر التخطيط؛ صيانة أقل على المستخدم
تصدير البياناتتكتب منطق التصدير بنفسكتصدير بنقرة واحدة إلى Excel وSheets وNotion وAirtable وCSV وJSON
الأفضل لـالمطورين، والمهام المخصصة جدًا، أو عمليات الاستخراج واسعة النطاقمستخدمي الأعمال، والمشروعات السريعة، والفرق غير التقنية
التكلفةمجاني (باستثناء وقتك وأي بنية تحتية)تتوفر خطة مجانية؛ والخطط المدفوعة حسب الرصيد (انظر أسعار Thunderbit)

الخلاصة:

  • استخدم Puppeteer إذا كنت تحتاج إلى تحكم كامل، وتمتلك موارد برمجية، أو تريد دمج الاستخراج داخل تطبيق أكبر.
  • استخدم Thunderbit إذا كنت تريد نتائج سريعة، ولا تريد البرمجة، أو تحتاج إلى تمكين زملائك غير التقنيين.

وبصراحة، رأيت فرقًا تستخدم الأداتين معًا: Thunderbit للإنجاز السريع والنمذجة الأولية، وPuppeteer للتكاملات العميقة أو الحالات الخاصة.

قائمة تحقق خطوة بخطوة: تنفيذ مشروع استخراج ويب ناجح باستخدام Puppeteer

scraping-project-checklist-steps.png هذه هي قائمة التحقق التي أعتمد عليها دائمًا لمشروع استخراج سلس باستخدام Puppeteer:

  1. حدّد أهدافك: ما البيانات التي تحتاجها؟ وأين توجد؟
  2. حلّل الموقع: هل هو ديناميكي؟ هل يحتاج إلى تسجيل دخول؟ هل توجد إجراءات لمكافحة الروبوتات؟
  3. أعدّ بيئتك: Node.js وPuppeteer وأي مكتبات مساعدة.
  4. اكتب نموذجًا أوليًا: ابدأ بصفحة واحدة، واضبط المحددات بشكل صحيح.
  5. تعامل مع المحتوى الديناميكي: استخدم waitForSelector، ومحاكاة النقر/التمرير عند الحاجة.
  6. أضف الترقيم الصفحي أو الحلقات: استخرج كل الصفحات، لا صفحة واحدة فقط.
  7. طبّق أساليب منع الحظر: عشوّن التأخيرات، واضبط User-Agent حقيقيًا، واستخدم البروكسي إذا لزم الأمر.
  8. صدّر البيانات وتحقق منها: احفظها بصيغة JSON/CSV، وتأكد من اكتمالها.
  9. حسّن الأخطاء وتعامل معها: أضف try/catch، وسجّل التقدم، وتعامل مع البيانات الناقصة بسلاسة.
  10. راقب وحافظ على المشروع: المواقع تتغير — كن مستعدًا لتحديث السكربت.

نصائح لاستكشاف الأخطاء وإصلاحها:

  • إذا كانت المحددات تُرجع null، فتأكد من HTML جيدًا واستخدم أوامر الانتظار.
  • إذا تم حظرك، فأبطئ السرعة، أو بدّل عناوين IP، أو استخدم إضافات التخفي.
  • إذا تعطل السكربت، فتحقق من تسرب الذاكرة أو الاستثناءات غير المعالجة.

الخاتمة وأهم النقاط

أصبح استخراج بيانات الويب مهارة لا غنى عنها للفرق المعتمدة على البيانات. يمنحك Puppeteer القدرة على استخراج البيانات حتى من أكثر المواقع ديناميكية واعتمادًا على JavaScript — لكنه يتطلب بعض المهارات البرمجية وصيانة مستمرة. أما مستخدمو الأعمال الذين يريدون تجاوز الكود والوصول مباشرة إلى البيانات، فإن Thunderbit يقدم بديلًا مدعومًا بالذكاء الاصطناعي ومن دون برمجة، سريعًا ومرنًا ومتينًا بشكل مفاجئ.

وهنا ما أوصي به:

  • إذا كنت تقنيًا وتحتاج إلى تخصيص عميق، فابدأ بـ Puppeteer.
  • إذا كنت تريد السرعة والبساطة وصيانة أقل، فجرّب Thunderbitإضافة Chrome المجانية مكان ممتاز للبدء).
  • بالنسبة لمعظم الفرق، فإن المزج بين الاثنين يغطي 99% من احتياجات بيانات الويب لديك.

هل تريد المزيد من الأدلة المشابهة؟ تفقد مدونة Thunderbit للحصول على شروحات ومقارنات وأحدث ما في استخراج الويب بالذكاء الاصطناعي.

جرّب Thunderbit AI Web Scraper Get Started Free

الأسئلة الشائعة

1. ما هي أداة استخراج Puppeteer ولماذا تُستخدم لاستخراج بيانات الويب؟
Puppeteer هي مكتبة Node.js تتيح لك التحكم في متصفح Chrome بلا واجهة باستخدام JavaScript. تُستخدم لاستخراج بيانات الويب لأنها قادرة على تحميل المحتوى الديناميكي، ومحاكاة أفعال المستخدم، واستخراج البيانات من المواقع التي لا تستطيع الأدوات التقليدية التعامل معها.

2. كيف يقارن Puppeteer مع Selenium وThunderbit؟
يعمل Selenium مع متصفحات ولغات متعددة لكنه أثقل. أما Puppeteer فهو أكثر تركيزًا على Chrome/Node.js وأسرع في كثير من مهام الاستخراج. من جهة أخرى، Thunderbit هو أداة بلا برمجة ومدعومة بالذكاء الاصطناعي تمكّن المستخدمين غير التقنيين من استخراج البيانات ببضع نقرات فقط.

3. ما الفوائد التجارية الرئيسية لاستخراج الويب باستخدام Puppeteer؟
تؤدي أتمتة جمع البيانات إلى توفير الوقت وتقليل الأخطاء وتمكين رؤى فورية لفرق المبيعات والتسويق والعمليات وغير ذلك. وتتراوح حالات الاستخدام من توليد العملاء المحتملين إلى مراقبة الأسعار وأبحاث السوق.

4. ما أكبر التحديات في استخراج البيانات باستخدام Puppeteer؟
أبرز التحديات هي التعامل مع المحتوى الديناميكي، وتجنب حظر الروبوتات، والحفاظ على السكربتات عندما تتغير المواقع. ستحتاج إلى كتابة كود لإدارة أوقات الانتظار، ومحاكاة التفاعلات، والتعامل مع الأخطاء.

5. متى يجب أن أستخدم Thunderbit بدلًا من Puppeteer؟
استخدم Thunderbit إذا كنت تريد الاستغناء عن البرمجة، أو تحتاج إلى نتائج سريعة، أو تريد تمكين زملائك غير التقنيين. وهو مثالي لمهام الاستخراج القياسية، والمشروعات السريعة، أو عندما تريد فقط تصدير البيانات إلى Excel أو Google Sheets بأقل قدر من التعقيد.

هل أنت مستعد لتجربة طريقة أذكى للاستخراج؟ حمّل Thunderbit أو تعمّق أكثر عبر المزيد من الأدلة على مدونة Thunderbit. استخراج موفق!

المزيد للتعلّم

Shuai Guan
Shuai Guan
الرئيس التنفيذي في Thunderbit | خبير في أتمتة البيانات بالذكاء الاصطناعي Shuai Guan هو الرئيس التنفيذي لشركة Thunderbit وخريج كلية الهندسة بجامعة ميشيغان. وبالاستناد إلى ما يقرب من عشر سنوات من الخبرة في مجالي التقنية وبنية SaaS، يتخصص في تحويل نماذج الذكاء الاصطناعي المعقدة إلى أدوات عملية لاستخراج البيانات بدون الحاجة إلى البرمجة. في هذه المدونة، يشارك رؤى صريحة ومجرّبة ميدانيًا حول استخراج البيانات من الويب واستراتيجيات الأتمتة، لمساعدتك على بناء سير عمل أذكى يعتمد على البيانات. وعندما لا يكون منشغلاً بتحسين تدفقات العمل الخاصة بالبيانات، يوجّه نفس دقته واهتمامه بالتفاصيل إلى شغفه بالتصوير الفوتوغرافي.
Topics
أداة استخراج Puppeteerاستخراج بيانات الويب باستخدام Puppeteer
جدول المحتويات
Thunderbit · وكيل بيانات الويب بالذكاء الاصطناعي

Extract data from any page in 1 click

موثوق به من قبل أكثر من 250,000 مستخدم
الخطة المجانية متاحة
استخرج البيانات باستخدام الذكاء الاصطناعي
انقل البيانات بسهولة إلى Google Sheets أو Airtable أو Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week