dittu

io.github.Manish-TamangPublished by GitHub account Manish-Tamangv0.3.0Updated Oct 29, 2026

Clone any website's frontend into Next.js or Astro and verify it with pixel diffs.

VerifiedSTDIODesktop onlyBrowser AutomationDeveloper Tools

Overview

AI-generated overview

Clones a website's rendered frontend into a Next.js or Astro project and scores the result with pixel diffs.

What you can do
  • Capture a live site in Chromium, including scroll reveals, lazy content and per-viewport layout
  • Export the captured DOM, original CSS and downloaded assets as a static preview, a Next.js App Router project or an Astro project split into section components
  • Crawl multiple pages and rewire internal links with shared header and footer components
  • Verify a clone by screenshotting original and clone at desktop and mobile and reporting pixel-match scores with diff images
When to use it
Useful when you want to rebuild or migrate a marketing site, landing page, portfolio or docs site as an editable Next.js or Astro codebase, or need a design reference reproduced faithfully and checked for visual regressions after refactoring.
Requirements
Runs locally as an npm package via npx over stdio; a setup command registers the MCP server and skills for supported coding agents. Needs Chromium/Playwright, which may require installing system dependencies on Linux or WSL. No accounts, API keys or environment variables are declared.
Before you install
It fetches and downloads a third party's page assets and writes generated projects to a local output directory. Pages behind login or bot protection are not supported. Cloning a site does not grant rights to its brand, copy, images or code; the project positions it for learning, prototyping, design references and migrating sites you own.

Installation

In SourceWeft

  1. Open dittu in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

dittu: Clone Any Website

Turn any website into an editable Next.js or Astro project, verified pixel by pixel.

Layout, CSS, fonts, images and scroll animations. Not the backend. One CLI, one MCP server, and skills for your coding agent.

[npm version] [npm downloads] [CI] [License: MIT] [Node]

[GitHub stars] [GitHub forks] [GitHub issues] [Last commit]

[TypeScript] [Playwright] [Next.js] [Astro] [Tailwind CSS] [MCP]

[dittu MCP server on Glama]

Quick start · How it works · Benchmarks · Docs

$ dittu clone https://gole.codes --build
› Capturing https://gole.codes  1,680,755 chars of markup, 6 stylesheets, 33 animations, 13 JS-responsive elements✓ Static preview → dittu-out/gole.codes/preview✓ Next.js project → dittu-out/gole.codes/next✓ Astro project → dittu-out/gole.codes/astro
Visual match (1 − differing pixels / total)  preview  /home    1440px   99.95%  next     /home    1440px   99.95%  astro    /home    1440px   99.95%  preview  /home     390px   99.89%  next     /home     390px   99.89%  astro    /home     390px   99.89%✓ All checks ≥ 95% (lowest 99.89%)

Quick start

Set up your agent

bash
npx @manishtamang/dittu setup

Registers the dittu MCP server and installs the skills for every agent it finds: Claude Code, Cursor, Gemini CLI, Codex. Check your machine first with npx @manishtamang/dittu doctor (on Linux/WSL you may need sudo npx playwright install-deps chromium).

Ask your agent

Clone https://gole.codes into Next.js and make the pricing cards a reusable component.

The agent calls clone_website, reads the scores, refactors the generated components, and calls verify_clone to prove nothing visual changed.

Use the terminal

bash
npx @manishtamang/dittu                                        # interactive: banner, then pick URL, frameworks, pages…npx @manishtamang/dittu clone https://gole.codes -y           # no questions: preview + Next.js + Astro, scorednpx @manishtamang/dittu clone https://gole.codes -p 5 --build # crawl 5 pages, build and score the appsnpx @manishtamang/dittu clone https://gole.codes -s tailwind # Tailwind classes where lossless, rest stays CSSnpx @manishtamang/dittu verify dittu-out/gole.codes --targets nextnpx @manishtamang/dittu serve dittu-out/gole.codes

