কনটেন্টে যান
৩১ জুলাই, ২০২৬ · হ্যান্ডবুক

ম্যানুয়াল: ব্রাউজার এক্সটেনশন তৈরি করা

এই আর্টিকেলটি প্রকাশের সময়ের প্রোডাক্ট বর্ণনা করে। বর্তমান সক্ষমতার জন্য AI বিল্ডার এবং এজেন্ট টিম দেখুন।

ম্যানুয়াল: ব্রাউজার এক্সটেনশন তৈরি করা

প্রিয়া — আপনি গত সপ্তাহে জিজ্ঞেস করেছিলেন, যে price-drop watcher তৈরি করছেন সেটা কি "নিরাপদ থাকতে" প্রতি মিনিটে প্রোডাক্ট পেজ পোল করা উচিত। এটা তৈরি করার আগে, চলুন পুরো বিষয়টা একসাথে দেখি, কারণ পোলিং ইন্টারভাল আসলে এখানে সবচেয়ে ছোট সিদ্ধান্ত — শুরুতেই কাঠামোটা ঠিক করে নিলে লঞ্চের আগে এক-দুই রিভিউ সাইকেল বেঁচে যাবে।

প্রম্পট থেকেই শুরু করা যাক। আপনি বলেছিলেন "একটা এক্সটেনশন যেটা এই পেজ নজরে রাখবে আর দাম কমলে জানাবে" — এটা ভালো আইডিয়া, কিন্তু এখনও এটা কোনো স্পেক নয় — বিল্ডারের জানা দরকার এটা কখন কাজ করে, শুধু কী করে তা নয়। আপনার watcher তিনটি ট্রিগার কাঠামোর মধ্যে তৃতীয়টি, আর বাকি দুটোও জেনে রাখা ভালো যদিও আপনার এখন দরকার নেই, কারণ কাঠামোই পারমিশন নির্ধারণ করে আর পারমিশনই আপনার রিভিউ টাইমলাইন ঠিক করে।

  • ক্লিক-টু-অ্যাক্ট সবচেয়ে সস্তা: একটা পপআপ যেটা টুলবার আইকনে কেউ ক্লিক করলে বর্তমান পেজের বিরুদ্ধে একবার চলে — যেমন "এই পেজের সব দাম একটা তালিকায় নিয়ে আসা।"
  • সবসময় সক্রিয় কনটেন্ট স্ক্রিপ্ট আপনার নির্ধারিত URL প্যাটার্নে স্বয়ংক্রিয়ভাবে চলে — একটা ডোমেইনের প্রতিটা পেজে প্রতিযোগীর নাম হাইলাইট করার মতো কাজের জন্য ভালো, তবে প্যাটার্নটা স্পষ্টভাবে বলতে হবে, কারণ "আমাদের ইন্টারনাল সাইটে" বললে সেটা আপনার ইচ্ছার চেয়ে সংকীর্ণভাবে অনুমান করা হয়।
  • আপনার ক্ষেত্রটা তৃতীয়: একটা ব্যাকগ্রাউন্ড watcher, ট্যাব খোলা থাকুক বা না থাকুক স্টেট টিকে থাকে, MV3-এর অধীনে একটা সার্ভিস ওয়ার্কারে চলে, কিছু পরিবর্তিত হলে আইকনে ব্যাজ দেখায়।

এটাই সেই একমাত্র কাঠামো যেখানে বিল্ডারের একটা ফলো-আপ প্রশ্ন দিয়ে পাল্টা জিজ্ঞাসা করা উচিত, আর সেটা করবেও — কারণ পোলিং সংখ্যাটা আসলেই একটা ট্রেড-অফ, কোনো নিয়মরক্ষা নয়।

যা আমাকে ফিরিয়ে আনে আপনার "প্রতি মিনিটে" প্রবৃত্তিতে। কিছুদিন আগে আমি প্রায় আপনার বিল্ডের মতোই কিছু চেয়েছিলাম — একটা পেজ নজরে রাখা, দাম বদলালে আইকনে ব্যাজ দেখানো — আর প্রথম সংস্করণটি প্রতি ৬০ সেকেন্ডে পোল করত। একজন ব্যবহারকারী স্থানীয়ভাবে টেস্ট করলে ঠিকই চলে। কিন্তু যত জন এটা ইনস্টল করবে সেই সংখ্যা দিয়ে গুণ করুন, আর আপনি কোনো কারণ ছাড়াই কারও প্রোডাক্ট পেজে চাপ দিচ্ছেন, কারণ সাধারণ রিটেইল লিস্টিংয়ে দাম দিনে কয়েকবারের বেশি বদলায় না। প্রম্পটে বিল্ডারকে বলুন "প্রতি ৩০ মিনিটে চেক করো।" এটা কোনো আপস নয়, বরং বেশি সৎ অনুরোধ — কারও ব্রাউজার এক্সটেনশন থেকে সাব-মিনিট অ্যালার্টের দরকার নেই, আর পরে আপনি নিজেকেই ধন্যবাদ দেবেন যখন কোনো রিভিউয়ারকে ব্যাখ্যা করতে হবে না কেন আপনার এক্সটেনশন দিনে ১,৪৪০ বার হোম কল করছে।

