{"id":43551693,"url":"https://github.com/pshapiro/rankenberry","last_synced_at":"2026-02-03T19:34:10.105Z","repository":{"id":256075777,"uuid":"850791406","full_name":"pshapiro/rankenberry","owner":"pshapiro","description":"Simple rank tracking off of 3rd party api with advanced data features","archived":false,"fork":false,"pushed_at":"2024-09-16T17:37:57.000Z","size":228,"stargazers_count":20,"open_issues_count":1,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-09-16T21:02:51.980Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pshapiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-09-01T19:34:50.000Z","updated_at":"2024-09-16T17:38:01.000Z","dependencies_parsed_at":"2024-09-08T21:27:41.208Z","dependency_job_id":"7425c391-0849-4f82-b075-06d92c3483b4","html_url":"https://github.com/pshapiro/rankenberry","commit_stats":null,"previous_names":["pshapiro/rankenberry"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pshapiro/rankenberry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pshapiro%2Frankenberry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pshapiro%2Frankenberry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pshapiro%2Frankenberry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pshapiro%2Frankenberry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pshapiro","download_url":"https://codeload.github.com/pshapiro/rankenberry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pshapiro%2Frankenberry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29054764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-02-03T19:34:09.976Z","updated_at":"2026-02-03T19:34:10.097Z","avatar_url":"https://github.com/pshapiro.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![rankenberry-logo](https://github.com/user-attachments/assets/7222a62b-52e2-4474-afa7-653362a0dfa1) Rankenberry: SEO Rank Tracker\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n\n\"A simple rank tracking application leveraging a 3rd party API with advanced data features.\"\n\n## Project Overview\n\nThis SEO Rank Tracker is a web application that allows users to track search engine rankings for specified keywords across different projects. It utilizes multiple 3rd party APIs to fetch SERP data, such as [SpaceSERP](https://appsumo.8odi.net/nLaMra) (lifetime deal on AppSumo), and search volume information, providing advanced features for data analysis and visualization.\n\n### Key Features\n\n- Project-based keyword tracking\n- SERP data fetching and storage\n- Rank tracking over time\n- Search volume tracking with 30-day update intervals (via Grepwords)\n- Advanced data filtering and visualization\n- Keyword tagging system\n- Historical data viewing and exporting\n- User-friendly interface built with Vue.js\n- Google Search Console integration\n- Business impact estimation based on rank changes\n\n## Tech Stack\n\n- Frontend: Vue.js 3 with Vite\n- Backend: Python with FastAPI\n- Database: SQLite\n- API Integrations: \n  - [SpaceSERP](https://appsumo.8odi.net/nLaMra) for SERP data (lifetime deal on AppSumo)\n  - Grepwords for search volume data\n  - Google Search Console API for additional search data\n\n## Installation\n\n1. **Clone the repository:**\n   ```bash\n   git clone https://github.com/your-username/seo-rank-tracker.git\n   cd seo-rank-tracker\n   ```\n\n2. **Set up the backend:**\n   ```bash\n   cd backend\n   python -m venv venv\n   source venv/bin/activate  # On Windows use `venv\\Scripts\\activate`\n   pip install -r requirements.txt\n   ```\n\n3. **Set up the frontend:**\n   ```bash\n   cd ../frontend/rankenberry-frontent\n   npm install\n   ```\n\n4. **Install additional JavaScript libraries:**\n   ```bash\n   npm install axios pinia v-calendar plotly.js-dist-min\n   ```\n\n5. **Create a `.env` file in the backend directory and add your API keys:**\n   ```env\n   SPACESERP_API_KEY=your_spaceserp_api_key_here\n   GREPWORDS_API_KEY=your_grepwords_api_key_here\n   GOOGLE_CLIENT_ID=your_google_client_id_here\n   GOOGLE_CLIENT_SECRET=your_google_client_secret_here\n   ```\n\n   To obtain your Google Search Console API credentials:\n   1. Go to the [Google Cloud Console](https://console.cloud.google.com/).\n   2. Create a new project or select an existing one.\n   3. Enable the Google Search Console API for your project.\n   4. Go to the \"Credentials\" section and create a new OAuth 2.0 Client ID.\n   5. Choose \"Web application\" as the application type.\n   6. Add authorized redirect URIs (e.g., http://localhost:5000/oauth2callback for local development).\n   7. After creating, you'll receive a Client ID and Client Secret. Use these in your `.env` file.\n\n### Additional JavaScript Libraries\n\n- **axios**: Promise-based HTTP client for making API requests.\n- **pinia**: State management library for Vue.js applications.\n- **v-calendar**: Calendar and date picker component for Vue.js.\n- **plotly.js-dist-min**: JavaScript graphing library for creating interactive charts.\n\nThese libraries are essential for the functionality of the frontend application. They handle API communication, state management, date selection, and data visualization respectively.\n\n## Getting Started\n\n### Prerequisites\n\n- **Node.js** (v14 or later)\n- **Python** (v3.8 or later)\n- **pip** (Python package manager)\n\n### Running the Application\n\n1. **Start the backend server:**\n   ```bash\n   cd backend\n   uvicorn app:app --reload\n   ```\n\n2. **In a new terminal, start the frontend development server:**\n   ```bash\n   cd frontend/rankenberry-frontent\n   npm run dev\n   ```\n\n3. **Open your browser and navigate to** [`http://localhost:5173`](http://localhost:5173) **to use the application.**\n\n## Usage\n\n1. **Add a new project with a domain.**\n2. **Add keywords to track for each project.**\n3. **Fetch SERP data for your keywords.**\n4. **View and analyze ranking data over time.**\n5. **Use the tagging system to organize and filter keywords.**\n6. **View historical data for individual keywords.**\n7. **Export keyword history data as needed.**\n\n## New Features\n\n- **Search Volume Tracking:** The application now fetches and stores search volume data for keywords, updating every 30 days.\n- **Keyword Tagging:** Users can add tags to keywords for better organization and filtering.\n- **Historical Data Viewing:** A new modal allows users to view and export historical data for individual keywords.\n- **Improved Data Visualization:** The rank table includes more detailed metrics and allows for advanced filtering.\n- **Async Scheduler Integration:** Utilizes `AsyncIOScheduler` for asynchronous job scheduling, ensuring that scheduled tasks are properly awaited and executed without issues.\n- **Resilient Scheduling System:** Enhanced error handling and logging for scheduled tasks to ensure reliability and easier debugging.\n- **Google Search Console Integration:** Fetches additional search data to complement SERP information.\n- **Business Impact Estimation:** Calculates potential business impact based on rank changes, considering factors such as:\n  - Current and previous keyword rankings\n  - Search volume for the keyword\n  - Click-through rates (CTR) for different ranking positions according to yoour GSC data (and fallback to industry standard CTRs if not available)\n  - User-defined conversion rates and conversion values\n  This feature helps users understand the potential traffic and revenue implications of ranking changes, providing valuable insights for SEO strategy.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Acknowledgments\n\n- Thanks to [SpaceSERP](https://appsumo.8odi.net/nLaMra) for providing the SERP data API\n- Thanks to Grepwords for providing the search volume data API\n- Vue.js and FastAPI communities for their excellent documentation and tools\n\n## TODO\n\nFor a list of planned features and improvements, please see our [TODO list](https://github.com/pshapiro/rankenberry/blob/main/TODO.md).\n\n---\n\n*Note: The SpaceSERP link is an affiliate link, which means I may receive commission if you sign up from those links.*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpshapiro%2Frankenberry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpshapiro%2Frankenberry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpshapiro%2Frankenberry/lists"}