{"id":25423584,"url":"https://github.com/adelelawady/scraperly","last_synced_at":"2026-02-15T14:37:59.669Z","repository":{"id":277359014,"uuid":"926506578","full_name":"adelelawady/scraperly","owner":"adelelawady","description":"Scraperly is your all-in-one Python toolkit for creating engaging AI-powered videos. It seamlessly combines web scraping, AI content processing, and video generation to turn your text into professional-looking videos with minimal effort.","archived":false,"fork":false,"pushed_at":"2025-02-13T16:18:22.000Z","size":251,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-06T21:17:09.725Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adelelawady.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,"zenodo":null}},"created_at":"2025-02-03T11:31:10.000Z","updated_at":"2025-02-13T16:18:26.000Z","dependencies_parsed_at":"2025-02-13T14:39:56.557Z","dependency_job_id":"6b319ead-82f7-45f2-b038-62df10528504","html_url":"https://github.com/adelelawady/scraperly","commit_stats":null,"previous_names":["adelelawady/scraperly"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adelelawady/scraperly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2Fscraperly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2Fscraperly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2Fscraperly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2Fscraperly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adelelawady","download_url":"https://codeload.github.com/adelelawady/scraperly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2Fscraperly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29481622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T11:35:25.641Z","status":"ssl_error","status_checked_at":"2026-02-15T11:34:57.128Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":"2025-02-16T22:39:34.380Z","updated_at":"2026-02-15T14:37:59.656Z","avatar_url":"https://github.com/adelelawady.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scraperly 🎬 \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/d2acb889-33a8-4eed-9c24-18b4693e5cfc\" alt=\"Logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.org/project/scraperly/\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/scraperly.svg\" alt=\"PyPI version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/scraperly/\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/pyversions/scraperly.svg\" alt=\"Python versions\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/adelelawady/scraperly/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/adelelawady/scraperly.svg\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/adelelawady/scraperly/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/adelelawady/scraperly.svg\" alt=\"GitHub stars\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/adelelawady/scraperly/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/adelelawady/scraperly.svg\" alt=\"GitHub issues\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pepy.tech/project/scraperly\"\u003e\n    \u003cimg src=\"https://static.pepy.tech/badge/scraperly\" alt=\"Downloads\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e Transform your text into captivating AI-narrated videos with matching visuals! 🚀\n\nScraperly is your all-in-one Python toolkit for creating engaging AI-powered videos. It seamlessly combines web scraping, AI content processing, and video generation to turn your text into professional-looking videos with minimal effort.\n\n## 📚 Table of Contents\n- [✨ Features](#-features)\n- [🚀 Quick Start](#-quick-start)\n- [🎯 Input/Output Examples](#-input-output-examples)\n- [⚙️ Installation](#️-installation)\n- [🎯 Use Cases](#-use-cases)\n- [🛠️ Advanced Usage](#️-advanced-usage)\n- [🤖 AI Providers](#-ai-providers)\n- [🔧 Troubleshooting](#-troubleshooting)\n- [👥 Contributing](#-contributing)\n- [📝 License](#-license)\n\n## ✨ Features\n\n- 🎥 **One-Click Video Creation**: Transform text into professional videos\n- 🤖 **Multiple AI Providers**: Choose from OpenAI, Anthropic, Hyperbolic, or Ollama\n- 🖼️ **Smart Image Scraping**: Automatic image sourcing from Lexica.art\n- 🗣️ **Natural Narration**: High-quality text-to-speech conversion\n- ⚡ **Fast Processing**: Efficient content segmentation and processing\n- 🎨 **Customizable Output**: Control image count and video parameters\n\n## 🚀 Quick Start\n\n```python\nfrom scraperly import scraperly\nimport os\n\n# Create your first AI video in just 3 lines!\nresult = scraperly(\n    content=\"Your story or content here\",\n    provider_name=\"openai\",\n    api_key=os.getenv(\"OPENAI_API_KEY\"),\n    model=\"gpt-4\"\n)\n```\n\n## 📝 Input/Output Examples\n\n### Input Text\n```text\nThe wind howled through the abandoned streets as Elias tightened his coat around his shoulders. The city had once been alive, filled with laughter and the hum of everyday life, but now only the echoes of the past remained. He stepped over the broken pavement, eyes scanning for any sign of movement. The sun was setting, casting long shadows against the crumbling buildings. He needed to find shelter before nightfall. There was always something lurking in the darkness.\n\nHis footsteps echoed as he approached an old bookstore, its windows shattered, pages of forgotten stories scattered across the floor. He pushed the door open carefully, the hinges groaning in protest. Dust hung thick in the air, disturbed only by his breath. Shelves stood like silent sentinels, their contents long since plundered. He made his way toward the back, past fallen books and overturned chairs, and found what he was looking for. A hidden door, half-concealed behind a collapsed shelf.\n\nWith effort, he pushed through, stepping into a smaller room, untouched by the chaos outside. A single lantern sat on a desk, its wick dry but intact. He rummaged through his pack, pulling out a match, and struck it against the rough surface of his sleeve. The flame flickered to life, casting dancing shadows along the walls. He exhaled slowly, the brief warmth comforting.\n\nHe lowered himself into an old chair, feeling the exhaustion settle into his bones. He had been walking for days, searching for something he wasn’t sure existed anymore. A place safe from the nightmares that roamed the world, from the hunger that gnawed at his ribs, from the memories that refused to fade.\n\nOutside, the wind picked up again, rattling the broken glass and whispering secrets through the ruins. He closed his eyes, listening, waiting, knowing that soon, he would have to move again.\n```\n\n### Output Video\nhttps://github.com/user-attachments/assets/6d487c5d-685d-401f-81f0-adef608cd0a1\n\n\n## ⚙️ Installation\n\n### 📦 Using pip (Recommended)\n```bash\n# Basic installation\npip install scraperly\n\n# With AI provider support\npip install \"scraperly[ai]\"\n\n# Set up your API keys (recommended)\nexport OPENAI_API_KEY=\"your-openai-api-key\"\nexport ANTHROPIC_API_KEY=\"your-anthropic-api-key\"\n```\n\n### 🔧 From Source\n```bash\n# Clone and install\ngit clone https://github.com/adelelawady/scraperly.git\ncd scraperly\npip install -e \".[ai]\"\n```\n\n## 🎯 Use Cases\n\n### 1. Story Visualization\n```python\nfrom scraperly import scraperly\nimport os\n\n# Turn a story into an engaging video\nstory = \"\"\"\nThe ancient castle stood silently against the twilight sky,\nits weathered stones holding centuries of secrets...\n\"\"\"\n\nresult = scraperly(\n    content=story,\n    provider_name=\"anthropic\",\n    api_key=os.getenv(\"ANTHROPIC_API_KEY\"),\n    model=\"claude-3-sonnet\",\n    max_images_per_segment=3\n)\n```\n\n### 2. Educational Content\n```python\nfrom scraperly import scraperly\nimport os\n\n# Create educational videos\nlesson = \"\"\"\nThe Solar System consists of eight planets orbiting around the Sun.\nEach planet has unique characteristics...\n\"\"\"\n\nresult = scraperly(\n    content=lesson,\n    provider_name=\"openai\",\n    api_key=os.getenv(\"OPENAI_API_KEY\"),\n    model=\"gpt-4-turbo\",\n    max_images_per_segment=2,\n    output_video_path=\"solar_system.mp4\"\n)\n```\n\n## 🤖 AI Providers\n\n| Provider | Default Model | Available Models | Features |\n|----------|--------------|------------------|-----------|\n| OpenAI | `gpt-4` | All OpenAI chat models (e.g., `gpt-4`, `gpt-3.5-turbo`, `gpt-4-turbo`, etc.) | Best for creative content |\n| Anthropic | `claude-3-sonnet` | All Claude models (e.g., `claude-3-opus`, `claude-3-sonnet`, `claude-3-haiku`, etc.) | Excellent analysis |\n| Hyperbolic | `deepseek-v3` | All Deepseek models (e.g., `deepseek-v3`, `deepseek-v2`, etc.) | Fast processing |\n| Ollama | `llama2` | All Ollama models (e.g., `llama2`, `mistral`, `codellama`, etc.) | Local execution |\n\n## 🔧 Troubleshooting\n\n\u003cdetails\u003e\n\u003csummary\u003e🚫 Chrome Driver Issues\u003c/summary\u003e\n\n- ✅ Update Chrome to latest version\n- ✅ Verify matching chromedriver version\n- ✅ Check system PATH configuration\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e❌ AI Provider Errors\u003c/summary\u003e\n\n- ✅ Verify API key validity\n- ✅ Check provider status\n- ✅ Confirm model availability\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e⚠️ Video Processing Issues\u003c/summary\u003e\n\n- ✅ Install/update FFmpeg\n- ✅ Check disk space\n- ✅ Verify file permissions\n\u003c/details\u003e\n\n## 🤝 Contributing\n\nWe love your input! To contribute:\n\n1. 🍴 Fork the repo\n2. 🌿 Create your branch (`git checkout -b feature/AmazingFeature`)\n3. 💾 Commit changes (`git commit -m 'Add AmazingFeature'`)\n4. 📤 Push to branch (`git push origin feature/AmazingFeature`)\n5. 🎁 Open a Pull Request\n\n## 📝 License\n\nReleased under MIT License. See [LICENSE](LICENSE) for details.\n\n## 👤 Author\n\nCreated with 💖 by [adelelawady](mailto:adel50ali5@gmail.com)\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ for the AI community\n\u003c/p\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelelawady%2Fscraperly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadelelawady%2Fscraperly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelelawady%2Fscraperly/lists"}