যেসব অংশ নিয়ে আপনাকে ভাবতে হবে না

আপনি ম্যানিফেস্ট নিয়ে নার্ভাস থাকার কথা বলেছিলেন — চিন্তা করবেন না, এটাই একমাত্র জিনিস যেটা আপনার সত্যিই ছোঁয়ার দরকার নেই। দুটো স্টোরই এখন Manifest V3 চায়; নতুন লিস্টিংয়ের জন্য MV2 আর গ্রহণযোগ্য নয় আর ক্রোম এখনও চলমান MV2 এক্সটেনশনগুলো সক্রিয়ভাবে বন্ধ করে দিচ্ছে। MV3-এর অধীনে মূল পরিবর্তন হলো, আপনার ব্যাকগ্রাউন্ড লজিক একটা স্থায়ী ব্যাকগ্রাউন্ড পেজের বদলে একটা সার্ভিস ওয়ার্কার হিসেবে চলে — এটা একটা ইভেন্টে চালু হয়, ব্রাউজার ইভেন্টগুলোর মধ্যে এটা বন্ধ করে দিতে পারে, আর স্টেটকে যেতে হয় chrome.storage এর মধ্য দিয়ে, শুধু একটা ভ্যারিয়েবলে থাকার বদলে। এটা ঠিক সেই ধরনের লাইফসাইকেল খুঁটিনাটি যা বিল্ডার ডিফল্টভাবে সঠিকভাবে লেখে। খুঁজতে না গেলে আপনি কখনো ম্যানিফেস্ট ফাইলই দেখবেন না।

যেখানে আপনার আসলে মনোযোগ দেওয়া উচিত সেটা হলো পারমিশন, কারণ এটাই ঠিক করে আপনার রিভিউ কত দ্রুত হবে, কোড নয়। আপনার watcher-এর দরকার alarms পোলিংয়ের জন্য আর সম্ভবত storage শেষ দাম মনে রাখার জন্য — এর দরকার নেই tabs অথবা <all_urls>, আর আপনি যদি "পরে হয়তো বাড়াবো" ভেবে "যেকোনো সাইটে কাজ করার সক্ষমতা" চান, তাহলে বিল্ডার সেভাবেই তৈরি করবে আর আপনি এমন একটা ফিচারের জন্য বিস্তৃত হোস্ট অ্যাক্সেস চাইবেন যা এখনও অস্তিত্বে নেই। এটাই ইনস্টল ডায়ালগের সবচেয়ে ভয়ানক লাইন — "আপনি যেসব সাইট ভিজিট করেন সেখানে ডেটা পড়া এবং পরিবর্তন করা" — আর এটাই সেই জিনিস যা একটা স্বয়ংক্রিয় রিভিউকে ম্যানুয়াল রিভিউতে ঠেলে দেয়। আজ এটা কী করে তাই বর্ণনা করুন। সত্যিই দরকার হলে পরে বাড়িয়ে নিন।

এটা শেষ করার আগে আরও দুটো জিনিস ৩০ সেকেন্ডের মনোযোগ পাওয়ার যোগ্য: পপআপ ইউআই আর আইকন।

  • পপআপ ইউআই — একটা ডিফল্ট অপশন পেজ, খালি চেকবক্স, কোনো ক্রম নেই — এটা এক-স্টার রিভিউর একটা আসল কারণ, যার সাথে এক্সটেনশন কাজ করে কিনা তার কোনো সম্পর্ক নেই। আপনারটায় মাত্র কয়েকটা সেটিং (URL, হয়তো ইন্টারভাল), কিন্তু তবুও দেখতে একটা ফর্ম-ডাম্প নয়, একটা প্রোডাক্টের মতো হওয়া উচিত।
  • আইকন — আইকনটা ক্রোমের চারটা সাইজেই (১৬, ৩২, ৪৮, ১২৮ পিক্সেল, ফায়ারফক্সের জন্য কিছুটা ভিন্ন ম্যাট্রিক্স) চেক করিয়ে নিন, কারণ ১২৮-এ যে লোগো স্পষ্ট, সেটাই ১৬-এ ঝাপসা হয়ে যায় — আর ঠিক সেখানেই এটা দিনের বেশিরভাগ সময় একটা ঠাসা টুলবারে থাকে।

যেকোনো স্টোরে হাত দেওয়ার আগে

