How to publish a website on Google: domain, GitHub, and sitemap
Generating a page with AI is only half the job. Here is the correct launch sequence: save the code, choose hosting, connect a domain and HTTPS, align canonicals, robots.txt, and sitemap, then add the site to Search Console and check indexing.

What this case is about and the final result
"Vibe Coding" didn't start as a large media project, but as a website for a Ukrainian Telegram community. Its main task is simple: to answer practical queries about AI development, provide verified materials in Ukrainian, and help interested people join the chat.
A traditional team of a designer, developer, SEO specialist, and server administrator was not needed for the launch. AI helped prepare the structure, texts, HTML, and CSS, but decisions regarding page assignments, fact-checking, domain, security, and publication remained with the human.
Minimum prerequisites
A clear site topic, an AI tool or code editor, a GitHub account, a publishing platform, and access to manage your own domain.
Result
An HTTPS site with a custom domain, change history, correct canonical addresses, robots.txt, sitemap, Search Console, and measurable useful actions.
Step 1. Structure first, then design
One long landing page can present a project, but it poorly addresses different user intents. A person looking for a definition of vibe coding needs a different answer than someone trying to protect an API key or create a site with Lovable.
Therefore, the content was divided into separate, full-fledged materials: an explanation of the term, a practical comparison of AI programming tools,creating a site with AI, key security, AI code verification, and a page for the Ukrainian Telegram community. Each page received its own title, description, H1, canonical, and a clear URL.
Before generating a page, it is useful to give the AI such a prompt:
Only after this is it worth asking for a design. In our case, it had to be dark, professional, mobile-friendly, and calm enough for long reading. AI prepared the foundation, but padding, contrast, menus, and mobile behavior had to be checked and fixed separately.
Step 2. Separate GitHub and hosting
AI can quickly change many files. If the result becomes worse, it is hard to understand exactly what broke without version history. GitHub solves this problem: every completed change is saved as a separate commit, and you can review the difference between versions before publishing.
GitHub is not necessarily hosting. A repository can store code, while a site can run on Sites, Vercel, Netlify, Cloudflare Pages, or another platform. For a simple static HTML, you can use GitHub Pages. Officially, it can publish files from a selected branch or via GitHub Actions; the latter is needed when the site needs to be built before publishing.
| Scenario | What to choose | Why |
|---|---|---|
| HTML, CSS, and JS without a build step | GitHub Pages from a branch | Simplest publishing from root or folder /docs. |
| React, Astro, or another generator | GitHub Actions or a build platform | First a build is performed, then the ready static folder is published. |
| API, database, server logic | Hosting with a server environment | GitHub Pages serves static files, not a backend. |
- Create a repository. For an open educational site, it can be public. For a commercial project or code with configuration, choose private.
- Save your first working version. This is your point of return before the AI starts its next series of edits.
- Make one logical commit per task. For example: "add mobile menu" or "connect analytics", rather than "site update".
- Review the diff. Make sure the agent didn't delete meta tags, analytics, Search Console verification, or important text.
- Do not save secrets. API keys, passwords, and tokens should not enter the repository, even for a few minutes.
An open "Vibe Coding" repository also links the site's brand to a real GitHub profile and can contain useful templates. However, a repository shouldn't be created just for the sake of a link: it should provide people with files, examples, or a clear change history.
Step 3. Custom domain, DNS, and HTTPS
A free platform address is fine for testing. For a long-term project, a custom domain is easier to remember, share, and move between platforms. In this case, we use vibe-coding.com.ua.
The publishing platform shows which DNS records need to be added at your domain registrar. For a root domain, these are often A records; for a subdomain, it is often www — CNAME. You cannot copy values from someone else's guide: they depend on the specific platform and can change.
- The main address opens via
https://without browser warnings. http://redirects to HTTPS.- The option with
wwwdoes not show another or outdated site. - On all pages, the canonical tag points to the chosen primary domain version.
- The certificate covers the required address variants.
DNS updates are not instantaneous. During our setup, different address variants showed conflicting results for a while, so we checked not just the main one, but also HTTP, HTTPS, and www. This is important for both people and Google: the search engine should not see several different versions of the same site.
If using GitHub Pages, first add the domain in the Pages settings, and only then change the DNS. GitHub recommends verifying the domain separately with a TXT record: this reduces the risk that a different account might hijack the address after the repository is disconnected. Do not use a wildcard record. *.example.com without real need.
Step 4. How to add a site to Google
Publishing a site does not mean instant appearance in search. There are three separate stages: the site is available to people; Google finds and crawls the URL; after evaluation, the page may be indexed. Search Console helps with discovery and diagnostics, but it does not buy a place in the results.
- Choose one primary address. For example,
https://example.com/page. This is the one that should be in the canonical, sitemap, and internal links; other versions should redirect. - Create
robots.txt. It should not accidentally block necessary pages. Add the full sitemap address. - Create
sitemap.xml. Add absolute canonical addresses only for those pages that truly need to appear in search. Updatelastmodonly after a substantial change in content. - Add the resource to Search Console. A Domain property covers HTTP, HTTPS, and all subdomains and is verified via DNS. A URL-prefix property covers only the exact prefix and supports more verification methods.
- Submit the sitemap once. Search Console will show whether Google was able to read the file. There is no need to resubmit an unchanged sitemap every day.
- Check the most important URLs. URL Inspection shows availability, indexing, and the canonical selected by Google. For several new or significantly updated pages, you can click "Request indexing".
Minimum robots.txt for an open information site:
Minimum sitemap entry for one page:
And on the page itself in <head>:
Google indicates a realistic range from a few days to a few weeks. A scanning request does not guarantee indexing, and clicking it again for the same URL does not speed up the process. If a page has not appeared, first check technical availability, canonical, uniqueness, and internal links, rather than creating a duplicate.
Step 5. Check the published version
A local file and a live site can behave differently. Check the public address after deployment, preferably in a private browser window and on a phone.
| Test | Expected result | What to fix |
|---|---|---|
| Main URL | Status 200, the page opens without login | Routes, hosting rules, or public access |
| HTTP and extra variants | Permanent redirect to a single HTTPS address | Redirects and DNS |
| Canonical | Matches the final URL after redirects | Tag in <head> |
/robots.txt | Opens and does not block important pages | Rules Disallow |
/sitemap.xml | Valid XML with canonical addresses | Sitemap generator or manual file |
| Phone | No horizontal overflow; menus and buttons are clickable | Responsive styles, tables, and code blocks |
For a quick technical check, you can perform curl -I https://example.com/page. Look for the final status in the response 200; it's normal to see it for the old address 301 or 308 and the header location with the correct new URL. This doesn't replace viewing the page in a browser, but it quickly finds unnecessary redirects.
Step 6. Measure useful actions, not just views
For "Vibe Coding," viewing an article is not the end goal. It is important to understand whether a person moves to Telegram after reading. Therefore, GA4 is connected to all pages, and clicking the chat link sends a separate event telegram_click.
| Metric | What it responds with | Where to look |
|---|---|---|
| Impressions and queries | Which words Google shows the site for | Search Console |
| Clicks and CTR | Whether the headline convinces you to open the page | Search Console |
| Landing page | What material the visitor sees first | GA4 |
| Referral source | Google, Telegram, GitHub, or another site | GA4 |
telegram_click | Which pages actually lead people to the chat | GA4, events |
Search Console and GA4 do not show exactly the same numbers: they are different systems with different collection methods. Ad blockers may also prevent GA4 from recording some visits. Therefore, decisions should be made based on trends over several weeks, rather than a single test opening.
For external publications, add UTM parameters to the link to the site. This allows you to distinguish a transition from a specific post from a regular direct visit. For Telegram, it is worth using separate invite links per source if you need to count actual joins rather than just clicks.
What most often breaks in this process
- Everything is placed on a single page. It is difficult for the reader to find a precise answer, and for Google to determine the topic of each block.
- The AI receives too general a prompt. The result looks impressive but lacks a specific audience, verification, and a call to action.
- No Git history. After an unsuccessful edit, you have to restore the site manually.
- The domain is partially configured. The main address works, but
wwwor HTTP leads to an error or an old page. - The sitemap contains incorrect addresses. Relative URLs, duplicates, or non-canonical domain versions create confusion.
- Analytics only counts views. The owner doesn't know which pages bring leads, purchases, or community joins.
- Dozens of weak AI texts are published. This does not build trust and does not replace personal experience, verified examples, and clear authorship.
What can be done for free, and what you will have to pay for
GitHub, Google Search Console, and basic GA4 usage are available for free. A simple site can also be created and published on a free plan of an AI builder or hosting, if its limits are sufficient.
A custom domain is usually paid annually. Paid features may include advanced AI tool capabilities, increased limits, teamwork, databases, or special hosting. For a first informational site, there is no sense in buying everything at once: first check if the site provides a useful result and if visitors are coming.
Final launch checklist
- Each page solves a specific user task.
- The site is easily readable on mobile and has no horizontal scrolling.
- The code is saved in GitHub, and important changes have clear commits.
- The repository contains no API keys, passwords, or private data.
- The main domain, HTTPS, HTTP, and
wwwwork in harmony. - Pages have unique titles, descriptions, H1s, and canonicals.
robots.txtis available and links to an up-to-date sitemap.- Search Console is verified, and the sitemap is accepted without errors.
- Analytics tracks not just views, but the main useful action.
- The button or form has been tested by a regular user, not just the owner.
Frequently asked questions
Can you publish a website and add it to Google for free?
Yes. GitHub, Search Console, and basic GA4 are available for free, and free hosting can be found for a simple static site. The main predictable expense is a custom domain.
Does a sitemap guarantee appearance in Google?
No. It helps Google find canonical URLs, but does not guarantee crawling, indexing, or a high position.
How long to wait for indexing after a request?
Google indicates a range from a few days to a few weeks. Repeated requests for the same URL do not speed up crawling, and the request itself does not guarantee indexing.
Why use GitHub if the site is already live?
To have a history, compare AI edits, and quickly revert to a working version. The repository and hosting can be different services.
What to read next
Creating a website with AI
A practical roadmap from task and structure to a responsive page and pre-publication checklist.
API key security
How not to leak secrets into the browser, repository, or screenshot during product launch.
Verified primary sources
- Google Search Central — creating and submitting a sitemap
- Google Search Central — requesting a re-crawl
- Google Search Central — canonicals and duplicate URLs
- Search Console — ownership verification methods
- Google Analytics — setting up GA4 data collection
- GitHub Docs — publishing Pages from a branch or Actions
- GitHub Docs — custom domain and DNS for Pages
Launching your own site and stuck?
Bring a link, screenshot, or the exact error text to the chat without passwords or private data. We can only take projects with specific tasks for public review with the author's permission.
Submit a project for review on Telegram ↗
Discussion
Share your opinion or ask about the material. Your nickname and comment text will be visible to everyone.
Log in via email
Get a one-time code. No password required.
The code is valid for 10 minutes. Logging in does not subscribe you to the newsletter. Data usage.
Or log in via ChatGPT ↗Loading comments...