diff --git a/CLAUDE.md b/CLAUDE.md index e29361c..180724c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -230,23 +230,52 @@ Applies to everything reader-facing on the whole site, the home page included: a When editing an existing article for any reason, fix style violations you touch. A dedicated sweep should rewrite each em-dash by hand; a blind find-and-replace produces broken sentences. -**Images.** The rule covers text in images ByteFuture generates: cover images, charts, diagrams. Two kinds of article images are exempt as factual captures: screenshots (terminal output, product UI) and third-party figures reproduced with attribution (e.g. Artificial Analysis charts). Generated images are produced from HTML files in `blog/asset-sources/` (one per image, named after the output PNG), rendered with headless Chrome: +**Images.** The rule covers text in images ByteFuture generates: cover images, charts, diagrams. Two kinds of article images are exempt as factual captures: screenshots (terminal output, product UI) and third-party figures reproduced with attribution (e.g. Artificial Analysis charts). + +**HARD RULE — every cover image ships pre-rendered, with its text burnt in.** A cover is a flat PNG committed to `blog/`. The words are pixels in that file. Nothing about a cover is assembled when a reader loads the page, when a card is drawn, or when a link preview is fetched. + +That forbids, without limitation: + +- Rendering a cover from a template at request time, or from a shared template that takes a slug/params and produces the image on the fly. +- Shipping the SVG itself as the cover, or any live HTML or canvas standing in for one, and text layered over a background image with CSS or JS at view time. SVG is the authoring source; the reader only ever gets the rasterized PNG. +- Any generated-at-view-time OG image (`/og/.png` handlers, on-demand image services, third-party card generators). +- Fonts, colours, or copy resolved at view time. A cover must look identical with no network, no fonts available, and no JS. + +The listing cards and `og:image` therefore point at a committed PNG and nothing else. The single output artifact is the PNG; anything used to produce it is authoring-time only and never reaches a reader. + +**Generate the PNG from an SVG.** Every generated image has exactly one source, an **SVG** in `blog/asset-sources/` named after the output PNG (`.svg` → `blog/.png`). Rasterize it once with headless Chrome, which burns the text into the pixels: ```sh "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --headless=new --disable-gpu --hide-scrollbars --virtual-time-budget=6000 \ --window-size=1200,630 \ - --screenshot=blog/.png "file://$PWD/blog/asset-sources/.html" + --screenshot=blog/.png "file://$PWD/blog/asset-sources/.svg" ``` -(Use the canvas size in the source file's `body` rule: covers are 1200×630, charts vary.) To change an image's text, edit its source HTML and re-render; keep the source and PNG in the same commit. `blog/asset-sources/` is not an article directory and holds no published pages. +Match `--window-size` to the SVG's `width`/`height`: covers are 1200×630, charts vary. Commit the PNG; it is what the site serves. + +Authoring an SVG cover: + +- Set `width`, `height`, and a matching `viewBox` on the root ``, and give it `xmlns="http://www.w3.org/2000/svg"`. +- Text is native ``, never `` with HTML inside. SVG does not wrap text, so **each line is its own `` with an explicit `y`** — there is no automatic line breaking to lean on. +- Style with a ` - - -
-
- - - - - - - - - - - -
-
NVIDIA · Nemotron-3 Ultra · Open Weights
-

America's strongest open model. - 47.7 on the AA Index, ahead of every US open rival. Free to run for now. -

- -
-
-
Open weights
-
AA Index 47.7
-
free for now
-
-
- - - - - - - ByteFuture -
-
-
- - diff --git a/blog/asset-sources/american-open-models-catching-up-nemotron-gpt55-cover.svg b/blog/asset-sources/american-open-models-catching-up-nemotron-gpt55-cover.svg new file mode 100644 index 0000000..1651524 --- /dev/null +++ b/blog/asset-sources/american-open-models-catching-up-nemotron-gpt55-cover.svg @@ -0,0 +1,49 @@ + + american-open-models-catching-up-nemotron-gpt55-cover + + + + + + + + + + + + + + + + + + + + + + + + NVIDIA · NEMOTRON-3 ULTRA · OPEN WEIGHTS + America's + strongest + open + model + . + 47.7 on the AA Index, ahead of every US open + rival. Free to run for now. + + Open weights + + AA Index 47.7 + + free for now + + + + + + + ByteFuture + diff --git a/blog/asset-sources/claude-fable-5-cover.html b/blog/asset-sources/claude-fable-5-cover.html deleted file mode 100644 index fba1772..0000000 --- a/blog/asset-sources/claude-fable-5-cover.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -
-
-
- -
-
API Price / 1M tok
-
$10 / $50
-
2× Opus 4.8 · 25× Grok Build
-
- -
-
Claude Fable 5 · on Token Station
-

Rent it.
Don’t buy it. - Fable 5 in the harness you already use, temporarily. -

- -
-
-
Codex
-
OpenClaw
-
Pi
-
-
anthropic/claude-fable-5
-
-
- - - - - - - ByteFuture -
-
-
- - diff --git a/blog/asset-sources/claude-fable-5-cover.svg b/blog/asset-sources/claude-fable-5-cover.svg new file mode 100644 index 0000000..76a588c --- /dev/null +++ b/blog/asset-sources/claude-fable-5-cover.svg @@ -0,0 +1,54 @@ + + claude-fable-5-cover + + + + + + + + + + + + + + + + + + + + + + + + + API PRICE / 1M TOK + $10 + / + $50 + 2× Opus 4.8 · 25× Grok Build + CLAUDE FABLE 5 · ON TOKEN STATION + Rent it. + Don’t buy it. + Fable 5 in the harness you already use, temporarily. + + Codex + + OpenClaw + + Pi + + + anthropic/claude-fable-5 + + + + + + + ByteFuture + diff --git a/blog/asset-sources/glm-5-2-zai-stock-jump-cover.html b/blog/asset-sources/glm-5-2-zai-stock-jump-cover.html deleted file mode 100644 index 941ec29..0000000 --- a/blog/asset-sources/glm-5-2-zai-stock-jump-cover.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -
-
- - - - - - - -
-
Z.AI · GLM-5.2 · HKEX
-

The stock jumped 33%. - The model behind it is yours to try for free. -

- -
-
-
Open source
-
1M context
-
free on Token Station
-
-
- - - - - - - ByteFuture -
-
-
- - diff --git a/blog/asset-sources/glm-5-2-zai-stock-jump-cover.svg b/blog/asset-sources/glm-5-2-zai-stock-jump-cover.svg new file mode 100644 index 0000000..1862aaa --- /dev/null +++ b/blog/asset-sources/glm-5-2-zai-stock-jump-cover.svg @@ -0,0 +1,42 @@ + + glm-5-2-zai-stock-jump-cover + + + + + + + + + + + + + + + + + + + + Z.AI · GLM-5.2 · HKEX + The stock jumped + 33% + . + The model behind it is yours to try for free. + + Open source + + 1M context + + free on Token Station + + + + + + + ByteFuture + diff --git a/blog/asset-sources/gpt-5-6-token-station-cover.html b/blog/asset-sources/gpt-5-6-token-station-cover.html deleted file mode 100644 index f657130..0000000 --- a/blog/asset-sources/gpt-5-6-token-station-cover.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -
-
- - - - - - - - - - - - - - - - - Sol - Terra - Luna - - -
-
OpenAI · GPT-5.6 · Coding agents
-

GPT-5.6 is now supported - Sol, Terra, and Luna from one endpoint. -

- -
-
-
Sol
-
Terra
-
Luna
-
on Token Station
-
-
- - - - - - - ByteFuture -
-
-
- - diff --git a/blog/asset-sources/gpt-5-6-token-station-cover.svg b/blog/asset-sources/gpt-5-6-token-station-cover.svg new file mode 100644 index 0000000..9f04329 --- /dev/null +++ b/blog/asset-sources/gpt-5-6-token-station-cover.svg @@ -0,0 +1,58 @@ + + gpt-5-6-token-station-cover + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sol + Terra + Luna + + OPENAI · GPT-5.6 · CODING AGENTS + GPT-5.6 + is now + supported + Sol, Terra, and Luna from one endpoint. + + Sol + + Terra + + Luna + + on Token Station + + + + + + + ByteFuture + diff --git a/blog/asset-sources/kimi-k2-7-code-cover.html b/blog/asset-sources/kimi-k2-7-code-cover.html deleted file mode 100644 index f1d2907..0000000 --- a/blog/asset-sources/kimi-k2-7-code-cover.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -
-
-
- -
-
API Price / 1M tok
-
$0.95 / $4
-
a twelfth of Fable 5 output
-
- -
-
Kimi K2.7 Code · on Token Station
-

The opposite bet. - A $4 workhorse next to your SOTA model. -

- -
-
-
Claude Code
-
Codex
-
OpenClaw
-
-
kimi/kimi-k2.7-code
-
-
- - - - - - - ByteFuture -
-
-
- - diff --git a/blog/asset-sources/kimi-k2-7-code-cover.svg b/blog/asset-sources/kimi-k2-7-code-cover.svg new file mode 100644 index 0000000..1e95380 --- /dev/null +++ b/blog/asset-sources/kimi-k2-7-code-cover.svg @@ -0,0 +1,53 @@ + + kimi-k2-7-code-cover + + + + + + + + + + + + + + + + + + + + + + + + + API PRICE / 1M TOK + $0.95 + / + $4 + a twelfth of Fable 5 output + KIMI K2.7 CODE · ON TOKEN STATION + The opposite bet. + A $4 workhorse next to your SOTA model. + + Claude Code + + Codex + + OpenClaw + + + kimi/kimi-k2.7-code + + + + + + + ByteFuture + diff --git a/blog/asset-sources/kimi-k3-token-station-cover.svg b/blog/asset-sources/kimi-k3-token-station-cover.svg new file mode 100644 index 0000000..b2f5b74 --- /dev/null +++ b/blog/asset-sources/kimi-k3-token-station-cover.svg @@ -0,0 +1,55 @@ + + kimi-k3-token-station-cover + + + + + + + + + + + + + + + + + + + + + + + + + API PRICE / 1M TOK + $3 + / + $15 + $0.30 on a cache hit · 1M ctx + KIMI K3 · ON TOKEN STATION + First into the + 3-trillion + class. + 2.8T parameters, free to try. + + Claude Code + + Codex + + OpenClaw + + + kimi/kimi-k3 + + + + + + + ByteFuture + diff --git a/blog/asset-sources/qwen-3-8-max-token-station-cover.svg b/blog/asset-sources/qwen-3-8-max-token-station-cover.svg new file mode 100644 index 0000000..6395a9e --- /dev/null +++ b/blog/asset-sources/qwen-3-8-max-token-station-cover.svg @@ -0,0 +1,49 @@ + + qwen-3-8-max-token-station-cover + + + + + + + + + + + + + + + + + + GPT-5.6 + + + + Kimi K3 + + + + Qwen 3.8-Max + STEADIEST LATENCY + ALIBABA · QWEN 3.8-MAX · FIRST LOOK + No benchmarks yet. + We ran our own. + Three tasks, three models, all passed. + + 3 tasks + + 3 models + + all passed + + + + + + + ByteFuture + diff --git a/blog/asset-sources/run-any-model-in-codex-through-token-station-cover.svg b/blog/asset-sources/run-any-model-in-codex-through-token-station-cover.svg new file mode 100644 index 0000000..f5a6521 --- /dev/null +++ b/blog/asset-sources/run-any-model-in-codex-through-token-station-cover.svg @@ -0,0 +1,48 @@ + + run-any-model-in-codex-through-token-station-cover + + + + + + + + + + + + + + + + + + + + ~/.codex/config.toml + model_provider = + "token_station" + + wire_api = + "responses" + ✓ the value that has to be exact + OPENAI CODEX · TOKEN STATION · RESPONSES API + One config line. + Any model. + The one value that has to be exact. + + Codex + + Responses API + + on Token Station + + + + + + + ByteFuture + diff --git a/blog/asset-sources/run-any-model-in-openclaw-through-token-station-cover.svg b/blog/asset-sources/run-any-model-in-openclaw-through-token-station-cover.svg new file mode 100644 index 0000000..d605b3b --- /dev/null +++ b/blog/asset-sources/run-any-model-in-openclaw-through-token-station-cover.svg @@ -0,0 +1,52 @@ + + run-any-model-in-openclaw-through-token-station-cover + + + + + + + + + + + + + + + + + + + + + + + + + + + gpt-5.5 + grok-build + glm-5.2 + + OPENCLAW · TOKEN STATION · ANY MODEL + One command. + Any model. + 250+ models, 21 providers, one endpoint. + + OpenClaw + + 21 providers + + on Token Station + + + + + + + ByteFuture + diff --git a/blog/asset-sources/use-any-model-in-claude-code-through-token-station-cover.svg b/blog/asset-sources/use-any-model-in-claude-code-through-token-station-cover.svg new file mode 100644 index 0000000..403b82f --- /dev/null +++ b/blog/asset-sources/use-any-model-in-claude-code-through-token-station-cover.svg @@ -0,0 +1,53 @@ + + use-any-model-in-claude-code-through-token-station-cover + + + + + + + + + + + + + + + + Opus + + + openai/gpt-5.5 + + Sonnet + + + openai/gpt-5.4-mini + + Haiku + + + openai/gpt-5.4-nano + CLAUDE CODE · TOKEN STATION · ANY MODEL + Same harness. + Any model. + No wrapper, no proxy, just Token Station. + + Opus + + Sonnet + + Haiku + + on Token Station + + + + + + + ByteFuture + diff --git a/blog/asset-sources/use-grok-build-in-codex-and-claude-code-cover.svg b/blog/asset-sources/use-grok-build-in-codex-and-claude-code-cover.svg new file mode 100644 index 0000000..0e00b6a --- /dev/null +++ b/blog/asset-sources/use-grok-build-in-codex-and-claude-code-cover.svg @@ -0,0 +1,52 @@ + + use-grok-build-in-codex-and-claude-code-cover + + + + + + + + + + + + + + + + + + + + + + + + + API PRICE / 1M TOK + $1 + / + $2 + a fraction of frontier flagships + GROK BUILD · ON TOKEN STATION + A fraction of the + flagship price. + No xAI account. No new tool. + + Claude Code + + Codex + + + xai/grok-build-0.1 + + + + + + + ByteFuture + diff --git a/blog/claude-fable-5-cover.png b/blog/claude-fable-5-cover.png index 4ba3ad8..65ee6a9 100644 Binary files a/blog/claude-fable-5-cover.png and b/blog/claude-fable-5-cover.png differ diff --git a/blog/glm-5-2-zai-stock-jump-cover.png b/blog/glm-5-2-zai-stock-jump-cover.png index 6cef50f..532d930 100644 Binary files a/blog/glm-5-2-zai-stock-jump-cover.png and b/blog/glm-5-2-zai-stock-jump-cover.png differ diff --git a/blog/gpt-5-6-token-station-cover.png b/blog/gpt-5-6-token-station-cover.png index 430a4dc..81b1429 100644 Binary files a/blog/gpt-5-6-token-station-cover.png and b/blog/gpt-5-6-token-station-cover.png differ diff --git a/blog/kimi-k2-7-code-cover.png b/blog/kimi-k2-7-code-cover.png index 6ea078e..f8b7a82 100644 Binary files a/blog/kimi-k2-7-code-cover.png and b/blog/kimi-k2-7-code-cover.png differ diff --git a/blog/kimi-k3-token-station-cover.png b/blog/kimi-k3-token-station-cover.png new file mode 100644 index 0000000..198fffc Binary files /dev/null and b/blog/kimi-k3-token-station-cover.png differ diff --git a/blog/qwen-3-8-max-token-station-cover.png b/blog/qwen-3-8-max-token-station-cover.png new file mode 100644 index 0000000..7975d76 Binary files /dev/null and b/blog/qwen-3-8-max-token-station-cover.png differ diff --git a/blog/run-any-model-in-codex-through-token-station-cover.png b/blog/run-any-model-in-codex-through-token-station-cover.png new file mode 100644 index 0000000..6384ca4 Binary files /dev/null and b/blog/run-any-model-in-codex-through-token-station-cover.png differ diff --git a/blog/run-any-model-in-openclaw-through-token-station-cover.png b/blog/run-any-model-in-openclaw-through-token-station-cover.png new file mode 100644 index 0000000..865d01f Binary files /dev/null and b/blog/run-any-model-in-openclaw-through-token-station-cover.png differ diff --git a/blog/use-any-model-in-claude-code-through-token-station-cover.png b/blog/use-any-model-in-claude-code-through-token-station-cover.png new file mode 100644 index 0000000..b44b0f1 Binary files /dev/null and b/blog/use-any-model-in-claude-code-through-token-station-cover.png differ diff --git a/blog/use-grok-build-in-codex-and-claude-code-cover.png b/blog/use-grok-build-in-codex-and-claude-code-cover.png new file mode 100644 index 0000000..cf729cb Binary files /dev/null and b/blog/use-grok-build-in-codex-and-claude-code-cover.png differ diff --git a/src/content/writings/en/kimi-k3-token-station.md b/src/content/writings/en/kimi-k3-token-station.md index 8e36905..7afcf71 100644 --- a/src/content/writings/en/kimi-k3-token-station.md +++ b/src/content/writings/en/kimi-k3-token-station.md @@ -6,6 +6,7 @@ summary: "Moonshot's Kimi K3 has 2.8 trillion parameters and a 1M-token context category: "tutorial" date: "2026-07-25" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/kimi-k3-token-station-cover.png" draft: false --- diff --git a/src/content/writings/en/qwen-3-8-max-token-station.md b/src/content/writings/en/qwen-3-8-max-token-station.md index 99c436d..6e319a6 100644 --- a/src/content/writings/en/qwen-3-8-max-token-station.md +++ b/src/content/writings/en/qwen-3-8-max-token-station.md @@ -6,6 +6,7 @@ summary: "Alibaba has only previewed Qwen 3.8-Max (2.4T parameters, sparse MoE, category: product date: 2026-07-28 cta: https://models.bytefuture.ai/intro.html +cover: "blog/qwen-3-8-max-token-station-cover.png" --- Alibaba previewed Qwen 3.8-Max at the World AI Conference on July 19, 2026: 2.4 trillion parameters, a sparse Mixture-of-Experts, native multimodality, and a claim that it trails only [Claude Fable 5](/blog/try-claude-fable-5-in-codex-openclaw-and-pi.html). What it does not have yet is a benchmark table, a model card, or a confirmed context window. diff --git a/src/content/writings/en/run-any-model-in-codex-through-token-station.md b/src/content/writings/en/run-any-model-in-codex-through-token-station.md index 6dda1dd..7999341 100644 --- a/src/content/writings/en/run-any-model-in-codex-through-token-station.md +++ b/src/content/writings/en/run-any-model-in-codex-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenAI's Codex can run any model, not just OpenAI's. Since February 20 category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-codex-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/en/run-any-model-in-openclaw-through-token-station.md b/src/content/writings/en/run-any-model-in-openclaw-through-token-station.md index f200aa4..4cc582f 100644 --- a/src/content/writings/en/run-any-model-in-openclaw-through-token-station.md +++ b/src/content/writings/en/run-any-model-in-openclaw-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenClaw supports custom providers through its onboarding wizard and C category: "tutorial" date: "2026-07-20" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-openclaw-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/en/use-any-model-in-claude-code-through-token-station.md b/src/content/writings/en/use-any-model-in-claude-code-through-token-station.md index 444c9de..12b4886 100644 --- a/src/content/writings/en/use-any-model-in-claude-code-through-token-station.md +++ b/src/content/writings/en/use-any-model-in-claude-code-through-token-station.md @@ -6,6 +6,7 @@ summary: "Claude Code can run through Token Station with either a persistent ~/. category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/use-any-model-in-claude-code-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/en/use-grok-build-in-codex-and-claude-code.md b/src/content/writings/en/use-grok-build-in-codex-and-claude-code.md index 25364ba..16ad44a 100644 --- a/src/content/writings/en/use-grok-build-in-codex-and-claude-code.md +++ b/src/content/writings/en/use-grok-build-in-codex-and-claude-code.md @@ -6,7 +6,7 @@ summary: "xAI's Grok Build model is evolving fast and costs a fraction of GPT-5. category: "tutorial" date: "2026-06-10" cta: "https://models.bytefuture.ai/intro.html" -cover: "blog/claude-code-grok-build.png" +cover: "blog/use-grok-build-in-codex-and-claude-code-cover.png" draft: false --- diff --git a/src/content/writings/ja/kimi-k3-token-station.md b/src/content/writings/ja/kimi-k3-token-station.md index 28f12bf..46d1ed5 100644 --- a/src/content/writings/ja/kimi-k3-token-station.md +++ b/src/content/writings/ja/kimi-k3-token-station.md @@ -6,6 +6,7 @@ summary: "Moonshot の Kimi K3 は 2.8 兆パラメータと 100 万トークン category: "tutorial" date: "2026-07-25" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/kimi-k3-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ja/qwen-3-8-max-token-station.md b/src/content/writings/ja/qwen-3-8-max-token-station.md index 670a4f3..f08e0a3 100644 --- a/src/content/writings/ja/qwen-3-8-max-token-station.md +++ b/src/content/writings/ja/qwen-3-8-max-token-station.md @@ -6,6 +6,7 @@ summary: "Alibaba は Qwen 3.8-Max(2.4 兆パラメータ、スパース MoE category: product date: 2026-07-28 cta: https://models.bytefuture.ai/intro.html +cover: "blog/qwen-3-8-max-token-station-cover.png" --- Alibaba は 2026 年 7 月 19 日の World AI Conference(WAIC)で Qwen 3.8-Max をプレビューしました。2.4 兆パラメータ、スパース Mixture-of-Experts、ネイティブマルチモーダル、そして [Claude Fable 5](/blog/try-claude-fable-5-in-codex-openclaw-and-pi-ja.html) に次ぐ性能という主張です。ただし、ベンチマーク表もモデルカードも、確定したコンテキストウィンドウもまだ公開されていません。 diff --git a/src/content/writings/ja/run-any-model-in-codex-through-token-station.md b/src/content/writings/ja/run-any-model-in-codex-through-token-station.md index 7686816..29b94b4 100644 --- a/src/content/writings/ja/run-any-model-in-codex-through-token-station.md +++ b/src/content/writings/ja/run-any-model-in-codex-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenAI の Codex は OpenAI 製に限らず任意のモデルを動か category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-codex-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ja/run-any-model-in-openclaw-through-token-station.md b/src/content/writings/ja/run-any-model-in-openclaw-through-token-station.md index a16dee2..52a1b7f 100644 --- a/src/content/writings/ja/run-any-model-in-openclaw-through-token-station.md +++ b/src/content/writings/ja/run-any-model-in-openclaw-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenClaw はオンボーディングウィザードと CLI からカ category: "tutorial" date: "2026-07-20" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-openclaw-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ja/use-any-model-in-claude-code-through-token-station.md b/src/content/writings/ja/use-any-model-in-claude-code-through-token-station.md index 5018698..7096363 100644 --- a/src/content/writings/ja/use-any-model-in-claude-code-through-token-station.md +++ b/src/content/writings/ja/use-any-model-in-claude-code-through-token-station.md @@ -6,6 +6,7 @@ summary: "Claude Code は Token Station 経由で任意のモデルを使える category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/use-any-model-in-claude-code-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ja/use-grok-build-in-codex-and-claude-code.md b/src/content/writings/ja/use-grok-build-in-codex-and-claude-code.md index fcfedd7..dd8cfa6 100644 --- a/src/content/writings/ja/use-grok-build-in-codex-and-claude-code.md +++ b/src/content/writings/ja/use-grok-build-in-codex-and-claude-code.md @@ -6,7 +6,7 @@ summary: "xAI の Grok Build モデルは進化が速く、価格は GPT-5.5 や category: "tutorial" date: "2026-06-10" cta: "https://models.bytefuture.ai/intro.html" -cover: "blog/claude-code-grok-build.png" +cover: "blog/use-grok-build-in-codex-and-claude-code-cover.png" draft: false --- diff --git a/src/content/writings/ko/kimi-k3-token-station.md b/src/content/writings/ko/kimi-k3-token-station.md index 494057c..7091e18 100644 --- a/src/content/writings/ko/kimi-k3-token-station.md +++ b/src/content/writings/ko/kimi-k3-token-station.md @@ -6,6 +6,7 @@ summary: "Moonshot의 Kimi K3는 2.8조 파라미터와 100만 토큰 컨텍스 category: "tutorial" date: "2026-07-25" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/kimi-k3-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ko/qwen-3-8-max-token-station.md b/src/content/writings/ko/qwen-3-8-max-token-station.md index c2a7666..61ba00d 100644 --- a/src/content/writings/ko/qwen-3-8-max-token-station.md +++ b/src/content/writings/ko/qwen-3-8-max-token-station.md @@ -6,6 +6,7 @@ summary: "Alibaba는 Qwen 3.8-Max(2.4조 파라미터, 희소 MoE, 멀티모달) category: product date: 2026-07-28 cta: https://models.bytefuture.ai/intro.html +cover: "blog/qwen-3-8-max-token-station-cover.png" --- Alibaba는 2026년 7월 19일 World AI Conference(WAIC)에서 Qwen 3.8-Max를 미리보기로 공개했습니다. 2.4조 파라미터, 희소 Mixture-of-Experts, 네이티브 멀티모달, 그리고 [Claude Fable 5](/blog/try-claude-fable-5-in-codex-openclaw-and-pi-ko.html) 다음가는 성능이라는 주장입니다. 다만 벤치마크 표도, 모델 카드도, 확정된 컨텍스트 윈도도 아직 없습니다. diff --git a/src/content/writings/ko/run-any-model-in-codex-through-token-station.md b/src/content/writings/ko/run-any-model-in-codex-through-token-station.md index e605f41..206b033 100644 --- a/src/content/writings/ko/run-any-model-in-codex-through-token-station.md +++ b/src/content/writings/ko/run-any-model-in-codex-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenAI의 Codex는 OpenAI 모델뿐 아니라 어떤 모델이든 실 category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-codex-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ko/run-any-model-in-openclaw-through-token-station.md b/src/content/writings/ko/run-any-model-in-openclaw-through-token-station.md index af47dcd..c5a6171 100644 --- a/src/content/writings/ko/run-any-model-in-openclaw-through-token-station.md +++ b/src/content/writings/ko/run-any-model-in-openclaw-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenClaw는 온보딩 위저드와 CLI를 통해 커스텀 프로바 category: "tutorial" date: "2026-07-20" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-openclaw-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ko/use-any-model-in-claude-code-through-token-station.md b/src/content/writings/ko/use-any-model-in-claude-code-through-token-station.md index 972dafe..66f0df4 100644 --- a/src/content/writings/ko/use-any-model-in-claude-code-through-token-station.md +++ b/src/content/writings/ko/use-any-model-in-claude-code-through-token-station.md @@ -6,6 +6,7 @@ summary: "Claude Code는 Token Station을 통해 어떤 모델이든 사용할 category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/use-any-model-in-claude-code-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/ko/use-grok-build-in-codex-and-claude-code.md b/src/content/writings/ko/use-grok-build-in-codex-and-claude-code.md index 01b805d..7a9d461 100644 --- a/src/content/writings/ko/use-grok-build-in-codex-and-claude-code.md +++ b/src/content/writings/ko/use-grok-build-in-codex-and-claude-code.md @@ -6,7 +6,7 @@ summary: "xAI의 Grok Build 모델은 빠르게 진화하며 가격은 GPT-5.5 category: "tutorial" date: "2026-06-10" cta: "https://models.bytefuture.ai/intro.html" -cover: "blog/claude-code-grok-build.png" +cover: "blog/use-grok-build-in-codex-and-claude-code-cover.png" draft: false --- diff --git a/src/content/writings/zh/kimi-k3-token-station.md b/src/content/writings/zh/kimi-k3-token-station.md index 258ac8c..eaa3aad 100644 --- a/src/content/writings/zh/kimi-k3-token-station.md +++ b/src/content/writings/zh/kimi-k3-token-station.md @@ -6,6 +6,7 @@ summary: "Moonshot 的 Kimi K3 拥有 2.8 万亿参数和 100 万 token 的上 category: "tutorial" date: "2026-07-25" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/kimi-k3-token-station-cover.png" draft: false --- diff --git a/src/content/writings/zh/qwen-3-8-max-token-station.md b/src/content/writings/zh/qwen-3-8-max-token-station.md index 64d3e8f..a3a9d4c 100644 --- a/src/content/writings/zh/qwen-3-8-max-token-station.md +++ b/src/content/writings/zh/qwen-3-8-max-token-station.md @@ -6,6 +6,7 @@ summary: "Alibaba 只是预览了 Qwen 3.8-Max(2.4T 参数、稀疏 MoE、多 category: product date: 2026-07-28 cta: https://models.bytefuture.ai/intro.html +cover: "blog/qwen-3-8-max-token-station-cover.png" --- Alibaba 在 2026 年 7 月 19 日的世界人工智能大会(WAIC)上预览了 Qwen 3.8-Max:2.4 万亿参数、稀疏 Mixture-of-Experts、原生多模态,号称仅次于 [Claude Fable 5](/blog/try-claude-fable-5-in-codex-openclaw-and-pi-zh.html)。但它目前还没有 benchmark 表、没有 model card,上下文窗口也没确认。 diff --git a/src/content/writings/zh/run-any-model-in-codex-through-token-station.md b/src/content/writings/zh/run-any-model-in-codex-through-token-station.md index 9640ab0..c273853 100644 --- a/src/content/writings/zh/run-any-model-in-codex-through-token-station.md +++ b/src/content/writings/zh/run-any-model-in-codex-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenAI 的 Codex 可以运行任意模型,不只是 OpenAI 自家的 category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-codex-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/zh/run-any-model-in-openclaw-through-token-station.md b/src/content/writings/zh/run-any-model-in-openclaw-through-token-station.md index dee8fd9..ffd58b0 100644 --- a/src/content/writings/zh/run-any-model-in-openclaw-through-token-station.md +++ b/src/content/writings/zh/run-any-model-in-openclaw-through-token-station.md @@ -6,6 +6,7 @@ summary: "OpenClaw 通过引导向导和 CLI 支持自定义提供方。将其 category: "tutorial" date: "2026-07-20" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/run-any-model-in-openclaw-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/zh/use-any-model-in-claude-code-through-token-station.md b/src/content/writings/zh/use-any-model-in-claude-code-through-token-station.md index 81de080..170fd95 100644 --- a/src/content/writings/zh/use-any-model-in-claude-code-through-token-station.md +++ b/src/content/writings/zh/use-any-model-in-claude-code-through-token-station.md @@ -6,6 +6,7 @@ summary: "Claude Code 可以通过 Token Station 运行任意模型。你可以 category: "tutorial" date: "2026-06-18" cta: "https://models.bytefuture.ai/intro.html" +cover: "blog/use-any-model-in-claude-code-through-token-station-cover.png" draft: false --- diff --git a/src/content/writings/zh/use-grok-build-in-codex-and-claude-code.md b/src/content/writings/zh/use-grok-build-in-codex-and-claude-code.md index 4ddda2c..ac082c5 100644 --- a/src/content/writings/zh/use-grok-build-in-codex-and-claude-code.md +++ b/src/content/writings/zh/use-grok-build-in-codex-and-claude-code.md @@ -6,7 +6,7 @@ summary: "xAI 的 Grok Build 模型迭代很快,价格只有 GPT-5.5 或 Claud category: "tutorial" date: "2026-06-10" cta: "https://models.bytefuture.ai/intro.html" -cover: "blog/claude-code-grok-build.png" +cover: "blog/use-grok-build-in-codex-and-claude-code-cover.png" draft: false --- diff --git a/src/layouts/WritingLayout.astro b/src/layouts/WritingLayout.astro index 1b4e71e..8a17fbc 100644 --- a/src/layouts/WritingLayout.astro +++ b/src/layouts/WritingLayout.astro @@ -7,12 +7,15 @@ export interface Props { category: string; date: Date; cta: string; + cover?: string; draft?: boolean; } -const { title, summary, slug, lang, category, date, cta, draft = false } = Astro.props; +const { title, summary, slug, lang, category, date, cta, cover, draft = false } = Astro.props; const suffix = lang === 'en' ? '' : `-${lang}`; const url = `https://bytefuture.ai/blog/${slug}${suffix}.html`; +// Covers are repo-root-relative in frontmatter (blog/foo.png); og:image needs an absolute URL. +const coverUrl = cover ? `https://bytefuture.ai/${cover.replace(/^\/+/, '')}` : undefined; const locale = { en: 'en_US', zh: 'zh_CN', ja: 'ja_JP', ko: 'ko_KR' }[lang]; const htmlLang = { en: 'en', zh: 'zh-Hans', ja: 'ja', ko: 'ko' }[lang]; const writings = { en: 'Writings', zh: '文章', ja: '記事', ko: '글' }[lang]; @@ -61,6 +64,15 @@ const dateText = new Intl.DateTimeFormat(lang === 'zh' ? 'zh-CN' : lang === 'ja' + {coverUrl && ( + <> + + + + + + )} +