docs: launch-ready marketing — README, website, SEO, AI-SEO, og:image#40
docs: launch-ready marketing — README, website, SEO, AI-SEO, og:image#40
Conversation
There was a problem hiding this comment.
Findings
-
[Major] Placeholder
aggregateRatingJSON-LD can be treated as misleading structured data and hurt search visibility. The PR adds a synthetic 5-star rating with one review while also marking it as placeholder, which should not be published metadata, evidencewebsite/.vitepress/config.ts:87.
Suggested fix:// Remove placeholder rating block until real review data exists // aggregateRating: { // '@type': 'AggregateRating', // ratingValue: '5', // reviewCount: '1', // },
-
[Minor] README contains an unresolved demo URL (
watch?v=TODO), which creates a broken CTA in public docs, evidenceREADME.md:30.
Suggested fix:<!-- until demo video exists --> <!-- ▶ [Watch on YouTube](https://www.youtube.com/watch?v=TODO) -->
-
[Minor] Chinese README has the same unresolved
watch?v=TODOdemo URL, evidenceREADME.zh-CN.md:30.
Suggested fix:<!-- 在真实视频发布前先移除占位链接 --> <!-- ▶ [在 YouTube 观看](https://www.youtube.com/watch?v=TODO) -->
Summary
- Review mode: initial
- 3 issues found on changed lines (1 Major, 2 Minor).
- Required context files
docs/VISION.mdanddocs/PRINCIPLES.md: Not found in repo/docs. - Hard-constraint checks in this diff: no direct provider SDK imports, no dependency/license/install-size changes detected.
Testing
- Not run (automation). Suggested coverage: add CI link-check (README + docs) and a VitePress build-time check for metadata placeholders.
open-codesign Bot
| priceCurrency: 'USD', | ||
| description: 'Free and open source. Bring your own API key (token cost only).', | ||
| }, | ||
| aggregateRating: { |
There was a problem hiding this comment.
aggregateRating is currently hardcoded placeholder data (5/1). Search engines can treat synthetic review schema as misleading rich-result markup. Please remove this block until real rating data exists.
// aggregateRating: {
// @type: AggregateRating,
// ratingValue: 5,
// reviewCount: 1,
// },| Open CoDesign turns natural-language prompts into HTML prototypes, slide decks, and marketing assets — all running on your laptop, with whichever AI model you bring. It's the open-source counterpart to Anthropic Claude Design, built around three convictions: | ||
| ## Quick demo (60 s) | ||
|
|
||
| ▶ [Watch on YouTube](https://www.youtube.com/watch?v=TODO) _(placeholder — video coming before launch)_ |
There was a problem hiding this comment.
This CTA links to watch?v=TODO, so users land on a broken target. Either replace with a real URL or remove the link until video is available.
<!-- ▶ [Watch on YouTube](https://www.youtube.com/watch?v=TODO) -->|
|
||
| ## 快速演示(60 秒) | ||
|
|
||
| ▶ [在 YouTube 观看](https://www.youtube.com/watch?v=TODO)(占位 — 发布前替换为真实视频) |
There was a problem hiding this comment.
Same issue as EN README: the YouTube URL is unresolved (watch?v=TODO) and produces a broken CTA. Remove or replace before merge.
<!-- ▶ [在 YouTube 观看](https://www.youtube.com/watch?v=TODO) -->There was a problem hiding this comment.
Findings
-
[Minor] Broken YouTube CTA in English README (
watch?v=TODO) leads users to a non-existent target, evidenceREADME.md:30.
Suggested fix:<!-- Remove placeholder link until video is live --> <!-- ▶ [Watch on YouTube](https://www.youtube.com/watch?v=TODO) -->
-
[Minor] Broken YouTube CTA in Chinese README (
watch?v=TODO) has the same issue, evidenceREADME.zh-CN.md:30.
Suggested fix:<!-- 真实视频上线前先移除占位链接 --> <!-- ▶ [在 YouTube 观看](https://www.youtube.com/watch?v=TODO) -->
Summary
- Review mode: follow-up after new commits
- 2 issues found on changed lines (both Minor).
- Verified fixed from previous review: placeholder
aggregateRatingwas removed from JSON-LD inwebsite/.vitepress/config.ts. - Required context files
docs/VISION.mdanddocs/PRINCIPLES.md: Not found in repo/docs. - Hard-constraint checks in this diff: no direct provider SDK imports, no dependency/license/install-size changes detected.
Testing
- Not run (automation). Suggested coverage: link-check for README/docs external CTAs.
open-codesign Bot
| Open CoDesign turns natural-language prompts into HTML prototypes, slide decks, and marketing assets — all running on your laptop, with whichever AI model you bring. It's the open-source counterpart to Anthropic Claude Design, built around three convictions: | ||
| ## Quick demo (60 s) | ||
|
|
||
| ▶ [Watch on YouTube](https://www.youtube.com/watch?v=TODO) _(placeholder — video coming before launch)_ |
There was a problem hiding this comment.
This link targets watch?v=TODO, so users hit a broken destination. Please replace with a real video URL or remove/comment it until ready.
<!-- ▶ [Watch on YouTube](https://www.youtube.com/watch?v=TODO) -->|
|
||
| ## 快速演示(60 秒) | ||
|
|
||
| ▶ [在 YouTube 观看](https://www.youtube.com/watch?v=TODO)(占位 — 发布前替换为真实视频) |
There was a problem hiding this comment.
Same issue in zh-CN README: watch?v=TODO is a broken placeholder target. Please replace with a real URL or remove/comment this line until launch.
<!-- ▶ [在 YouTube 观看](https://www.youtube.com/watch?v=TODO) -->ec1fa19 to
38b5140
Compare
There was a problem hiding this comment.
Findings
- [Major] Global canonical points all pages to the site root canonical URL, which can cause search engines to treat
/quickstart,/architecture,/roadmap, and localized pages as duplicates of home, reducing discoverability and potentially de-indexing those pages. Evidencewebsite/.vitepress/config.ts:66.
Suggested fix:// Remove the static canonical tag from `head`, then add a per-page canonical: transformHead: ({ pageData }) => { const path = pageData.relativePath .replace(/index\.md$/, '') .replace(/\.md$/, ''); return [[ 'link', { rel: 'canonical', href: new URL(path, SITE_URL).toString() }, ]]; },
Summary
- Review mode: follow-up after new commits
- 1 issue found on changed lines.
- Required context docs
docs/VISION.mdanddocs/PRINCIPLES.md: Not found in repo/docs. - Hard-constraint checks in this diff: no direct provider SDK imports, no dependency/license/install-size changes detected, and DCO sign-off is present on commits.
Testing
- Not run (automation). Suggested coverage: build docs and verify canonical URL differs per route (home,
/quickstart,/architecture,/zh/).
open-codesign Bot
| }, | ||
| ], | ||
| // Canonical | ||
| ['link', { rel: 'canonical', href: SITE_URL }], |
There was a problem hiding this comment.
This static canonical applies the same URL to every page. For non-home pages this can collapse indexing to root. Please generate canonical per page path instead of a single global value.
transformHead: ({ pageData }) => {
const path = pageData.relativePath
.replace(/index\.md$/, '')
.replace(/\.md$/, '');
return [[
'link',
{ rel: 'canonical', href: new URL(path, SITE_URL).toString() },
]];
},Replace global canonical pointing to site root with a per-page canonical generated in transformPageData. Search engines were treating /quickstart, /architecture, /roadmap, and the localized /zh pages as duplicates of the home page. Addresses Codex review on #40. Signed-off-by: hqhq1025 <[email protected]>
38b5140 to
9fdf278
Compare
There was a problem hiding this comment.
Findings
-
[Major] README hero image paths point to a non-existent file, so the primary visual renders as a broken image on GitHub and docs previews. Evidence
README.md:10,README.zh-CN.md:10.
Suggested fix:<!-- Option A: point to an existing asset until hero.png is added --> <img src="website/public/og.svg" alt="Open CoDesign — prompt to prototype" width="900" /> <!-- Option B: remove the img block until website/public/hero.png is committed -->
-
[Minor]
og:urlis hardcoded to the site root, so non-home pages emit incorrect Open Graph canonical URL metadata. Evidencewebsite/.vitepress/config.ts:42.
Suggested fix:transformPageData(pageData) { const path = pageData.relativePath.replace(/index\.md$/, '').replace(/\.md$/, ''); const canonical = `${SITE_URL}${path}`; pageData.frontmatter.head ??= []; pageData.frontmatter.head.push(['link', { rel: 'canonical', href: canonical }]); pageData.frontmatter.head.push(['meta', { property: 'og:url', content: canonical }]); },
Summary
- Review mode: follow-up after new commits
- 2 issues found on changed lines.
- Required context docs
docs/VISION.mdanddocs/PRINCIPLES.md: Not found in repo/docs. - Hard-constraint checks in this diff: no direct provider SDK imports, no dependency/license/install-size changes detected, and DCO sign-off is present on commits.
Testing
- Not run (automation). Suggested coverage:
pnpm --filter website docs:buildand inspect generated page head tags (canonical,og:url) for/,/quickstart, and/zh/quickstart.
open-codesign Bot
| [Website](https://opencoworkai.github.io/open-codesign/) · [Quickstart](#quickstart) · [Docs](https://opencoworkai.github.io/open-codesign/quickstart) · [Contributing](./CONTRIBUTING.md) · [Security](./SECURITY.md) | ||
|
|
||
| <p align="center"> | ||
| <img src="website/public/hero.png" alt="Open CoDesign — prompt to prototype" width="900" /> |
There was a problem hiding this comment.
This image points to website/public/hero.png, but that file is not in the repo at this commit, so the README hero renders broken. Please either commit hero.png in this PR or temporarily point to an existing asset.
| [官网](https://opencoworkai.github.io/open-codesign/) · [快速开始](#快速开始) · [贡献指南](./CONTRIBUTING.md) · [安全政策](./SECURITY.md) | ||
|
|
||
| <p align="center"> | ||
| <img src="website/public/hero.png" alt="Open CoDesign — 提示词到原型" width="900" /> |
There was a problem hiding this comment.
Same issue as the English README: website/public/hero.png is missing in this commit, so this hero image renders broken.
| ['meta', { property: 'og:image', content: OG_IMAGE }], | ||
| ['meta', { property: 'og:image:width', content: '1200' }], | ||
| ['meta', { property: 'og:image:height', content: '630' }], | ||
| ['meta', { property: 'og:url', content: SITE_URL }], |
There was a problem hiding this comment.
og:url is still fixed to the site root, so social metadata for non-home pages is inaccurate. Consider emitting per-page og:url from the same canonical path logic in transformPageData.
Part A — README marketing polish (EN + zh-CN): - Hero image placeholder + badge strip at top - "What is Open CoDesign?" punchy 80-word hook - Quick demo section with YouTube + GIF placeholders - Comparison table: Open CoDesign vs Claude Design vs v0 vs Lovable - Quickstart rewritten as numbered 3-step flow (download → BYOK → prompt) - "Built-in Anthropic-style design intelligence" section (anti-slop Skill) - Roadmap table with shipped ✅ vs coming 🔜 status - Star History chart - "Cite this project" block (citation template + CITATION.cff reference) Part B — Website hero + features: - hero.image added (placeholder /hero.png) - CTA buttons: "Download for macOS" + "Star on GitHub" + "Quickstart" - Features 8 items polished; coming-soon items marked clearly - Comparison table updated (Open CoDesign row first, Lovable added) - Social proof / testimonial placeholder block added - CTA section with two links Part C — SEO deepening (config.ts): - lang: 'en-US' added - og:site_name, og:image:width/height added - twitter:site @OpenCoworkAI added - Canonical URL link tag added - Keywords updated with high-value phrases: "Claude Design alternative", "open source AI design tool", "BYOK design app", "local-first design generator" - JSON-LD SoftwareApplication: name capitalised, operatingSystem expanded to include Linux, aggregateRating placeholder added, codeRepository field added - Nav: added Why / Features / Pricing links - Footer: links to Apache-2.0, Contribute, Issues - socialLinks: Twitter added Part D — AI-SEO: - llms.txt: expanded with shipped features, coming-soon section, differentiation facts in statement form - llms-full.txt: full rewrite with comparison table, architecture section, hard constraints, community links, citation block - CITATION.cff: new file at repo root for academic/industry citation Sitemap: VitePress built-in sitemap plugin already configured. robots.txt: existing Allow: / is correct, no change needed. Signed-off-by: hqhq1025 <[email protected]>
Signed-off-by: hqhq1025 <[email protected]>
Signed-off-by: hqhq1025 <[email protected]>
Replace global canonical pointing to site root with a per-page canonical generated in transformPageData. Search engines were treating /quickstart, /architecture, /roadmap, and the localized /zh pages as duplicates of the home page. Addresses Codex review on #40. Signed-off-by: hqhq1025 <[email protected]>
Codex flagged README hero referencing website/public/hero.png which does not exist, so the primary visual rendered broken on GitHub and docs previews. Use placehold.co in both READMEs and point the VitePress hero at the existing /og.svg until a real screenshot lands. Signed-off-by: hqhq1025 <[email protected]>
9fdf278 to
6307f6b
Compare
There was a problem hiding this comment.
Findings
- [Minor]
og:urlis still pinned to the site root, so shared links for non-home pages can publish incorrect URL metadata. Evidencewebsite/.vitepress/config.ts:42and canonical logic atwebsite/.vitepress/config.ts:100-105.
Suggested fix:transformPageData(pageData) { const path = pageData.relativePath.replace(/index\.md$/, '').replace(/\.md$/, ''); const canonical = `${SITE_URL}${path}`; pageData.frontmatter.head ??= []; pageData.frontmatter.head.push(['link', { rel: 'canonical', href: canonical }]); pageData.frontmatter.head.push(['meta', { property: 'og:url', content: canonical }]); } // Remove the static root value from head: // ['meta', { property: 'og:url', content: SITE_URL }],
Summary
- Review mode: follow-up after new commits
- 1 issue found on changed lines.
docs/VISION.mdanddocs/PRINCIPLES.md: Not found in repo/docs (as noted inCLAUDE.md, docs are gitignored/internal).- Hard-constraint checks in this diff: no direct provider SDK imports, no dependency/license/install-size changes detected.
Testing
- Not run (automation). Suggested checks: build docs and inspect generated metadata for
/,/quickstart, and/zh/quickstartto ensureog:urlequals each page canonical URL.
open-codesign Bot
| ['meta', { property: 'og:image', content: OG_IMAGE }], | ||
| ['meta', { property: 'og:image:width', content: '1200' }], | ||
| ['meta', { property: 'og:image:height', content: '630' }], | ||
| ['meta', { property: 'og:url', content: SITE_URL }], |
There was a problem hiding this comment.
og:url is currently static (SITE_URL), while canonical links are page-specific in transformPageData. This can produce incorrect OG URL metadata for non-home pages. Please emit og:url from the same per-page canonical value and remove the static root tag.
Summary
Prep for tomorrow's public launch. All changes are documentation and website only — no TypeScript, no tests affected.
lang: 'en-US',og:site_name,og:image:width/height,twitter:site, canonical URL, updated keywords with "Claude Design alternative" / "open source AI design tool" / "BYOK design app" / "local-first design generator", JSON-LD expanded (Linux added,aggregateRatingplaceholder,codeRepositoryfield), nav items "Why" / "Features" / "Pricing", footer with links, Twitter social linkSitemap is handled by VitePress built-in
sitemapplugin (already configured).robots.txtalready hasAllow: /— no change needed.What is NOT in this PR (TODO before launch)
website/public/hero.pngplaceholderhttps://placehold.co/…in README sectionsTODOin YouTube links@OpenCoworkAIused; verify it's correctog.svgwith a proper 1200×630 PNG when readyaggregateRatingin JSON-LD — update once real reviews existCompatibility / upgradeability / no bloat / elegance
Test plan
pnpm --filter website docs:buildsucceeds with no errors/llms.txtis accessible athttps://opencoworkai.github.io/open-codesign/llms.txt/llms-full.txtaccessible at same originog:imagemeta tag renders correctly in browser dev tools head inspector