Live
Black Hat USAAI BusinessBlack Hat AsiaAI BusinessNode.js Graceful Shutdown in Production: SIGTERM, In-Flight Draining, and Zero-Downtime DeploysDEV CommunityOptimizing Python Web Apps: Reducing High Memory Usage on Shared Servers for Improved PerformanceDEV CommunityI Built a Game That Teaches Git by Making You Type Real CommandsDEV CommunityThe Internet is a Thin Cylinder: Supporting Millions, Supported by OneDEV CommunityPi-hole Setup Guide: Block Ads and Malware for Every Device on Your NetworkDEV CommunityWhy natural transformations?LessWrong AIThe Wrong Way to Use AI for Debugging (And the Mental Model That Actually Works)DEV CommunityThe hidden cost of GPT-4o: what every SaaS founder should know about per-user LLM spend itDEV CommunitySetting Up a Production-Ready Laravel Stack: Nginx, PHP 8.4, MySQL, Valkey & SupervisorDEV CommunityBlazor WASM's Deputy Thread Model Will Break JavaScript Interop - Here's Why That MattersDEV Community512,000 lines of leaked AI agent source code, three mapped attack paths, and the audit security leaders need now - VentureBeatGoogle News: ClaudeThe org chart is holding back your A.I. strategy. LinkedIn's top executives say it's time to let it - hcamag.comGoogle News: Generative AIBlack Hat USAAI BusinessBlack Hat AsiaAI BusinessNode.js Graceful Shutdown in Production: SIGTERM, In-Flight Draining, and Zero-Downtime DeploysDEV CommunityOptimizing Python Web Apps: Reducing High Memory Usage on Shared Servers for Improved PerformanceDEV CommunityI Built a Game That Teaches Git by Making You Type Real CommandsDEV CommunityThe Internet is a Thin Cylinder: Supporting Millions, Supported by OneDEV CommunityPi-hole Setup Guide: Block Ads and Malware for Every Device on Your NetworkDEV CommunityWhy natural transformations?LessWrong AIThe Wrong Way to Use AI for Debugging (And the Mental Model That Actually Works)DEV CommunityThe hidden cost of GPT-4o: what every SaaS founder should know about per-user LLM spend itDEV CommunitySetting Up a Production-Ready Laravel Stack: Nginx, PHP 8.4, MySQL, Valkey & SupervisorDEV CommunityBlazor WASM's Deputy Thread Model Will Break JavaScript Interop - Here's Why That MattersDEV Community512,000 lines of leaked AI agent source code, three mapped attack paths, and the audit security leaders need now - VentureBeatGoogle News: ClaudeThe org chart is holding back your A.I. strategy. LinkedIn's top executives say it's time to let it - hcamag.comGoogle News: Generative AI

Telepage – I built a self-hosted PHP app that turns any Telegram channel into a website

DEV Communityby Giuseppe CarlàApril 1, 20263 min read0 views
Source Quiz

<p>If you run a Telegram channel, you already know the problem: your content is invisible to Google, there's no search, old posts are buried, and readers need the app just to see your work.</p> <p>I built <strong>Telepage</strong> to fix that.</p> <h2> What it does </h2> <p>Telepage connects to your Telegram channel via a bot webhook and turns every post into a searchable web card — automatically, in real time.</p> <p><a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0zcxkaob0c3c5sglju1.png" class="article-body-image-wrapper"><img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uplo

If you run a Telegram channel, you already know the problem: your content is invisible to Google, there's no search, old posts are buried, and readers need the app just to see your work.

I built Telepage to fix that.

What it does

Telepage connects to your Telegram channel via a bot webhook and turns every post into a searchable web card — automatically, in real time.

Every hashtag in your Telegram posts becomes a colored navigation filter. Every link gets its Open Graph metadata scraped. Every post gets an AI-generated summary and tags if you connect a Gemini key.

The tech stack

Pure PHP 8.1, SQLite with WAL mode, vanilla JS. No frameworks, no Composer, no build step, no MySQL. It runs on standard shared hosting — I tested it on Aruba (a very restrictive Italian host).

Telegram channel  │  ▼ webhook (instant) PHP 8.1 + SQLite  │  ▼ Your website — card grid, search, tag filters

Enter fullscreen mode

Exit fullscreen mode

Interesting technical decisions

Session isolation per installation Multiple Telepage sites on the same domain (e.g. site.com/news/ and site.com/recipes/) need completely separate admin sessions. I solved this with:

session_name('tp_' . substr(md5(TELEPAGE_ROOT), 0, 12)); session_start();
_

Enter fullscreen mode

Exit fullscreen mode

Each installation path produces a unique session name — no shared cookies, no cross-login.

History Scanner Telegram's Bot API has no "get all past messages" endpoint. To import historical content I use the forwardMessage trick: forward each message ID from the channel to itself, read the content, then immediately delete the forwarded copy. It scans backwards from the most recent ID, skipping gaps from deleted messages.

AI integration Optional Google Gemini integration auto-tags and summarizes every post. The models available via the free tier change frequently — I built a cascade fallback that tries multiple model names in order and logs exactly which one succeeded.

What it looks like in production

I've been running it on two test channels:

  • A science/news channel: 23 posts, tagged by topic

  • A recipes channel: 952 posts, fully tagged and summarized by AI

The recipes site went from zero to 952 searchable, tagged posts in a few hours using the History Scanner.

What I'm less happy with

  • AI calls are currently synchronous in the admin panel — for large archives you click "Process AI" repeatedly. A proper background queue would be better.

  • The History Scanner requires manual ID tuning when posts are missing — not ideal for non-technical users.

  • No pagination on the install wizard, though the 5-step flow works fine in practice.

Try it

GitHub: github.com/scibilo/telepage

It's MIT licensed. Works on any PHP 8.1+ shared hosting with HTTPS. The install wizard takes about 5 minutes.

Feedback welcome — this is the first public release and I'm actively improving it.

Was this article helpful?

Sign in to highlight and annotate this article

AI
Ask AI about this article
Powered by AI News Hub · full article context loaded
Ready

Conversation starters

Ask anything about this article…

Daily AI Digest

Get the top 5 AI stories delivered to your inbox every morning.

More about

geminimodelrelease

Knowledge Map

Knowledge Map
TopicsEntitiesSource
Telepage – …geminimodelreleaseavailableproductintegrationDEV Communi…

Connected Articles — Knowledge Graph

This article is connected to other articles through shared AI topics and tags.

Knowledge Graph100 articles · 200 connections
Scroll to zoom · drag to pan · click to open

Discussion

Sign in to join the discussion

No comments yet — be the first to share your thoughts!

More in Releases