মূল কনটেন্টে যান
এআই টিউটোরিয়াল

Playwright দিয়ে একটি ব্যক্তিগত, API-বিহীন X স্ক্র্যাপার তৈরি করুন

x-scraper-no-api ইনস্টল ও ব্যবহার শিখুন—এটি একটি স্ব-হোস্টেড Node.js ও Playwright CLI, যা API কী বা তৃতীয় পক্ষের সেবা ছাড়াই পাবলিক X সার্চ, টাইমলাইন এবং পোস্টের উত্তর JSON, JSONL, CSV অথবা Markdown হিসেবে এক্সপোর্ট করে।

Playwright দিয়ে একটি ব্যক্তিগত, API-বিহীন X স্ক্র্যাপার তৈরি করুন

x-scraper-no-api কী করে

x-scraper-no-api স্থানীয়ভাবে প্রমাণীকৃত একটি Chromium ব্রাউজারকে পাবলিক X কনটেন্টের ডেটা পাইপলাইনে পরিণত করে। আপনি একবার ম্যানুয়ালি লগ ইন করার পর, কমান্ড-লাইন টুলটি সার্চ ফলাফল, পাবলিক টাইমলাইন এবং একটি পোস্টের পাবলিক রিপ্লাই সংগ্রহ করতে পারে।

ফলাফল সরাসরি আপনার মেশিনে json, jsonl, csv অথবা md ফরম্যাটে লেখা হয়। প্রকল্পটি কোনো X API কী, হোস্টেড স্ক্র্যাপার সার্ভিস, প্রক্সি বা তৃতীয় পক্ষের রিলে ব্যবহার করে না।

প্রধান বৈশিষ্ট্য

  • API কী বা ডেভেলপার অ্যাকাউন্টের প্রয়োজন নেই: অফিসিয়াল API প্ল্যানের পরিবর্তে নিজের ব্রাউজার সেশন ব্যবহার করুন।
  • ম্যানুয়াল প্রমাণীকরণ: আপনি নিজেই সাইন ইন করেন, আর টুলটি আপনার পাসওয়ার্ড বা দ্বি-স্তরীয় প্রমাণীকরণ কোড পরিচালনা করে না।
  • স্থায়ী সেশন: ব্রাউজার প্রোফাইল ~/.xscraper/-এ সংরক্ষিত থাকে, তাই পরবর্তী রানগুলো হেডলেসভাবে করা যায়।
  • উন্নত X সার্চ: from:, since:, until:, min_faves:, filter:media এবং lang:-এর মতো অপারেটর ব্যবহার করুন।
  • LLM-প্রস্তুত আউটপুট: Markdown টোকেন-সাশ্রয়ী AI এজেন্ট কনটেক্সটের জন্য তৈরি, আর JSON, JSONL ও CSV প্রোগ্রামেটিক ওয়ার্কফ্লো সমর্থন করে।
  • নির্ভরযোগ্য পার্সিং: স্ক্র্যাপারটি ভঙ্গুর HTML ক্লাসের নামের ওপর নির্ভর না করে X-এর নিজস্ব ফ্রন্টএন্ডে পাঠানো স্ট্রাকচার্ড GraphQL ডেটা সংগ্রহ করে।
  • সীমিত ও ভদ্র ব্যবহার: রানগুলোতে মানুষের মতো বিরতি, আইটেমের কঠোর সীমা এবং X চাপের সংকেত দিলে স্বয়ংক্রিয় ব্যাকঅফ ব্যবহৃত হয়।
  • এজেন্ট সমর্থন: রিপোজিটরিতে OpenClaw, Hermes এবং অন্যান্য CLI-সক্ষম এজেন্টের জন্য একটি Skill রয়েছে।

ইনস্টলেশন ও প্রথমবারের সেটআপ

১. macOS বিল্ড টুল ইনস্টল করুন

