اے آئی سے چلنے والی لوکل فرسٹ کروم ایکسٹینشن کو کیسے بنایا جائے جو آپ کی براؤزنگ ہسٹری کو ارادے کے نقشے میں بدل دے

آپ کا براؤزر ہر وہ صفحہ یاد رکھتا ہے جسے آپ نے کبھی کھولا ہے، لیکن اسے کچھ معلوم نہیں کہ آپ نے انہیں کیوں کھولا۔

اگر آپ تین دن تک درجن بھر ٹیبز پر موجود نوٹ بک کا موازنہ کرتے ہیں، مشغول ہو جاتے ہیں، اور ایک ہفتے بعد واپس آتے ہیں، تو آپ کی تاریخ صرف ٹائم اسٹیمپ اور عنوانات کی ایک سادہ فہرست دکھا سکتی ہے، اس بات کا کوئی اشارہ نہیں کہ وہ وزٹ ایک چیز تھی — ایک فیصلہ جو آپ نے شروع کیا لیکن کبھی ختم نہیں ہوا۔

اس ٹیوٹوریل میں آپ بناتے ہیں: کھلی لوپایک اوپن سورس، لوکل فرسٹ کروم ایکسٹینشن ہے جو آپ کی براؤزنگ ہسٹری کو اسکین کرکے، انہیں "انٹٹ تھریڈز” (فیصلے، تحقیقات، اور کھلے سوالات جن پر آپ واپس آتے رہتے ہیں) میں گروپ بندی کرکے اور پھر ہر آئٹم کو اسکور کرکے اس مسئلے کو حل کرتی ہے کہ یہ اب بھی کتنا زندہ ہے۔ اختیاری طور پر، ایک چیٹ اسسٹنٹ کو سپورٹ کرنے کے لیے Claude کا استعمال کریں جو ان تھریڈز کو سادہ زبان میں لیبل کر سکتا ہے، مخصوص اگلے اقدامات تجویز کر سکتا ہے، اور پوچھتا ہے کہ "مجھے اس ہفتے کیا بند کرنا چاہیے؟”

آخر میں، آپ مندرجہ ذیل بنائیں گے:

  • مینی فیسٹ V3 کروم ایکسٹینشن سروس ورکر اور مکمل ٹیب ڈیش بورڈ کے ساتھ

  • ایک مقامی پائپ لائن جو IndexedDB میں نیویگیشن ہسٹری کو مکمل طور پر کیپچر کرتی ہے، صاف کرتی ہے، پارٹیشنز اور کلسٹرز کرتی ہے۔

  • اصلی (پیچیدہ) تلاش کے ڈیٹا پر کلسٹرنگ الگورتھم ٹیون اور ڈیبگ کیا گیا۔

  • کلاڈ کا استعمال کرتے ہوئے AI لیبلنگ پرت، context.dev سے برانڈ ڈیٹا کا استعمال کرتے ہوئے ایک بنیادی قدم کے ساتھ

  • ایک چیٹ اسسٹنٹ جو پورے تھریڈ کا اندازہ لگاتا ہے اور آپ کو بتاتا ہے کہ آگے کیا کرنا ہے۔

  • آن بورڈنگ، ڈیزائن سسٹم، اور ورکنگ پائپ لائن اسٹیٹس سسٹم کے ساتھ چیکنا ڈیش بورڈ

ہر چیز ڈیوائس کے اندر چلتی ہے، اور صرف نیٹ ورک کالز اختیاری ہیں اور آپ کی اپنی API کیز کا استعمال کرتے ہوئے کی جاتی ہیں۔

انڈیکس

کیا تعمیر کرنا ہے

پہلی بار، اوپن لوپس آپ کو ایک مرکزی ویلکم اسکرین کے ساتھ خوش آمدید کہتا ہے جو پائپ لائن کے تین مراحل میں آپ کی رہنمائی کرتی ہے۔

تاریخ کو اسکین کرنے، سیشن بنانے، اور ارادے کا نقشہ بنانے کے بعد، نیویگیشن کو ریاستی گروپ تھریڈز (فعال، روکا، اور نیند) میں دوبارہ ترتیب دیا جاتا ہے۔ ہر آئٹم میں اعتماد کا سکور، سادہ زبان کا خلاصہ، مخصوص اگلے اقدامات، اور شامل ہیں۔ دوبارہ شروع کریں یہ بٹن وہی صفحہ دوبارہ کھولتا ہے جسے آپ نے چھوڑا تھا۔ دائیں کالم میں آپ کے اپنے تھریڈ پر مبنی چیٹ اسسٹنٹس ہوتے ہیں۔

