Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ audiotools.dev/
- `python3 scripts/seo_sync.py` rewrites the FAQPage JSON-LD on every page from the FAQ that is visible on that page, and refreshes `<lastmod>` in `sitemap.xml` from git. Run it after editing a FAQ or a page (needs `beautifulsoup4`).
- CI (`.github/workflows/seo-check.yml`) runs `scripts/seo_sync.py --check` and fails if the markup and the visible FAQ drift apart.
- `python3 scripts/build_zh.py` rebuilds the Chinese tool pages (volume booster, text to speech, joiner, compressor) from the English ones with the translation tables in the script, and keeps hreflang, the 中文/EN switch and the Chinese navigation in step. It stops if an English string it translates has changed, and runs `scripts/seo_sync.py` at the end.
- `python3 scripts/build_landing.py` rebuilds the format pages (`/mp4-to-mp3/`, `/video-to-mp3/`, `/mp3-to-wav/`, `/wav-to-mp3/` and their `/zh/` versions) from the converter pages: same code, own copy and FAQ, output format preselected via `<body data-default-format>`. Run it after changing a converter page; it also refreshes the "Popular conversions" links on the converters and runs `seo_sync.py`.
- Social preview images live in `og/` (1200×630, one per tool).

## Deployment
Expand Down
1 change: 1 addition & 0 deletions changelog/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ <h1>Changelog</h1>
<section class="entry">
<h2><time datetime="2026-10-22">October 22, 2026</time></h2>
<ul>
<li>Pages for the most common conversions, in English and Chinese: <a href="/mp4-to-mp3/">MP4 to MP3</a>, <a href="/video-to-mp3/">Video to MP3</a>, <a href="/mp3-to-wav/">MP3 to WAV</a>, <a href="/wav-to-mp3/">WAV to MP3</a>. Each opens the converter with that format already chosen.</li>
<li>MP3 saving works again in older browsers (for example Safari before iOS 16.4), which the new engine had left out.</li>
<li>The <a href="/privacy/">privacy policy</a> now lists the anonymous tool events the site counts; what you type into the helper is never sent.</li>
<li>Chinese versions of Volume Booster, Text to Speech, Audio Joiner and Audio Compressor: <a href="/zh/volume-booster/">/zh/volume-booster/</a>, <a href="/zh/text-to-speech/">/zh/text-to-speech/</a>, <a href="/zh/audio-joiner/">/zh/audio-joiner/</a>, <a href="/zh/audio-compressor/">/zh/audio-compressor/</a>.</li>
Expand Down
9 changes: 8 additions & 1 deletion converter/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,13 @@ <h2>Supported Formats</h2>
</p>
</section>

<!-- CONVERSIONS (scripts/build_landing.py) -->
<section class="seo-content">
<h2>Popular conversions</h2>
<ul class="conversions"><li><a href="/mp4-to-mp3/">MP4 to MP3</a></li><li><a href="/video-to-mp3/">Video to MP3</a></li><li><a href="/mp3-to-wav/">MP3 to WAV</a></li><li><a href="/wav-to-mp3/">WAV to MP3</a></li></ul>
</section>
<!-- /CONVERSIONS -->

<!-- FAQ -->
<section class="faq">
<h2>Frequently Asked Questions</h2>
Expand Down Expand Up @@ -498,7 +505,7 @@ <h2>Frequently Asked Questions</h2>
let audioBuffer = null; // decoded audio: for the waveform, and the fallback path
let duration = 0;
let audioCtx = null;
let selectedOutput = 'mp3';
let selectedOutput = document.body.dataset.defaultFormat || 'mp3'; // format pages preselect theirs
let resultBlob = null;
let resultFilename = '';

Expand Down
1 change: 1 addition & 0 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

- [About AudioTools.dev](https://audiotools.dev/about/): who builds it, how files stay on the device (and how to verify it in DevTools), what the site loads from the network, and how it is built.
- [Changelog](https://audiotools.dev/changelog/): dated list of everything that has shipped since January 2026.
- Format pages (the converter with the target format preselected): [MP4 to MP3](https://audiotools.dev/mp4-to-mp3/), [Video to MP3](https://audiotools.dev/video-to-mp3/) (MP4, MOV, MKV, WebM), [MP3 to WAV](https://audiotools.dev/mp3-to-wav/), [WAV to MP3](https://audiotools.dev/wav-to-mp3/). Chinese: /zh/mp4-to-mp3/, /zh/video-to-mp3/, /zh/mp3-to-wav/, /zh/wav-to-mp3/.
- Chinese versions: [homepage](https://audiotools.dev/zh/), [audio converter](https://audiotools.dev/zh/converter/), [volume booster](https://audiotools.dev/zh/volume-booster/), [text to speech](https://audiotools.dev/zh/text-to-speech/), [audio joiner](https://audiotools.dev/zh/audio-joiner/), [audio compressor](https://audiotools.dev/zh/audio-compressor/).

## Key Facts
Expand Down
830 changes: 830 additions & 0 deletions mp3-to-wav/index.html

Large diffs are not rendered by default.

831 changes: 831 additions & 0 deletions mp4-to-mp3/index.html

Large diffs are not rendered by default.

Binary file added og/mp3-to-wav.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/mp4-to-mp3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/video-to-mp3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/wav-to-mp3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/zh-mp3-to-wav.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/zh-mp4-to-mp3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/zh-video-to-mp3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added og/zh-wav-to-mp3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
386 changes: 386 additions & 0 deletions scripts/build_landing.py

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,53 @@
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>

<url>
<loc>https://audiotools.dev/mp4-to-mp3/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://audiotools.dev/video-to-mp3/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://audiotools.dev/mp3-to-wav/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://audiotools.dev/wav-to-mp3/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://audiotools.dev/zh/mp4-to-mp3/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://audiotools.dev/zh/video-to-mp3/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://audiotools.dev/zh/mp3-to-wav/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://audiotools.dev/zh/wav-to-mp3/</loc>
<lastmod>2026-10-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
</urlset>
8 changes: 8 additions & 0 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,11 @@ h1, h2 { font-stretch: 115%; letter-spacing: -0.015em; }
.batch-status { grid-row: 1 / span 2; grid-column: 2; }
.batch-status a { min-height: 44px; }
}

/* ---------- links to the format pages (MP4 to MP3, WAV to MP3, …) ---------- */
.conversions { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; padding: 0; }
.seo-content .conversions { padding: 0; } /* beats .seo-content ul */
.seo-content .conversions li { margin: 0; }
.conversions a { display: inline-flex; align-items: center; min-height: 36px; padding: 4px 14px; border: 1.5px solid var(--ink); border-radius: 999px; background: var(--surface); color: var(--ink); font-size: 14px; font-weight: 600; text-decoration: none; }
.conversions a:hover { color: var(--accent2); border-color: var(--accent2); }
@media (max-width: 600px) { .conversions a { min-height: 44px; } }
Loading
Loading