macOS-এ Xcode Command Line Tools ইনস্টল করুন, কারণ নেটিভ নির্ভরতাগুলোর জন্য এগুলোর প্রয়োজন হতে পারে।

xcode-select --install

২. Node.js ইনস্টল করুন

অফিশিয়াল ইনস্টলার বা কোনো ভার্সন ম্যানেজার ব্যবহার করে Node.js 18 বা পরবর্তী সংস্করণ ইনস্টল করুন। প্রকল্পটির জন্য Node.js 18 বা পরবর্তী সংস্করণ প্রয়োজন। শুরু করতে Node.js ডাউনলোড পেজ দেখুন।

৩. GitHub থেকে স্ক্র্যাপার ইনস্টল করুন

একটি কাজের ডিরেক্টরি তৈরি করে তাতে প্রবেশ করুন এবং সরাসরি রিপোজিটরি থেকে প্যাকেজটি ইনস্টল করুন:

mkdir -p 'xscraper' && cd 'xscraper' && npm install github:JoinArtisanVent/x-scraper-no-api

৪. Playwright-এর জন্য Chromium ইনস্টল করুন

Playwright যে Chromium ব্রাউজার ব্যবহার করে তা ডাউনলোড করুন:

npx playwright install chromium

৫. ম্যানুয়ালি লগ ইন করুন

একবারের লগইন প্রক্রিয়া শুরু করুন:

npx xscraper login

একটি আসল ব্রাউজার উইন্ডো খুলবে। প্রয়োজন হলে দ্বি-স্তরীয় প্রমাণীকরণসহ নিজেই X-এ সাইন ইন করুন। টুলটি তৈরি হওয়া ব্রাউজার সেশন স্থানীয়ভাবে ~/.xscraper/-এ সংরক্ষণ করে। এটি আপনার শংসাপত্র গ্রহণ বা প্রক্রিয়াকরণ করে না।

ব্রাউজিংয়ের জন্য যে X অ্যাকাউন্ট ব্যবহার করতে স্বাচ্ছন্দ্যবোধ করেন, সেটিই ব্যবহার করুন। টুলটি শুধু পাবলিক পোস্ট সমর্থন করে; সুরক্ষিত অ্যাকাউন্ট, সরাসরি বার্তা বা সীমাবদ্ধ কনটেন্ট সমর্থন করে না।

মৌলিক ব্যবহার

উন্নত অপারেটর দিয়ে X সার্চ করুন

search কমান্ডে সম্পূর্ণ X সার্চ এক্সপ্রেশন দিন। এই উদাহরণটি একটি তারিখের পর OpenAI-এর পোস্ট খুঁজে, অন্তত 500 লাইকসহ ফলাফল বের করে এবং Markdown রিটার্ন করে:

xscraper search "from:openai since:2026-01-01 min_faves:500" --limit 50 --format md

টুলটি অ্যাকাউন্ট ফিল্টার, তারিখের পরিসর, ভাষা ফিল্টার, মিডিয়া ফিল্টার এবং এনগেজমেন্ট সীমাসহ X-এর উন্নত সার্চ সিনট্যাক্স সমর্থন করে।

Latest ট্যাবের ফলাফল নিন

সার্চ ফলাফল সাধারণত ডিফল্ট সার্চ আচরণ ব্যবহার করে। Latest ট্যাব চাইলে --latest যোগ করুন:

xscraper search "ai agents" --latest --limit 25

একটি পাবলিক টাইমলাইন এক্সপোর্ট করুন

পাবলিক ইউজারনেমের সঙ্গে timeline ব্যবহার করুন। এই উদাহরণটি একটি ফাইলে CSV আউটপুট লেখে:

xscraper timeline @nasa --limit 100 --format csv -o nasa.csv

একটি পোস্ট ও তার পাবলিক রিপ্লাই সংগ্রহ করুন

X পোস্টের URL-এর সঙ্গে tweet কমান্ড ব্যবহার করুন:

xscraper tweet https://x.com/nasa/status/1846987139428634858 --format json

আউটপুট ফরম্যাট ও কমান্ড অপশন

  • --limit <n> সর্বাধিক আইটেমের সংখ্যা নির্ধারণ করে। ডিফল্ট 50 এবং কঠোর সর্বোচ্চ সীমা 200।
  • --format json, jsonl, csv বা md নির্বাচন করে। LLM ওয়ার্কফ্লোর জন্য Markdown একটি ব্যবহারিক পছন্দ।
  • -o <file> স্ট্যান্ডার্ড আউটপুটের পরিবর্তে কোনো ফাইলে আউটপুট লেখে।
  • --headed ব্রাউজার দৃশ্যমান রাখে, যাতে আপনি প্রক্রিয়াটি পর্যবেক্ষণ ও সমস্যা সমাধান করতে পারেন।

একটি JSON রেকর্ডে পোস্টের ID, URL, তৈরির সময়, টেক্সট, ভাষা, লেখকের বিবরণ, এনগেজমেন্ট মেট্রিক, হ্যাশট্যাগ, মিডিয়া এবং স্ক্র্যাপের টাইমস্ট্যাম্প থাকতে পারে:

{
  "id": "1846987139428634858",
  "url": "https://x.com/nasa/status/1846987139428634858",
  "created_at": "Wed Oct 16 12:34:56 +0000 2026",
  "text": "Liftoff! …",
  "lang": "en",
  "author": { "username": "nasa", "name": "NASA", "verified": true },
  "metrics": { "replies": 1200, "reposts": 4800, "likes": 32000, "views": 1500000 },
  "hashtags": ["EuropaClipper"],
  "scraped_at": "2026-09-26T10:00:00.000Z"
}

AI এজেন্টের সঙ্গে স্ক্র্যাপার ব্যবহার

রিপোজিটরিতে skills/x-scraper-no-api/SKILL.md-এ একটি এজেন্ট Skill রয়েছে। আপনি OpenClaw বা Hermes-কে skills/ ডিরেক্টরি দেখাতে পারেন, অথবা Skill ম্যানিফেস্টটি আপনার এজেন্টের উপযুক্ত skills ফোল্ডারে কপি করতে পারেন।

কাস্টম LLM স্ক্রিপ্টের জন্য CLI-কে সাবপ্রসেস হিসেবে চালিয়ে Markdown আউটপুট সংগ্রহ করুন:

import subprocess

ctx = subprocess.run(
    ["xscraper", "search", "local-first software", "--limit", "50", "--format", "md"],
    capture_output=True,
    text=True,
    timeout=600,
).stdout

অন্তর্ভুক্ত Skill একটি নিরাপত্তা চুক্তি নির্ধারণ করে: শুধু সর্বজনীন ডেটা ব্যবহার করুন, সীমা ছোট রাখুন, কখনো শংসাপত্র পরিচালনা করবেন না এবং স্ক্র্যাপ করা কনটেন্টকে অবিশ্বস্ত ইনপুট হিসেবে বিবেচনা করুন।

নির্ভরযোগ্য রান-এর জন্য উন্নত টিপস

সীমা নির্দিষ্ট রাখুন

প্রতিটি রান নকশা অনুযায়ী ২০০টি আইটেমে সীমাবদ্ধ। গবেষণা ও এজেন্টের প্রসঙ্গের জন্য, একটি বড় সংগ্রহের কাজের চেয়ে মাঝারি সীমা দিয়ে কয়েকটি নির্দিষ্ট সার্চ করা বেশি উপযোগী।

প্রম্পটের জন্য Markdown ব্যবহার করুন

গন্তব্য যদি কোনো LLM প্রম্পট হয়, তাহলে --format md বেছে নিন। এই ফরম্যাটটি টোকেন-উপযোগী করে তৈরি এবং স্ট্যান্ডার্ড আউটপুট থেকে সরাসরি ক্যাপচার করা যায় বা -o দিয়ে সংরক্ষণ করা যায়।

