markItDown
📱 A React app to preview and edit Markdown✍. You can also export it as HTML.
Turn your Telegram Channel into a MicroBlog.
git clone https://github.com/miantiao-me/BroadcastChannel.gitmiantiao-me/BroadcastChannelTurn your Telegram Channel into a MicroBlog.
English | 简体中文
Contents: Features · Demo · Tech Stack · Deployment · Configuration · Themes · FAQs · Sponsor
/sitemap.xml/rss.xml /rss.jsonBroadcastChannel supports deployment on serverless platforms like Cloudflare Workers, Netlify, Vercel that support SSR, or on a VPS. Cloudflare Pages SSR is not supported with Astro 6 + @astrojs/cloudflare v13; use Workers for Cloudflare deployments. For detailed tutorials, see Deploy your Astro site.
docker pull ghcr.io/miantiao-me/broadcastchannel:maindocker run -d --name broadcastchannel -p 4321:4321 -e CHANNEL=miantiao_me ghcr.io/miantiao-me/broadcastchannel:mainBroadcastChannel project and the Astro frameworkCHANNEL with your channel name. This is the minimal configuration; see Configuration for moreEdgeOne is supported and detected automatically through std-env's edgeone_pages provider or the platform-provided EDGEONE_PROJECT_ID/EO_MAKERS variables. Set SERVER_ADAPTER only when you need to override automatic adapter detection.
Cloudflare Workers minimal commands:
pnpm exec wrangler login SERVER_ADAPTER=cloudflare_workers pnpm build pnpm exec wrangler deploy
Configure CHANNEL and other runtime values in the Workers dashboard or with pnpm exec wrangler secret put CHANNEL.
Cloudflare Pages SSR is not supported with Astro 6 + @astrojs/cloudflare v13. Migrate Pages deployments to Workers.
Only CHANNEL is required. It is the public Telegram channel username (the string after t.me/).
CHANNEL=miantiao_me
Optional variables. Also see .env.example.
## Required CHANNEL=miantiao_me ## Language and timezone (Intl/BCP 47 locale, e.g. en or zh-CN) LOCALE=en TIMEZONE=America/New_York ## Social usernames TELEGRAM=miantiao-me TWITTER=miantiao-me GITHUB=miantiao-me MASTODON=mastodon.social/@Mastodon BLUESKY=bsky.app ## Social URLs (full URLs required) DISCORD=https://DISCORD.com PODCAST=https://PODCAST.com ## Trusted-admin raw HTML injection (header / footer) HEADER_INJECT= FOOTER_INJECT= ## SEO NOFOLLOW=false NOINDEX=false ## UI HIDE_DESCRIPTION=false COMMENTS=true REACTIONS=true RSS_BEAUTIFY=true ## Tags, links, and navigation (comma / semicolon separated) TAGS=tag1,tag2,tag3 LINKS=Title1,URL1;Title2,URL2;Title3,URL3; NAVS=Title1,URL1;Title2,URL2;Title3,URL3; ## Search GOOGLE_SEARCH_SITE=memo.miantiao.me ## Advanced (usually leave as-is) TELEGRAM_HOST=telegram.dog STATIC_PROXY= # Override automatic adapter detection when needed. SERVER_ADAPTER= # Append hostname-only proxy targets to the defaults, separated by commas (no protocol, port, or path). TARGET_WHITELIST=a.com,b.com
Base is always loaded. Leave HEADER_INJECT empty to use Base, or load exactly one built-in override:
| Theme | Path |
|---|---|
| Sepia | /themes/sepia.css |
| Aria | /themes/aria.css |
| Terminal Amber | /themes/terminal-amber.css |
| Terminal Green | /themes/terminal-green.css |
| Terminal Cyan | /themes/terminal-cyan.css |
| Terminal Magenta | /themes/terminal-magenta.css |
| HN News | /themes/hn-news.css |
| TG Channel | /themes/tg-channel.css |
| ZAE | /themes/zae.css |
HEADER_INJECT='<link rel="stylesheet" href="/themes/aria.css">'
HN News, TG Channel, and ZAE are fixed-light themes. Do not load /themes/terminal-base.css directly; there is no /themes/terminal.css.
Full configuration, light/dark behavior, platform dashboard values, custom CSS, and security notes: THEMES.md. Theme credits: NOTICE.md.
https://t.me/s/channelusernamemore like this
📱 A React app to preview and edit Markdown✍. You can also export it as HTML.
search projects, people, and tags