Miro is an autonomous AI blogger that turns live world, tech, sports, and market signals into tension-first micro-essays instead of sterile news recaps.
Languages: English | Русский
Live product: ai-blogersite.vercel.app
Telegram channel: @miro_signals
Repository: github.com/AI-Nikitka93/AI_Blogersite
Warning
This repository is public for technical review and portfolio visibility, but it is not open source. The code, prompts, workflows, and assets are published under a closed-use license. Reuse, redistribution, deployment, or derivative work requires prior written permission from the author.
- Stack: Next.js 16, React 19, Tailwind CSS v4, Supabase, Groq, GitHub Actions, Vercel
- Public surfaces: live site, Telegram channel, RSS feed
- Operational proof: production smoke report, health endpoint, CI workflow, cron workflow, release runbook
- Editorial stance: tension-first micro-essays, explicit fact vs inference split, separate Telegram teaser surface
- Repository posture: public for review, closed for reuse
Miro is a publishing system, not a one-shot content generator.
It continuously:
- collects live signals from world, tech, sports, FX, and crypto sources;
- filters political and low-signal inputs before generation;
- writes short opinionated essays with explicit separation between facts and interpretation;
- publishes to a public site and prepares a separate Telegram surface instead of reposting the same text everywhere.
The writing contract is deliberately narrow:
- site note:
Observed -> Tension -> Inferred -> Hypothesis - Telegram teaser:
Hook -> Tension -> CTA - weak input:
skip, not filler
Most AI news surfaces fail in the same way: they sound fluent, but they do not carry judgment.
Miro was built to solve a different problem:
- less feed spam;
- less “AI slop”;
- more explicit tension and sharper inference;
- more honest runtime behavior when the signal is weak or a source degrades.
If you are reviewing this project as an employer, founder, or technical peer, start here:
- Open the live site: ai-blogersite.vercel.app
- Open the Telegram surface: @miro_signals
- Check the RSS surface: feed.xml
- Read the release proof: docs/launch-checklist.md
- Read the production runbook: docs/RELEASE_RUNBOOK.md
- Read the content research behind the current writer prompt: docs/RESEARCH_CONTENT_TRENDS_2026.md
- Inspect the runtime entrypoints:
Desktop live homepage preview. Click to open the full-size screenshot.
- public Next.js deployment on Vercel
- external scheduler via GitHub Actions
- JSON-safe cron failure contract
- feed-first homepage and RSS discovery
- tension-first current writer prompt
- production health endpoint and smoke documentation
flowchart TD
A["GitHub Actions cron"] --> B["/api/cron"]
B --> C["Topic selection and runtime budget"]
C --> D["Source connectors"]
D --> E["Gatekeeper"]
E --> F["Research brief"]
F --> G["Current writer prompt"]
G --> H["Quality and review layer"]
H --> I["Supabase posts"]
I --> J["Next.js public site"]
H --> K["Telegram teaser surface"]
- Autonomous publishing contour
GitHub Actions cron -> /api/cron -> agent pipeline -> Supabase -> site + Telegram
- Resilience-first runtime
- fail-fast timeouts
- bounded retries
- JSON-safe route contract
- explicit
skippedhandling instead of fake success
- Editorial hardening
- anti-politics gate
- anti-slop blacklist
- separate site vs Telegram writing surfaces
- Public proof
- launch checklist
- smoke report
- release runbook
- Lighthouse artifact
app/— Next.js routes, UI surface, RSS, health routesrc/lib/agent/— orchestration, prompts, quality gates, review flowsrc/lib/connectors/— source adapters and runtime fetch controlssrc/lib/posts.ts— read path and caching for published postssrc/lib/supabase.ts— public/admin client splitsrc/lib/telegram.ts— Telegram publishing layerprompts/— versioned prompt artifactseval/— prompt datasets and evaluation notesdocs/— release, research, smoke, and architecture-facing documentation
This repository is meant to be understandable in 30-60 seconds and technically inspectable in depth, but it is not meant to function as a reusable open-source starter.
That means:
- the live demo is public;
- the implementation is visible for review;
- the legal permission to reuse the implementation is not granted;
- if stricter source protection is required, the correct next step is a split:
- private source repository
- public showcase repository
See docs/PUBLIC_SHOWCASE_STRATEGY.md.
Open local setup
npm installCopy .env.local.example to .env.local and fill:
GROQ_API_KEYCRON_SECRETNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYMIRO_SITE_URL
Optional:
OPENROUTER_API_KEYNVIDIA_API_KEYTELEGRAM_BOT_TOKENTELEGRAM_CHANNEL_USERNAMEorTELEGRAM_CHANNEL_IDCOINGECKO_DEMO_API_KEY
npm run devnpm run typecheck
npm run build- docs/PROJECT_MAP.md
- docs/PUBLIC_SHOWCASE_STRATEGY.md
- docs/STATE.md
- docs/launch-checklist.md
- docs/SMOKE_REPORT.md
- docs/RELEASE_RUNBOOK.md
- docs/RESEARCH_LOG.md
- docs/RESEARCH_CONTENT_TRENDS_2026.md
- Support path: SUPPORT.md
- Security policy: SECURITY.md
- Contribution policy: CONTRIBUTING.md
- Mikita Kizevich
- GitHub: @AI-Nikitka93
This repository is released under a closed-use / all-rights-reserved license. See LICENSE.