اوپن لوپس ڈیش بورڈ بائیں طرف اسٹیٹس گروپ انٹینٹ تھریڈز دکھا رہا ہے اور دائیں طرف AI کی مدد سے چیٹ اس بارے میں استدلال کرنے کے لیے کہ اس ہفتے کون سے آئٹمز واجب الادا ہیں۔

وہ معاون جوابات صارف کے حقیقی دھاگوں میں ایکسٹراپولیٹ کرتے ہیں، ان کی درجہ بندی کرتے ہیں کہ چھوڑنا کتنا آسان ہے بمقابلہ اصل فیصلوں کی کتنی مقدار کی ضرورت ہے۔ یہ اس بات کی بھی وضاحت کرتا ہے کہ یہ اس تعمیر کا سب سے نیا حصہ کیوں ہے اور اس کا انحصار context.dev کے بنیادی اقدامات پر ہے جنہیں ہم بعد میں اس ٹیوٹوریل میں شامل کریں گے۔

شرطیں

پیروی کرنے کے لیے آپ کو ضرورت ہو گی:

  • نوڈ 18+ کرومیم پر مبنی براؤزرز (کروم، بہادر، ایج، وغیرہ)۔

  • آرام ٹائپ اسکرپٹ اور رد عمل. آپ کو ماہر بننے کی ضرورت نہیں ہے، لیکن آپ کو Hooks اور async/await پڑھنے میں مہارت حاصل کرنی چاہیے۔

  • بنیادی علم انڈیکسڈ ڈی بی یہ مددگار ہے، لیکن ضروری نہیں ہے۔ کیونکہ جب آپ آگے بڑھتے ہیں تو آپ سیکھتے ہیں کہ آپ کو کیا کرنے کی ضرورت ہے۔

اس تعمیر کے دونوں حصے اختیاری ہیں اور ہر ایک کو مفت درجے کے ساتھ اپنی API کلید کی ضرورت ہوتی ہے۔

  • نہیں ہیومینٹی API کلید (platform.claude.com پر) AI لیبلنگ اور چیٹ اسسٹنٹس کے لیے

  • کوئی راستہ نہیں context.dev API کلید (context.dev سے) برانڈ فاؤنڈیشن بنانے کے اقدامات

چونکہ دونوں کیز ان کے اوپر ایک اضافی پرت ہیں، آپ ان کے بغیر پوری بنیادی پائپ لائن، کیپچر، کلسٹرنگ اور اسکورنگ بنا اور استعمال کر سکتے ہیں۔

اوپن لوپس کی ساخت

کوڈ لکھنے سے پہلے مجموعی شکل کو دیکھنا مفید ہے۔ اوپن لوپس میں ہر قدم ایک IndexedDB اسٹور سے پڑھتا ہے اور اگلے کو لکھتا ہے۔

chrome.history (backfill) ──┐
chrome.tabs.onUpdated (live)─┴─→ raw_events
                                     │  noise filter
                                     ▼
                                  sessions
                                     │  ambient detection + clustering + scoring
                                     ▼
                               intent_threads
                                     │
                                     ▼
                              React dashboard
                                     │  optional, opt-in
                                     ├──→ brand enrichment   (context.dev)
                                     └──→ AI labeling + next step (Claude)
                                              │
                                              ▼  optional, opt-in
                                        AI assistant chat (Claude)

ہر قدم ذیل میں ایک الگ ماڈیول ہے۔ src/pipeline/ہر ایک کو آزادانہ طور پر جانچا جا سکتا ہے۔ Chrome DevTools کھولیں اور درج ذیل کو دیکھیں: raw_events, sessionsیا intent_threads آپ ایپلیکیشن ٹیب سے براہ راست کسی دوسرے قدم کو چھوئے بغیر ایک قدم کو دوبارہ بنا سکتے ہیں۔

شیئر کی قسم

تمام مراحل استعمال کرتے ہیں اور ایک ہی بار بیان کردہ TypeScript انٹرفیس کی ایک ہی چھوٹی تعداد تیار کرتے ہیں۔ src/types.ts:

// Shared TypeScript interfaces for the openloops pipeline.
// Each stage of the pipeline consumes and produces these types.

export interface RawEvent {
  id: string;
  url: string;
  domain: string;
  title: string;
  visitedAt: number;         // epoch ms
  source: "backfill" | "live";
}

export interface Session {
  id: string;
  events: RawEvent[];
  startedAt: number;
  endedAt: number;
  domains: string[];
  keywords: string[];
}

export interface IntentThread {
  id: string;
  title: string;
  summary?: string;
  nextStep?: string;   // one concrete action to move the thread forward
  sessions: Session[];
  type: "buying" | "research" | "planning" | "learning" | "unclassified";
  confidence: number;        // 0-1
  status: "active" | "stalled" | "dormant";
  firstSeen: number;
  lastSeen: number;
  distinctDays: number;
  signals: string[];
}

