趋势聊天

趋势聊天:跟踪、分析和聊天来自小众在线社区的趋势。获得由 BrightData 和 AI 提供支持的可行见解。

**Trend Chat** 是一款功能强大的工具,可让用户跟踪、分析和互动来自各种在线社区的趋势。无论您是企业主、营销人员还是希望保持领先地位的爱好者,Trend Chat 都能实时洞察与您的行业最相关的对话。

通过利用**BrightData**进行网络抓取和**AI**进行生成分析,Trend Chat 允许用户收集相关数据,对其进行分析以获得可行的见解,并与这些趋势进行聊天以做出明智的决策。

我建造了什么

**Trend Chat** 旨在解决当今快节奏数字世界中的信息过载问题。它使用户能够跟踪小众在线社区的趋势,从各种网站抓取数据,分析这些数据以发现关键见解,并通过简单的聊天界面与这些见解互动。

主要特点:

  • Web Scraping:根据用户请求自动从网站(主要是 Reddit)收集数据,利用 BrightData Web Scraping Browser 收集 reddit 等大型动态网站的数据。
  • 数据分析:分析抓取的数据,根据命名实体提取出一个季节的共同点,发现模式、趋势和可操作的见解
  • 聊天界面:通过收集到的见解进行聊天,让用户提出问题并根据数据获得答复。
  • 人工智能洞察:使用人工智能模型根据趋势生成实时分析、建议和洞察。
  • 用户身份验证:通过 Supabase 身份验证保护用户登录和数据访问。
  • 通过**趋势聊天**,用户可以轻松掌握新兴趋势,发现潜在的商机,并自信地做出数据驱动的决策。

    演示

    您可以在以下位置探索**Trend Chat**的现场演示:

    趋势聊天演示

    截图:

  • 英雄部分视图:
  • 仪表板视图:
  • 聊天界面:
  • 如何使用 Bright Data

    Bright Data 在 **Trend Chat** 中发挥着至关重要的作用,它提供了支持从 **Reddit** 收集数据的 Web 抓取基础设施。使用 **Bright Data Scraping Browser**,我可以:

  • 收集实时数据:Bright Data 允许我根据特定用户输入抓取 Reddit 数据,确保数据始终是最新的。
  • 访问多样化数据:根据广泛的主题和关键词,从 subreddits 中抓取内容,包括论坛帖子、评论和文章。
  • 自定义抓取:Bright Data 的灵活性使我能够定制抓取过程以满足特定需求,例如收集与新兴趋势相关的特定子版块的帖子和讨论。
  • 与 Bright Data 的整合使得 **Trend Chat** 能够提供来自小众在线社区的实时、动态见解。

    使用 Bright Data API (Typescript) 抓取 Reddit 数据的示例代码

    // Function to generate the Reddit search URL based on the keyword
    function generateRedditSearchUrl(keyword: string): string {
        const encodedKeyword = encodeURIComponent(keyword);
        return `https://www.reddit.com/search/?q=${encodedKeyword}`;
    }
    
    // Function to scrape Reddit posts based on a search URL
    async function scrapeRedditPosts(searchUrl: string) {
        const browser = await puppeteer.connect({
            browserWSEndpoint: "puppeteer ndpoint from your scraping browser",
        });
    
        console.log("Connected to browser...");
        const page = await browser.newPage();
        await page.goto(searchUrl, { waitUntil: 'domcontentloaded' });
        console.log("Navigated to Reddit search page");
    
        await page.waitForSelector('div[data-testid="post-container"]', { timeout: 30000 });
        const posts = await extractPostData(page);
    
        await browser.close();
    
        return posts;
    }
    
    // Function to extract post data from the Reddit search results page
    async function extractPostData(page: puppeteer.Page) {
        return await page.evaluate(() => {
            const postElements = document.querySelectorAll('div[data-testid="post-container"]');
            const posts = [];
    
            postElements.forEach((postElement: Element) => {
                const title = postElement.querySelector('h3')?.innerText;
                const author = postElement.querySelector('[data-testid="post_author_link"]')?.innerText;
                const upvotes = postElement.querySelector('[data-click-id="upvote"]')?.textContent;
                const comments = postElement.querySelector('[data-click-id="comments"]')?.textContent;
    
                posts.push({ title, author, upvotes, comments });
            });
    
            return posts;
        });
    }

    用于命名实体提取的人工智能

    为了从抓取的帖子中提取有价值的信息,**Trend Chat** 使用由 **Transformers** 库支持的 **AI 模型** 进行 **命名实体识别 (NER)**。这使我们能够从数据中识别和提取关键实体,例如人物、地点、组织或任何其他相关关键字。

    我们使用 Hugging Face Transformers 库中预先训练的 **NER 模型** 来分析 Reddit 帖子并识别产品名称、热门话题等实体。

    使用 Transformers (Typescript) 进行命名实体识别 (NER) 的示例代码

    import { pipeline } from 'transformers';  // Importing the HuggingFace pipeline for NER
    
    const nerModel = pipeline('ner', 'dbmdz/bert-large-cased-finetuned-conll03-english');  // Pre-trained NER model
    
    const extractEntities = async (text: string) => {
      const entities = await nerModel(text);
      return entities;
    };
    
    const sampleText = "I love programming in Python and recently explored Next.js for building dynamic web apps!";
    extractEntities(sampleText).then(entities => {
      console.log('Extracted Entities:', entities);
    }).catch(error => console.error('Error extracting entities:', error));

    可以进一步分析提取的实体以发现趋势或见解,例如频繁提及特定主题、品牌名称甚至即将出现的技术。

    结合两者

    async function main() {
        const prompt = "Tell me about recent discussions on code editors and their features, especially AI-powered editors";  // Example prompt
    
        // Step 1: Extract keywords
        const keywords = await extractEntities(prompt);
        console.log("Extracted Keywords: ", keywords);
    
        // Step 2: Search Reddit for the extracted keyword(s)
        for (const keyword of keywords) {
            const searchUrl = generateRedditSearchUrl(keyword);
            console.log(`Searching for "${keyword}" on Reddit...`);
    
            // Step 3: Scrape the posts for the keyword
            const posts = await scrapeRedditPosts(searchUrl);
            console.log(`Found ${posts.length} posts related to "${keyword}":`);
            console.log(posts);
        }
    }
    
    // Run the main function
    main().catch(error => {
        console.error("Error running the pipeline:", error);
    });

    帖子的命名实体提取

    import { pipeline } from '@huggingface/transformers';
    
    // Example of Reddit post data (this would be scraped using BrightData)
    const redditPosts = [
      "Tesla's stock price surged after the announcement of their new electric car model in Berlin.",
      "Apple released new MacBook Pro models with improved performance and battery life."
    ];
    
    // Initialize the NER pipeline
    async function performNamedEntityRecognition(posts: string[]) {
      try {
        // Use Hugging Face's NER pipeline with a pre-trained model
        const nlp = await pipeline('ner', 'dbmdz/bert-large-cased-finetuned-conll03-english');
    
        // Loop through each Reddit post and extract named entities
        const results = await Promise.all(
          posts.map(async (post) => {
            const entities = await nlp(post);
            return { post, entities };
          })
        );
    
        // Log the results
        results.forEach((result) => {
          console.log(`Post: ${result.post}`);
          console.log("Entities:", result.entities);
          console.log("-------------");
        });
    
      } catch (error) {
        console.error("Error during NER:", error);
      }
    }
    
    // Run NER on Reddit posts
    performNamedEntityRecognition(redditPosts);

    技术堆栈

    前端:

  • Next.js:用于构建动态且响应迅速的前端,以显示见解并与趋势进行互动。
  • React:用于管理 UI 组件并实时处理用户交互。
  • Tailwind CSS:用于快速、响应的样式。
  • 后端:

  • Supabase:用于用户身份验证和数据库存储。Supabase 简化了管理用户和存储数据的过程。
  • AI 模型(Gemini API 和 transformers 库模型):用于生成 AI 功能,帮助分析抓取的数据并根据趋势生成见解或建议。
  • Typescript:整个应用程序使用 Typescript 构建,以实现更好的类型安全性和代码可维护性。
  • 抓取:

  • BrightData Web Scraping API:通过从 Reddit 和其他在线来源收集数据来支持网络抓取过程。
  • Reddit:主要收集有关新兴趋势的帖子、评论和讨论的平台。
  • 验证:

  • Supabase 身份验证:安全登录和用户管理,用于对抓取的数据和见解进行经过身份验证的访问。
  • 工作原理

  • 用户身份验证:用户通过 Supabase 身份验证登录。通过身份验证后,他们可以访问平台的功能,包括抓取数据和分析趋势。
  • 数据抓取:Trend Chat 使用 BrightData Web Scraping API 根据用户请求从 Reddit 抓取数据。抓取的数据包括来自各个 subreddits 的帖子、评论和讨论。
  • 数据存储和分析:抓取的数据存储在 Supabase 中(使用 Supabase 数据库进行高效存储),以便查询和分析。然后使用 AI 模型分析这些数据,提取趋势、情绪和见解,帮助企业做出数据驱动的决策。
  • 洞察聊天:用户可以通过聊天界面与平台互动,询问有关抓取数据的问题。系统根据收集的数据使用 Gemini API 生成 AI 驱动的响应,帮助用户更清楚地了解趋势和洞察。
  • 生成洞察:系统使用 AI 模型处理收集的数据,生成洞察,例如情绪分析、关键字趋势或子版块中讨论最多的主题。这些洞察以易于理解的格式呈现给用户。
  • 采取行动:用户可以利用提供的见解做出明智的决策,无论是针对产品开发、营销策略还是社区参与。他们可以通过继续与系统聊天来跟踪当前趋势或发现新的机会。
  • 为何选择 Trend Chat?

    在当今的数字世界中,了解和跟踪多个社区的趋势可能非常困难且耗时。**Trend Chat** 通过提供抓取、分析和与实时见解交互的一站式解决方案简化了此过程。

  • 随时了解:获取不同主题趋势的最新更新。
  • 做出数据驱动的决策:使用可操作的见解来指导商业战略。
  • 简化流程:自动化收集和分析数据的过程,节省您的时间和精力。
  • 可定制的见解:根据您的特定需求和业务目标定制见解。
  • 对于希望在竞争中保持领先并根据实时数据做出明智决策的企业、营销人员和爱好者来说,趋势聊天是完美的工具。

    未来的改进

    以下是对趋势聊天未来改进的一些想法:

  • 扩展数据源:集成其他抓取源和 API,以扩展可用数据的种类。
  • 先进的 AI 功能:增强 AI 模型以获得更深入的洞察,例如预测趋势和情绪预测。
  • 实时通知:添加推送通知以提醒用户有关新兴趋势或重要更新。
  • 与社交媒体整合:允许用户更轻松地抓取和分析社交媒体趋势。
  • 为什么我有资格获得更多学分

  • 创新数据收集:我的项目利用先进的抓取技术来收集实时 Reddit 帖子,从而实现一种独特的方法来识别和分析营销洞察趋势,这清楚地表明了对可靠和高效的数据提取的需求。
  • 可扩展的应用程序:在大量 Reddit 帖子上使用自动化管道进行命名实体识别 (NER) 直接支持了我的项目的可扩展性,凸显了扩展资源来处理不断增长的数据集的必要性。
  • 对小型企业的影响:我的项目帮助小型企业获得宝贵的市场洞察,最终促进其数字化转型。这与 Bright Data 的使命相一致,即通过获取优质数据来支持创新、有影响力的解决方案。
  • 结论

    **Trend Chat** 提供独特的网页抓取、数据分析和 AI 洞察组合,帮助企业和个人掌握新兴趋势。通过利用 **BrightData** 进行抓取和利用 **AI 模型** 进行洞察,Trend Chat 提供实时、可操作的信息,帮助用户做出更好的数据驱动决策。无论您是跟踪趋势、分析社区对话还是制定业务战略,**Trend Chat** 都是您保持领先地位所需的工具。

    感谢阅读!

    感谢您关注**Trend Chat**!我希望此工具能帮助您更有效地跟踪、分析和与趋势互动。

    链接:

  • Bright Data 网页抓取 API
  • Supabase 身份验证
  • AI 模型 - 拥抱脸
  • GitHub 存储库
  • DEV 挑战现已开始!

    DEV Challenges Hub

    查看所有参与方式、证明您的技能并赢取奖品。

    访问挑战中心