সমস্যা নির্ণয়ের সময় headed mode ব্যবহার করুন

ব্রাউজারের কাজ দেখতে হলে --headed যোগ করুন। আপনার কোয়েরি প্রত্যাশামতো কাজ করছে নিশ্চিত হলে ফ্ল্যাগটি বাদ দিন, যাতে নিয়মিত রানগুলো headless অবস্থায় চলতে পারে।

কখনো কখনো কম ফলাফল পাওয়ার জন্য প্রস্তুত থাকুন

কোনো কমান্ড অনুরোধ করা সংখ্যার চেয়ে কম আইটেম ফেরত দিলে, উপলভ্য টাইমলাইন বা সার্চের ফলাফল হয়তো শেষ হয়ে গেছে। এটি স্বাভাবিক এবং অগত্যা কোনো ত্রুটির ইঙ্গিত নয়।

দায়িত্বশীল ব্যবহারের সীমা মেনে চলুন

প্রকল্পটি ইচ্ছাকৃতভাবে CAPTCHA সমাধান, প্রক্সি পরিবর্তন, একাধিক অ্যাকাউন্ট ব্যবহার, শংসাপত্র পরিচালনা এবং রেট-লিমিট এড়িয়ে চলার মতো কাজ পরিহার করে। রান সংযত রাখুন, স্বয়ংক্রিয় গতি-নিয়ন্ত্রণ ও কুলডাউন সম্পন্ন হতে দিন এবং X-এর পরিষেবার শর্তাবলি ও প্রযোজ্য আইন মেনে চলুন।

প্রকল্পটি যেভাবে কাজ করে

একটি বাস্তব Chromium ইনস্ট্যান্স মানুষের ব্যবহারের মতো করে X লোড করে। স্ক্র্যাপারটি X-এর নিজস্ব ফ্রন্টএন্ডে পাঠানো GraphQL JSON নিষ্ক্রিয়ভাবে ক্যাপচার করে, তারপর সেই ডেটাকে একটি স্থিতিশীল আউটপুট স্কিমায় স্বাভাবিকীকরণ করে। এটি সরাসরি X-এর অভ্যন্তরীণ এন্ডপয়েন্টে কল করে না এবং পরিবর্তনশীল HTML ক্লাসের ওপর নির্ভর করে না।

প্রধান সোর্স ফাইলগুলো পাঁচটি নির্দিষ্ট অংশে সাজানো:

  • src/cli.js Commander-ভিত্তিক CLI নির্ধারণ করে।
  • src/session.js স্থায়ী Playwright প্রোফাইল ও ম্যানুয়াল লগইন পরিচালনা করে।
  • src/scraper.js GraphQL প্রতিক্রিয়া আটকায় এবং রেকর্ড স্বাভাবিকীকরণ করে।
  • src/ratelimit.js গতি-নিয়ন্ত্রণ, সীমা ও ব্যাকঅফ পরিচালনা করে।
  • src/output.js JSON, JSONL, CSV এবং Markdown লেখে।

উপসংহার

x-scraper-no-api API কী, প্রতি-টুইট ক্রেডিট বা হোস্টেড মধ্যস্থতাকারী ছাড়াই সর্বজনীন X ডেটা সংগ্রহের একটি স্থানীয় উপায় প্রদান করে। Node.js ইনস্টল করুন, একবার ম্যানুয়ালি প্রমাণীকরণ করুন এবং ফাইল, স্ক্রিপ্ট বা AI-এজেন্টের ওয়ার্কফ্লোর উপযোগী ফরম্যাটে নির্দিষ্ট সার্চ, টাইমলাইন ও সর্বজনীন রিপ্লাই রপ্তানি করতে CLI ব্যবহার করুন। ব্যবহার সংযত রাখুন এবং সংগৃহীত ডেটা দায়িত্বশীলভাবে পরিচালনা করুন।