export interface Brand {
  domain: string;
  name: string;
  description: string;
  industry: string;
  logoUrl: string;
  brandColor: string;
}

زیادہ تر فیلڈز IntentThread, confidence, status, signalsاور distinctDays ہم بعد میں اس گائیڈ میں دھاگوں کو کلسٹرنگ اور اسکور کرتے وقت مکمل طور پر مقامی ہیورسٹکس کو بھریں گے۔ summary اور nextStep رہنا undefined جب تک کہ آپ اسے بعد میں شامل اختیاری AI لیبلنگ مرحلے میں آباد نہ کریں۔

یہ وہ نمونہ ہے جو پورے پروجیکٹ کو کام کرتا ہے۔ بنیادی ڈیٹا ماڈل اپنے طور پر کام کرتا ہے، اور AI اسے افزودہ کرتا ہے۔

ظاہر

اوپن لوپس ایک مینی فیسٹ V3 ایکسٹینشن ہے جس میں تین اجازتیں اور تین میزبان اجازتیں ہیں۔

{
  "manifest_version": 3,
  "name": "openloops",
  "version": "0.0.1",
  "description": "Reconstruct your browsing history into an AI-labeled map of intent threads: active decisions, stalled research, open questions. Fully local.",

  "permissions": ["history", "tabs", "storage"],
  "host_permissions": [
    "https://api.anthropic.com/*",
    "https://api.context.dev/*",
    "https://logos.context.dev/*"
  ],

  "background": {
    "service_worker": "src/background.ts",
    "type": "module"
  },

  "options_page": "src/dashboard/index.html",

  "icons": {
    "16": "icons/icon16.png",
    "32": "icons/icon32.png",
    "48": "icons/icon48.png",
    "128": "icons/icon128.png"
  },

  "action": {
    "default_title": "openloops",
    "default_icon": {
      "16": "icons/icon16.png",
      "32": "icons/icon32.png"
    }
  }
}

اجازتیں، میزبانی کی اجازت، اور options_page ہر شے کا ایک خاص وزن ہوتا ہے۔

  • permissions: ["history", "tabs", "storage"] صرف اختیار ہے۔ بنیادی پائپ لائن آپ کو اس کی ضرورت ہے۔ history بیک اپ اشتہارات کے لیے اپنی براؤزنگ ہسٹری پڑھیں، tabs سروس ورکر کو صفحہ کے نئے بوجھ کا مشاہدہ کرنے اور ‘ریزیومے’ کے ذریعے ٹیبز کو دوبارہ کھولنے کی اجازت دیتا ہے۔ storage یہ وہ جگہ ہے جہاں آپ کی API کیز اور ترجیحات واقع ہیں۔

  • host_permissions اگر آپ اختیاری AI خصوصیات استعمال کرتے ہیں تو یہ الگ اور صرف اہم ہے۔ ڈیش بورڈ کیا بناتا ہے۔ fetch() CORS کی غلطیوں کے بغیر Anthropic اور context.dev کو کال کرتا ہے۔

  • options_page ڈیش بورڈ کو پوائنٹس دیے گئے۔ اس کے بجائے، اسے اس طرح ترتیب دیں: default_popupاس کا مطلب ہے کہ ٹول بار کے آئیکون پر کلک کرنے سے ڈیش بورڈ ایک چھوٹے پاپ اپ کے بجائے مکمل براؤزر ٹیب کے طور پر کھل جائے گا۔ اسٹیٹس گروپ کارڈز اور چیٹ پینلز کے ساتھ ملٹی کالم لے آؤٹ کو دیکھتے وقت یہ اہم ہے۔

ایکسٹینشن کو سکیفولڈ کرنے کا طریقہ

وائٹ اور CRXJS پلگ ان کے ساتھ شروع کریں جو ہاٹ ماڈیول ری لوڈنگ کے ساتھ مینی فیسٹ V3 ایکسٹینشن کو مرتب کرتے ہیں۔

npm create vite@latest openloops -- --template react-ts
cd openloops
npm install @crxjs/vite-plugin idb react-markdown

آپ کا vite.config.ts CRXJS آپ کا manifest.jsonاور وہاں سے، وائٹ تالیف کو سنبھالتا ہے۔ src/background.ts واقعی .js وہ فائلیں جنہیں کروم لوڈ کر سکتا ہے (کچی فائلیں) .ts مینی فیسٹ میں سروس ورکر روٹ رجسٹریشن کی خرابی کے ساتھ ناکام ہو جاتا ہے۔ ہم اسے اگلے حصے میں ڈیبگ کریں گے۔

ڈیش بورڈ کا انٹری پوائنٹ ایک معیاری React 18 روٹ ہے۔



  
    
    
    openloops
  
  
    
    

اوپر تک سکرول کریں۔