এটা সত্যিই টেস্ট করুন, শুধু চ্যাট প্রিভিউতে নয়। বিল্ড থেকে আপনি যা পান তা একটা প্রকৃত লোডযোগ্য এক্সটেনশন, তাই যান chrome://extensions-এ, ডেভেলপার মোড চালু করুন, "load unpacked," আর সেটা আসল প্রোডাক্ট পেজের বিরুদ্ধে চালান যেটা নিয়ে আপনি চিন্তিত — সিমুলেটেড সংস্করণ নয়। আমি নির্দিষ্টভাবে দুটো জিনিস হাতে চেক করব: ইনস্টল পারমিশন প্রম্পট কি আপনার অনুরোধ অনুযায়ী প্রত্যাশিত কথা বলে, আর কনটেন্ট স্ক্রিপ্ট যদি এমন কোনো পেজে পড়ে যার জন্য এটা তৈরি হয়নি তখন কী হয় — এটা কি নীরবে ব্যর্থ হয় নাকি কিছু দৃশ্যমান ছুঁড়ে দেয়? দুটোই এক মিনিটেরও কম সময় নেয় আর দুটোই সেই ধরনের বাগ যা দেখলে স্পষ্ট, না দেখলে অদৃশ্য।

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

স্টোরজমা দেওয়ার প্রক্রিয়া
ক্রোমলিস্টিং স্বয়ংক্রিয়ভাবে পূরণ করে — শিরোনাম, বিবরণ, বিভাগ, আর পারমিশন ন্যায্যতার টেক্সট যা রিভিউ আসলে পড়ে, কোডের কাজ থেকে তৈরি করা হয় আলাদা করে টাইপ করার বদলে, কারণ অমিল ন্যায্যতা নিজেই একটা সাধারণ প্রত্যাখ্যানের কারণ।
ফায়ারফক্সপ্রায় হাতেই ছোঁয়ার দরকার নেই; মোজিলার পাইপলাইন হালকা আর জমা দেওয়া মাত্রই এগিয়ে যায়।

আপনার বিল্ড শেষ হওয়ার পর যে লিস্টিং কিট তৈরি হয়, সেটা আপনার এক্সটেনশন আসলে চলা অবস্থায় নেওয়া স্ক্রিনশট (মকআপ নয়), লিস্টিং কপি, আর আসল কোডের বিরুদ্ধে যাচাই করা প্রাইভেসি-অনুশীলনের উত্তর তৈরি করবে, স্মৃতি থেকে পূরণ করা নয়। এই শেষ অংশটা এমন কিছুর জন্য শোনার চেয়ে বেশি গুরুত্বপূর্ণ যা একটা বহিরাগত পেজের সাথে কথা বলে: ক্রোমের প্রাইভেসি প্রশ্নাবলী "এটা কি ডেটা সংগ্রহ করে" এমন সরাসরি হ্যাঁ/না প্রশ্ন করে, আর আপনার watcher যখন দাম পোল ও সংরক্ষণ করছে তখন "না" উত্তর দেওয়াটা সেই ধরনের ছোট অসততা যা লঞ্চের আগে প্রত্যাখ্যানের বদলে লঞ্চের পরে সরিয়ে দেওয়া হয়। উত্তরগুলো কোডের কাজের বিরুদ্ধে যাচাই করা এই ফাঁকটা স্বয়ংক্রিয়ভাবে বন্ধ করে দেয়।

বিশেষভাবে আপনার লঞ্চের তারিখে:
স্টোরসাধারণ রিভিউ সময়
ফায়ারফক্সঘণ্টাখানেক, কখনো কখনো এক ঘণ্টারও কম
ক্রোমকয়েক দিন, খারাপ সপ্তাহে কখনো প্রায় দুই দিন

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

শেষ একটা কথা, কারণ আমি আপনাকে চিনি — এটা লঞ্চ হওয়ার পর আপনি নিশ্চয়ই "সব ডিভাইসে আমার ওয়াচ লিস্ট সিঙ্ক করা" আর "সময়ের সাথে দামের ইতিহাস ট্র্যাক করা" যোগ করার কথা ভাবছেন। সেটা ঠিক আছে, কিন্তু জেনে রাখুন প্রতিটাই একটা নতুন পারমিশন, আর নতুন পারমিশন মানে হতে পারে এইমাত্র শেষ করা রিভিউয়ের চেয়ে ধীর একটা রিভিউ। যদি আপনি নিশ্চিত হন বড় সংস্করণ চান, তাহলে এখনই প্রম্পট করে একটা ধীর রিভিউ সহ্য করা সত্যিই ভালো, একে একে পারমিশন যোগ করার চেয়ে। যদি এখনও নিশ্চিত না হন, যা আছে তাই লঞ্চ করুন — একটা কঠোরভাবে সীমিত watcher দ্রুত ছাড় পায়, আপনাকে আসল ব্যবহার এনে দেয়, আর আসল ব্যবহার এখন ক্রোমের কিউতে বসে থাকা লম্বা ফিচার তালিকার চেয়ে বেশি মূল্যবান। পরে আপনি সবসময় আরও চাইতে পারেন; কিন্তু যা এখনও দরকার নেই তার জন্য ম্যানুয়াল রিভিউতে আটকে গেলে এই লঞ্চ আর ফিরে পাবেন না।

হ্যান্ডবুক
শেয়ার করুনXLinkedInFacebookRedditQuoraWhatsAppTelegramইমেইল
← সব পোস্ট