Update dittu

bash
npx @manishtamang/dittu@latest setup

How dittu works

Most cloners screenshot a page and ask an LLM to redraw it. dittu copies what the browser actually rendered, then checks the result:

  1. Capture: Chromium loads the page, scrolls it so lazy content and scroll reveals fire, then freezes JS timers so carousels hold still. A second render at 390 px records layout that JS computes per viewport.
  2. Serialize the live DOM, not the server HTML. Next.js/React sites come out as their final markup without hydration scripts or RSC payloads. Nesting the HTML parser would restructure gets repaired, so React hydrates cleanly.
  3. Keep the original CSS in cascade order, including CSS-in-JS rules that exist only in the CSSOM. Media queries, hover states and keyframes keep working.
  4. Download every asset from the same session and rewrite URLs.
  5. Export to a static preview, a Next.js App Router project (JSX) and an Astro project, split into section components.
  6. Replay motion: recorded scroll reveals, Framer Motion animate calls and loops run again through a 2 KB runtime.
  7. Verify: screenshot original and clone the same way at desktop and mobile and score them. --build scores the built apps, not just the preview.

Details: docs/architecture.md.

What you can clone

Site typeSupport
Marketing sites, landing pages, portfolios, docs✅ 99%+ typical
Next.js / React / Vue / Svelte / Astro builds✅ post-hydration DOM
Tailwind, CSS modules, styled-components, emotion✅ original CSS kept
Scroll reveals (AOS, Framer Motion, GSAP, IntersectionObserver)✅ recorded and replayed
Layout JS computes per viewport✅ mobile render → media-query overrides
Multi-page sites✅ --pages N, internal links rewired, shared header/footer components
Canvas / WebGL scenes⚠️ still image
Carousels, tabs, menus, forms⚠️ look is copied, behaviour is not
Pages behind login or bot protection❌

Benchmarks

SiteStackDesktopMobileBuilt apps
gole.codesNext.js, heavy animation99.95%99.89%Next.js + Astro: same
nextjs.orgNext.js99.79%99.99%99.78–99.79%
ui.shadcn.comNext.js + Tailwind100.00%100.00%100.00%
astro.buildAstro100.00%100.00%
manishtamang.com (3 pages)Next.js99.89–99.99%99.80–100%same

Methodology and limits: docs/fidelity.md.

FAQ

Does it copy the backend? No. Data fetching, auth, APIs and form handling are not copied. You get the frontend, ready to wire to your own logic.

Why is the generated JSX full of {" "}? Whitespace between inline elements changes layout in HTML but is dropped by JSX. dittu keeps it explicit so the clone renders identically. Refactor freely, and re-run verify to check.

Can I get Tailwind classes instead of CSS? Yes: --styling tailwind. Every rule that can be expressed exactly becomes Tailwind utilities (sites built with Tailwind v4 keep their own classes); the rest stays CSS, so scores don't drop. See Tailwind output.

Is the 95% score honest? It's raw pixel identity over the full page, including height differences, at desktop and mobile. Diff images are saved next to the scores so you can check.

Can I clone any site I want? Technically mostly yes. Legally, see the disclaimer.

Documentation

Disclaimer

dittu is for learning, prototyping, design references and migrating sites you own. Cloning a site doesn't give you rights to its brand, copy, images or code. Read DISCLAIMER.md.

Related projects

ditto.site by ion-design takes the same capture-what-the-browser-rendered approach as a hosted API and MCP service. dittu differs by running as a local CLI, keeping the site's original CSS by default (Tailwind output is opt-in and only where it renders identically), exporting Astro alongside Next.js, and scoring every clone with pixel-diff verification.

Contributing

See CONTRIBUTING.md. Agents working in this repo: AGENTS.md.

License

MIT

Source: README.md at commit c595a04

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

3
  1. v0.3.0LatestOct 29, 2026
  2. v0.2.0Oct 25, 2026
  3. v0.1.0Oct 24, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts