{"id":24167144,"url":"https://github.com/ericciarla/trendFinder","last_synced_at":"2025-09-20T11:32:27.122Z","repository":{"id":270528022,"uuid":"910573240","full_name":"ericciarla/trendFinder","owner":"ericciarla","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-01T00:56:54.000Z","size":44,"stargazers_count":86,"open_issues_count":1,"forks_count":11,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-01T01:25:46.708Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericciarla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-31T17:15:49.000Z","updated_at":"2025-01-01T01:23:02.000Z","dependencies_parsed_at":"2025-01-01T01:25:55.167Z","dependency_job_id":"07ca7103-6580-4631-93ec-266c11c9b6c0","html_url":"https://github.com/ericciarla/trendFinder","commit_stats":null,"previous_names":["ericciarla/trendfinder"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericciarla%2FtrendFinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericciarla%2FtrendFinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericciarla%2FtrendFinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericciarla%2FtrendFinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericciarla","download_url":"https://codeload.github.com/ericciarla/trendFinder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233660120,"owners_count":18710025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-12T21:01:46.603Z","updated_at":"2025-09-20T11:32:27.113Z","avatar_url":"https://github.com/ericciarla.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Repos","Stale"],"sub_categories":["JS Libraries \u0026 Utilities"],"readme":"# Trend Finder 🔦\n\n**Stay on top of trending topics on social media — all in one place.**\n\nTrend Finder collects and analyzes posts from key influencers, then sends a Slack or Discord notification when it detects new trends or product launches. This has been a complete game-changer for the Firecrawl marketing team by:\n\n- **Saving time** normally spent manually searching social channels\n- **Keeping you informed** of relevant, real-time conversations\n- **Enabling rapid response** to new opportunities or emerging industry shifts\n\n_Spend less time hunting for trends and more time creating impactful campaigns._\n\n## Watch the Demo \u0026 Tutorial video\n\n[![Thumbnail](https://i.ytimg.com/vi/puimQSun92g/hqdefault.jpg)](https://www.youtube.com/watch?v=puimQSun92g)\n\nLearn how to set up Trend Finder and start monitoring trends in this video!\n\n## How it Works\n\n1. **Data Collection** 📥\n   - Monitors selected influencers' posts on Twitter/X using the X API (Warning: the X API free plan is rate limited to only monitor 1 X account every 15 min)\n   - Monitors websites for new releases and news with Firecrawl's /extract\n   - Runs on a scheduled basis using cron jobs\n\n2. **AI Analysis** 🧠\n   - Processes collected content through Together AI\n   - Identifies emerging trends, releases, and news.\n   - Analyzes sentiment and relevance\n\n3. **Notification System** 📢\n   - When significant trends are detected, sends Slack or Discord notifications based on cron job setup\n   - Provides context about the trend and its sources\n   - Enables quick response to emerging opportunities\n\n## Features\n\n- 🤖 AI-powered trend analysis using Together AI\n- 📱 Social media monitoring (Twitter/X integration)\n- 🔍 Website monitoring with Firecrawl\n- 💬 Instant Slack or Discord notifications\n- ⏱️ Scheduled monitoring using cron jobs\n\n## Prerequisites\n\n- Node.js (v14 or higher)\n- npm or yarn\n- Docker\n- Docker Compose\n- Slack workspace with webhook permissions\n- API keys for required services\n\n## Environment Variables\n\nCopy `.env.example` to `.env` and configure the following variables:\n\n```\n# Optional: API key from Together AI for trend analysis (https://www.together.ai/)\nTOGETHER_API_KEY=your_together_api_key_here\n\n# Optional: API key from DeepSeek for trend analysis (https://deepseek.com/)\nDEEPSEEK_API_KEY=\n\n# Optional: API key from OpenAI for trend analysis (https://openai.com/)\nOPENAI_API_KEY=\n\n# Required if monitoring web pages (https://www.firecrawl.dev/)\nFIRECRAWL_API_KEY=your_firecrawl_api_key_here\n\n# Required if monitoring Twitter/X trends (https://developer.x.com/)\nX_API_BEARER_TOKEN=your_twitter_api_bearer_token_here\n\n# Notification driver. Supported drivers: \"slack\", \"discord\"\nNOTIFICATION_DRIVER=discord\n\n# Required (if NOTIFICATION_DRIVER is \"slack\"): Incoming Webhook URL from Slack for notifications\nSLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL\n\n# Required (if NOTIFICATION_DRIVER is \"discord\"): Incoming Webhook URL from Discord for notifications\nDISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/WEBHOOK/URL\n```\n\n## Getting Started\n\n1. **Clone the repository:**\n   ```bash\n   git clone [repository-url]\n   cd trend-finder\n   ```\n\n2. **Install dependencies:**\n   ```bash\n   npm install\n   ```\n\n3. **Configure environment variables:**\n   ```bash\n   cp .env.example .env\n   # Edit .env with your configuration\n   ```\n\n4. **Run the application:**\n   ```bash\n   # Development mode with hot reloading\n   npm run start\n\n   # Build for production\n   npm run build\n   ```\n\n## Using Docker\n\n1. **Build the Docker image:**\n   ```bash\n   docker build -t trend-finder .\n   ```\n\n2. **Run the Docker container:**\n   ```bash\n   docker run -d -p 3000:3000 --env-file .env trend-finder\n   ```\n\n## Using Docker Compose\n\n1. **Start the application with Docker Compose:**\n   ```bash\n   docker-compose up --build -d\n   ```\n\n2. **Stop the application with Docker Compose:**\n   ```bash\n   docker-compose down\n   ```\n\n## Project Structure\n\n```\ntrend-finder/\n├── src/\n│   ├── controllers/    # Request handlers\n│   ├── services/       # Business logic\n│   └── index.ts        # Application entry point\n├── .env.example        # Environment variables template\n├── package.json        # Dependencies and scripts\n└── tsconfig.json       # TypeScript configuration\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericciarla%2FtrendFinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericciarla%2FtrendFinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericciarla%2FtrendFinder/lists"}