{"id":22799732,"url":"https://github.com/yuhanawa/astro-charm","last_synced_at":"2025-08-02T12:06:19.044Z","repository":{"id":266355121,"uuid":"844069925","full_name":"Yuhanawa/astro-charm","owner":"Yuhanawa","description":"Beautiful and easy-to-use blog theme","archived":false,"fork":false,"pushed_at":"2025-04-10T07:08:06.000Z","size":4368,"stargazers_count":27,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T07:44:06.643Z","etag":null,"topics":["astro","astro-integration","astro-theme","blog-theme","withastro"],"latest_commit_sha":null,"homepage":"https://astro-charm.vercel.app","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yuhanawa.png","metadata":{"files":{"readme":"README-ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-18T09:37:54.000Z","updated_at":"2025-04-10T07:07:38.000Z","dependencies_parsed_at":"2024-12-19T18:21:14.506Z","dependency_job_id":"9a999c56-c2ed-48bd-b18f-5e059c30e0d8","html_url":"https://github.com/Yuhanawa/astro-charm","commit_stats":null,"previous_names":["yuhanawa/astro-charm"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yuhanawa%2Fastro-charm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yuhanawa%2Fastro-charm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yuhanawa%2Fastro-charm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yuhanawa%2Fastro-charm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yuhanawa","download_url":"https://codeload.github.com/Yuhanawa/astro-charm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249740830,"owners_count":21318709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astro","astro-integration","astro-theme","blog-theme","withastro"],"created_at":"2024-12-12T07:09:45.714Z","updated_at":"2025-04-19T16:43:59.777Z","avatar_url":"https://github.com/Yuhanawa.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Astro Theme: Charm\n\n[English](./README.md) | [日本語](./README-ja.md) | [中文](./README-zh-cn.md)\n\n\n美しく、シンプルで使いやすいブログテーマ\n\n![Preview of Live Demo](docs/Charm-Theme-Preview-20250211.png \"Charm-Theme-Preview-20250211\")\n\n[Github](https://github.com/yuhanawa/astro-charm) | [ライブデモ](https://astro-charm.vercel.app/) | [PageSpeed](https://pagespeed.web.dev/analysis?url=https%3A%2F%2Fastro-charm.vercel.app%2F)\n\n注意：`ライブデモ`の右側の画像はCharmテーマの一部ではありません\n\n## 特徴\n\n- Astro v5で構築\n- デスクトップとモバイルに対応\n- PageSpeedスコアが優秀\n  - 満点の100点！[2024年12月29日のレポート](https://pagespeed.web.dev/analysis/https-astro-charm-vercel-app/g1cxq98foh)\n  - 最新の[PageSpeedスコア](https://pagespeed.web.dev/analysis?url=https%3A%2F%2Fastro-charm.vercel.app%2F)を確認\n- カテゴリーとタグページ\n- ダークモード\n- コードブロック\n- 検索機能\n- コメント機能対応（giscus）\n- Google Analytics対応\n- サイトマップ\n- RSS\n- カスタマイズ\n  - [テーマのカスタマイズ方法](https://astro-charm.vercel.app/posts/custom)\n\n## 使用方法\n\n1. 以下のコマンドを実行して、`astro-charm`テーマで新しいプロジェクトを作成します。\n\n```bash\npnpm create astro-theme@latest with-theme astro-charm\n```\n\n2. `src/content.config.ts` をプロジェクトに追加します。\n\n```ts\nimport { collections as charmCollections } from \"astro-charm/content\";\nexport const collections = {\n  // your other collections\n  ...charmCollections,\n};\n```\n\n3. プロジェクトに移動し、`@iconify-json/simple-icons`と`@iconify-json/solar`をインストールします。\n\n```bash\npnpm add @iconify-json/simple-icons\npnpm add @iconify-json/solar\n```\n\n4. 設定を変更して使用開始！\n\n注意：`astro.config.ts`ファイルに`site`を追加する必要があります。`charm`は`sitemap`と`RSS`にこれを使用します。\n\n詳細な設定については：[Config](#config)をご覧ください。\n\n\u003cdetails\u003e\n  \u003csummary\u003e既存のプロジェクトにインストール\u003c/summary\u003e\n\n1. プロジェクトに`astro-charm`、`@iconify-json/simple-icons`、`@iconify-json/solar`をインストールします。\n\n```bash\npnpm astro add astro-charm\npnpm add @iconify-json/simple-icons\npnpm add @iconify-json/solar\n```\n\n2. `src/content.config.ts` ファイルを変更します。\n\n```ts\nimport { collections as charmCollections } from \"astro-charm/content\";\nexport const collections = {\n  // your other collections\n  ...charmCollections,\n};\n```\n\n3. `astro.config.ts`ファイルを修正します。以下のコマンドで修正できます。\n\n```bash\npnpm create astro-theme@latest init astro-charm\n```\n\nまたは手動で修正：\n\n```ts\nimport { defineConfig } from \"astro/config\";\nimport charm from \"astro-charm\";\n\nexport default defineConfig({\n  prefetch: true,\n  site: \"\u003cあなたのサイトURL\u003e\",\n\n  integrations: [\n    charm({\n      config: {\n        lang: \"ja\", // HTMLのlang属性とRSS用\n        title: \"ホームページのタイトル\", // ホームページのSEO用\n        description: \"ホームページの説明\", // ホームページのSEO用\n        side: {\n          title: \"タイトル\",\n          sub: \"サブタイトル\",\n          bio: \"あなたの自己紹介文（50〜90文字程度推奨、自動的に改行されます）\",\n        },\n        // その他の設定\n      },\n    }),\n  ],\n});\n```\n\n\u003c/details\u003e\n\n## Config\n\n`astro.config.ts`ファイルに`site`を追加する必要があります。`charm`は`sitemap`と`RSS`にこれを使用します。\n\n### 最小限の設定\n\n```ts\nimport { defineConfig } from \"astro/config\";\nimport charm from \"astro-charm\";\n\nexport default defineConfig({\n  prefetch: true,\n  site: \"\u003cあなたのサイトURL\u003e\",\n\n  integrations: [\n    charm({\n      config: {\n        lang: \"ja\", // HTMLのlang属性とRSS用\n        title: \"ホームページのタイトル\", // ホームページのSEO用\n        description: \"ホームページの説明\", // ホームページのSEO用\n        side: {\n          title: \"タイトル\",\n          sub: \"サブタイトル\",\n          bio: \"あなたの自己紹介文（50〜90文字程度推奨、自動的に改行されます）\",\n        },\n      },\n    }),\n  ],\n});\n```\n\n### [Config schema](https://github.com/Yuhanawa/astro-charm/blob/main/package/index.ts#L59-L152)\n\n```ts\nconst configSchema = z.object({\n  lang: z.string(),\n  title: z.string(),\n  titleSuffix: z.string().or(z.boolean()).default(true),\n  description: z.string().optional(),\n  author: z.string().optional(),\n  placeholderImage: z.string().min(1).optional(),\n  licenseId: z.enum([...licenses] as [string, ...string[]]).optional(),\n  rss: z.boolean().default(true),\n  googleAnalyticsId: z.string().optional(),\n  font: z\n    .enum([\"auto\", \"full\", \"only-en\", \"disabled\", \"dynamic\"])\n    .default(\"auto\"),\n  shootingStar: z.boolean().default(true),\n  side: z.object({\n    title: z.string(),\n    sub: z.string(),\n    bio: z.string(),\n    navHome: z\n      .object({\n        title: z.string().default(\"Home\"),\n        link: z.string().default(\"/\"),\n        icon: iconStringOrLightDarkOrWithStates.default({\n          default: \"solar:file-text-broken\",\n          hover: \"solar:file-smile-outline\",\n          active: \"solar:file-smile-bold-duotone\",\n        }),\n      })\n      .default({}),\n    footer: z\n      .array(\n        z.object({\n          title: z.string(),\n          link: z.string(),\n          icon: iconStringOrLightDarkOrWithStates,\n        }),\n      )\n      .min(1)\n      .default([\n        {\n          title: \"Twitter\",\n          link: \"https://x.com/\",\n          icon: \"simple-icons:twitter\",\n        },\n        {\n          title: \"GitHub\",\n          link: \"https://github.com/yuhanawa/astro-charm\",\n          icon: \"simple-icons:github\",\n        },\n      ]),\n    navStyle: z.enum([\"default\", \"only-icon\", \"only-title\"]).default(\"default\"),\n    footerStyle: z\n      .enum([\"default\", \"only-icon\", \"only-title\"])\n      .default(\"default\"),\n  }),\n  markdown: z\n    .object({\n      colorizedBrackets: z\n        .object({\n          explicitTrigger: z.boolean().default(false), // if true, ```ts colorize-brackets\n        })\n        .default({}),\n      twoslash: z\n        .object({\n          explicitTrigger: z.boolean().default(true), // if true, ```ts twoslash\n        })\n        .default({}),\n    })\n    .default({}),\n  giscus: z\n    .object({\n      repo: z.string(),\n      repoId: z.string(),\n      category: z.string(),\n      categoryId: z.string(),\n      mapping: z\n        .enum([\"pathname\", \"url\", \"title\", \"og:title\"])\n        .default(\"pathname\"),\n      strict: z.boolean().default(false),\n      reactions: z.boolean().default(true),\n      emitMetadata: z.boolean().default(false),\n      inputPosition: z.enum([\"top\", \"bottom\"]).default(\"top\"),\n      theme: z\n        .object({\n          light: z.string(),\n          dark: z.string(),\n        })\n        .default({\n          light: \"light\",\n          dark: \"dark\",\n        }),\n    })\n    .optional(),\n});\n```\n\n## トラブルシューティング\n\n### [CouldNotTransformImage] Could not transform image\n\nプロジェクトに手動でSharp（`sharp`）をインストールしてください。\n\n```bash\npnpm add sharp\n```\n\n### ResponseSentError: The response has already been sent to the browser and cannot be altered.\n\n`src\\content` フォルダ内に `posts` フォルダを作成し、その中に投稿（`.md` ファイル）を作成してください。\n最小限の md ファイル：\n\n```\n---\ntitle: title\npublished: 2025-04-10\n---\n\n```\n\n\n## 質問と提案\n\n質問や提案がありましたら、Issueを開いてお気軽にご連絡ください。すべてのPull Requestを歓迎します！\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuhanawa%2Fastro-charm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuhanawa%2Fastro-charm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuhanawa%2Fastro-charm/lists"}