@@ -262,7 +263,7 @@ or `~/.codeium/windsurf/mcp_config.json`:
"mcpServers": {
"telegram-scraper": {
"command": "uvx",
- "args": ["--from", "tgscraper[mcp] @ git+https://github.com/specialteam/TelegramScraper", "tgscraper-mcp"],
+ "args": ["--from", "telegram-channel-scraper[mcp]", "tgscraper-mcp"],
"env": { "TGSCRAPER_PROXY": "" }
}
}
@@ -280,7 +281,7 @@ or `~/.codeium/windsurf/mcp_config.json`:
"telegram-scraper": {
"type": "stdio",
"command": "uvx",
- "args": ["--from", "tgscraper[mcp] @ git+https://github.com/specialteam/TelegramScraper", "tgscraper-mcp"]
+ "args": ["--from", "telegram-channel-scraper[mcp]", "tgscraper-mcp"]
}
}
}
@@ -299,7 +300,7 @@ Environment variables: `TGSCRAPER_PROXY` (proxy URL for all requests), `TGSCRAPE
### Claude Skill
-[`.claude/skills/telegram-scraper/SKILL.md`](.claude/skills/telegram-scraper/SKILL.md) teaches an agent when and how
+[`.claude/skills/telegram-scraper/SKILL.md`](https://github.com/specialteam/TelegramScraper/blob/main/.claude/skills/telegram-scraper/SKILL.md) teaches an agent when and how
to use the CLI (commands, JSON schema, how to cite results). Install it for all your projects:
```bash
@@ -314,14 +315,14 @@ For claude.ai, zip the `telegram-scraper` folder and upload it under **Settings
- *"Search @xyz for 'airdrop' and give me the dates and links."*
- *"Export the last 1000 posts of t.me/abc to Excel."*
-Other agents: [`AGENTS.md`](AGENTS.md) and [`llms.txt`](llms.txt) describe the project for LLMs.
+Other agents: [`AGENTS.md`](https://github.com/specialteam/TelegramScraper/blob/main/AGENTS.md) and [`llms.txt`](https://github.com/specialteam/TelegramScraper/blob/main/llms.txt) describe the project for LLMs.
---
## 🖥 Web dashboard
```bash
-pip install "tgscraper[dashboard] @ git+https://github.com/specialteam/TelegramScraper"
+pip install "telegram-channel-scraper[dashboard]"
tgscraper dashboard # → http://localhost:8501
```
@@ -400,7 +401,7 @@ rates reasonable. This project is not affiliated with Telegram.
```bash
-pip install "tgscraper[all] @ git+https://github.com/specialteam/TelegramScraper"
+pip install "telegram-channel-scraper[all]"
```
diff --git a/llms.txt b/llms.txt
index 645362b..f002fd7 100644
--- a/llms.txt
+++ b/llms.txt
@@ -5,8 +5,8 @@
> reactions, media, hashtags, links), supports search, date/keyword filters, JSON/CSV/Excel/SQLite export,
> incremental scraping, monitoring with webhooks, media download and analytics.
-Install: `pip install "tgscraper[all] @ git+https://github.com/specialteam/TelegramScraper"`
-MCP server: `uvx --from "tgscraper[mcp] @ git+https://github.com/specialteam/TelegramScraper" tgscraper-mcp`
+Install: `pip install "telegram-channel-scraper[all]"`
+MCP server: `uvx --from "telegram-channel-scraper[mcp]" tgscraper-mcp`
## Docs
- [README](README.md): features, CLI, Python API, MCP setup for Claude/Cursor/VS Code, Docker, FAQ
diff --git a/pyproject.toml b/pyproject.toml
index 8bae4c0..bbaf8ba 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,7 +3,7 @@ requires = ["setuptools>=64"]
build-backend = "setuptools.build_meta"
[project]
-name = "tgscraper"
+name = "telegram-channel-scraper"
version = "2.0.0"
description = "Scrape public Telegram channels without API keys or login — Python library, CLI, MCP server for AI agents, and dashboard."
readme = "README.md"
@@ -29,8 +29,8 @@ dependencies = ["httpx[socks]>=0.27", "beautifulsoup4>=4.11"]
excel = ["openpyxl>=3.1"]
mcp = ["mcp>=1.2; python_version>='3.10'"]
dashboard = ["streamlit>=1.35"]
-all = ["tgscraper[excel,mcp,dashboard]"]
-dev = ["tgscraper[excel,mcp]", "pytest>=7", "pytest-asyncio>=0.23", "respx>=0.21", "flake8"]
+all = ["telegram-channel-scraper[excel,mcp,dashboard]"]
+dev = ["telegram-channel-scraper[excel,mcp]", "pytest>=7", "pytest-asyncio>=0.23", "respx>=0.21", "flake8"]
[project.scripts]
tgscraper = "tgscraper.cli:main"
diff --git a/tgscraper/cli.py b/tgscraper/cli.py
index c463e8d..906ec3f 100644
--- a/tgscraper/cli.py
+++ b/tgscraper/cli.py
@@ -108,7 +108,7 @@ def build_parser() -> argparse.ArgumentParser:
p = sub.add_parser("mcp", help="run the MCP server (stdio) so AI assistants can use tgscraper")
p.add_argument("--transport", default="stdio", choices=["stdio", "sse", "streamable-http"])
- sub.add_parser("dashboard", help="open the web dashboard (needs tgscraper[dashboard])")
+ sub.add_parser("dashboard", help="open the web dashboard (needs telegram-channel-scraper[dashboard])")
return parser
@@ -255,7 +255,7 @@ def _dashboard() -> None:
try:
import streamlit # noqa: F401
except ImportError:
- print("Dashboard needs streamlit: pip install 'tgscraper[dashboard]'", file=sys.stderr)
+ print("Dashboard needs streamlit: pip install 'telegram-channel-scraper[dashboard]'", file=sys.stderr)
raise SystemExit(1)
app = Path(__file__).with_name("dashboard.py")
raise SystemExit(subprocess.call([sys.executable, "-m", "streamlit", "run", str(app)]))
diff --git a/tgscraper/dashboard.py b/tgscraper/dashboard.py
index 0381556..7671b4f 100644
--- a/tgscraper/dashboard.py
+++ b/tgscraper/dashboard.py
@@ -1,4 +1,4 @@
-"""Web dashboard. Run with ``tgscraper dashboard`` (needs ``pip install 'tgscraper[dashboard]'``)."""
+"""Web dashboard. Run with ``tgscraper dashboard`` (needs ``pip install 'telegram-channel-scraper[dashboard]'``)."""
from __future__ import annotations
import datetime as dt
diff --git a/tgscraper/exporters.py b/tgscraper/exporters.py
index 45200e5..4a13687 100644
--- a/tgscraper/exporters.py
+++ b/tgscraper/exporters.py
@@ -104,7 +104,7 @@ def export(messages: Iterable[Message], path: Union[str, Path], format: Optional
try:
from openpyxl import Workbook
except ImportError as exc: # pragma: no cover
- raise ImportError("Excel export needs openpyxl: pip install 'tgscraper[excel]'") from exc
+ raise ImportError("Excel export needs openpyxl: pip install 'telegram-channel-scraper[excel]'") from exc
wb = Workbook()
ws = wb.active
ws.title = "messages"
diff --git a/tgscraper/mcp_server.py b/tgscraper/mcp_server.py
index 6089e17..756c6bc 100644
--- a/tgscraper/mcp_server.py
+++ b/tgscraper/mcp_server.py
@@ -13,7 +13,7 @@
try: # mcp 1.x
from mcp.server.fastmcp import FastMCP
except ImportError as exc: # pragma: no cover
- raise ImportError("The MCP server needs the 'mcp' package: pip install 'tgscraper[mcp]'") from exc
+ raise ImportError("The MCP server needs the 'mcp' package: pip install 'telegram-channel-scraper[mcp]'") from exc
from .analytics import summarize
from .client import AsyncScraper, ScraperError