Skip to content
Open
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
8 changes: 7 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ jobs:
run: npm ci --ignore-scripts
- name: Build Project
run: npm run build
- name: Generate llms.txt files
run: npm run generate-llms
- name: Copy llms.txt files to dist
run: |
cp llms.txt dist/
cp llms-full.txt dist/
- name: Upload Pages Artifact
uses: actions/upload-pages-artifact@v3
with:
Expand Down Expand Up @@ -66,4 +72,4 @@ jobs:
aws-region: ap-northeast-1
- name: Upload to S3
run: |
aws s3 sync artifact s3://${{ env.AWS_S3_BUCKET_NAME }}/accessibility-guidelines --exclude "*" --include "*.html" --delete
aws s3 sync artifact s3://${{ env.AWS_S3_BUCKET_NAME }}/accessibility-guidelines --exclude "*" --include "*.html" --include "*.txt" --delete
1,844 changes: 1,844 additions & 0 deletions llms-full.txt

Large diffs are not rendered by default.

103 changes: 103 additions & 0 deletions llms.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# LIFULL Accessibility Guidelines

> アクセシビリティに配慮したデザインと実装のためのガイドライン

This file contains accessibility guidelines for designers and developers.

## metadata
- url: https://lifull.github.io/accessibility-guidelines/
- version: v3.0
## ガイドラインについて

- [はじめに](https://lifull.github.io/accessibility-guidelines/introduction.html)
- [利用方法](https://lifull.github.io/accessibility-guidelines/usage.html)

## デザインのガイドライン

### コンテンツ

- [自動再生するコンテンツ](https://lifull.github.io/accessibility-guidelines/design/autostart-content) (レベル1: 必ず達成)
- [閃光](https://lifull.github.io/accessibility-guidelines/design/flash) (レベル1: 必ず達成)
- [見出し](https://lifull.github.io/accessibility-guidelines/design/heading) (レベル1: 必ず達成)
- [画像の代替テキスト](https://lifull.github.io/accessibility-guidelines/design/image-alternative) (レベル1: 必ず達成)
- [ページタイトル](https://lifull.github.io/accessibility-guidelines/design/page-title) (レベル1: 必ず達成)
- [動画の字幕](https://lifull.github.io/accessibility-guidelines/design/video-caption) (レベル1: 必ず達成)
- [音声のみのコンテンツ](https://lifull.github.io/accessibility-guidelines/design/audio-only) (レベル2: 可能な限り達成)
- [グラフや図](https://lifull.github.io/accessibility-guidelines/design/chart-and-diagram) (レベル2: 可能な限り達成)
- [データ可視化](https://lifull.github.io/accessibility-guidelines/design/data-visualization) (レベル2: 可能な限り達成)
- [テキスト画像](https://lifull.github.io/accessibility-guidelines/design/image-of-text) (レベル2: 可能な限り達成)
- [表](https://lifull.github.io/accessibility-guidelines/design/table) (レベル2: 可能な限り達成)
- [動画コンテンツ(音声を含む)](https://lifull.github.io/accessibility-guidelines/design/video-and-audio) (レベル2: 可能な限り達成)
- [リンクテキスト](https://lifull.github.io/accessibility-guidelines/design/link-text) (レベル3: できれば考慮)
- [コンテンツの順序](https://lifull.github.io/accessibility-guidelines/design/order-of-content) (レベル3: できれば考慮)
- [目次とサイトマップ](https://lifull.github.io/accessibility-guidelines/design/sitemap) (レベル3: できれば考慮)

### フォーム・インタラクション

- [カスタムUIのキーボード操作](https://lifull.github.io/accessibility-guidelines/design/keyboard) (レベル1: 必ず達成)
- [定番のパターン](https://lifull.github.io/accessibility-guidelines/design/established-pattern) (レベル1: 必ず達成)
- [キーボード操作](https://lifull.github.io/accessibility-guidelines/design/keyboard) (レベル1: 必ず達成)
- [ホバーで表示されるコンテンツ](https://lifull.github.io/accessibility-guidelines/design/content-on-hover) (レベル2: 可能な限り達成)
- [エラーメッセージ](https://lifull.github.io/accessibility-guidelines/design/error-message) (レベル2: 可能な限り達成)
- [エラーメッセージの提示](https://lifull.github.io/accessibility-guidelines/design/error-presentation) (レベル2: 可能な限り達成)
- [フォームコントロールのラベル](https://lifull.github.io/accessibility-guidelines/design/form-control-label) (レベル2: 可能な限り達成)
- [シンプルなポインター操作](https://lifull.github.io/accessibility-guidelines/design/simple-pointer) (レベル2: 可能な限り達成)
- [デバイスの向き](https://lifull.github.io/accessibility-guidelines/design/device-orientation) (レベル3: できれば考慮)
- [新しいタブで開くリンク](https://lifull.github.io/accessibility-guidelines/design/link-opens-in-new-tab) (レベル3: できれば考慮)
- [予測可能なパターン](https://lifull.github.io/accessibility-guidelines/design/predictable-pattern) (レベル3: できれば考慮)
- [時間制限](https://lifull.github.io/accessibility-guidelines/design/time-limit) (レベル3: できれば考慮)
- [ユーザー認証](https://lifull.github.io/accessibility-guidelines/design/user-authentication) (レベル3: できれば考慮)

### ビジュアル

- [フォーカスインジケーター](https://lifull.github.io/accessibility-guidelines/design/focus-indicator) (レベル1: 必ず達成)
- [リンクの判別](https://lifull.github.io/accessibility-guidelines/design/link-identification) (レベル1: 必ず達成)
- [状態の判別](https://lifull.github.io/accessibility-guidelines/design/state-identification) (レベル1: 必ず達成)
- [レスポンシブデザイン](https://lifull.github.io/accessibility-guidelines/design/responsive-design) (レベル2: 可能な限り達成)
- [ターゲットサイズ](https://lifull.github.io/accessibility-guidelines/design/target-size) (レベル2: 可能な限り達成)
- [テキストの色コントラスト](https://lifull.github.io/accessibility-guidelines/design/text-contrast) (レベル2: 可能な限り達成)
- [テキストの均等割付](https://lifull.github.io/accessibility-guidelines/design/text-justify) (レベル2: 可能な限り達成)
- [アイコンやUIコンポーネントの色コントラスト](https://lifull.github.io/accessibility-guidelines/design/ui-contrast) (レベル2: 可能な限り達成)

## 実装のガイドライン

### マークアップ

- [背景画像](https://lifull.github.io/accessibility-guidelines/impl/background-image) (レベル1: 必ず達成)
- [見出し](https://lifull.github.io/accessibility-guidelines/impl/heading) (レベル1: 必ず達成)
- [画像の代替テキスト](https://lifull.github.io/accessibility-guidelines/impl/image-alternative) (レベル1: 必ず達成)
- [ページの言語](https://lifull.github.io/accessibility-guidelines/impl/language-of-page) (レベル1: 必ず達成)
- [ページタイトル](https://lifull.github.io/accessibility-guidelines/impl/page-title) (レベル1: 必ず達成)
- [調整可能な文字サイズ](https://lifull.github.io/accessibility-guidelines/impl/adjustable-text-size) (レベル2: 可能な限り達成)
- [グループ化された画像](https://lifull.github.io/accessibility-guidelines/impl/grouped-images) (レベル2: 可能な限り達成)
- [ランドマーク領域](https://lifull.github.io/accessibility-guidelines/impl/landmark-region) (レベル2: 可能な限り達成)
- [意味のある順序](https://lifull.github.io/accessibility-guidelines/impl/meaningful-sequence) (レベル2: 可能な限り達成)
- [改行と空白文字](https://lifull.github.io/accessibility-guidelines/impl/whitespace-character) (レベル2: 可能な限り達成)
- [正しい構文と文法](https://lifull.github.io/accessibility-guidelines/impl/syntax-and-grammar) (レベル3: できれば考慮)

### フォーム

- [フォームコントロールのラベル](https://lifull.github.io/accessibility-guidelines/impl/label-for-control) (レベル1: 必ず達成)
- [ラベルのないコントロール](https://lifull.github.io/accessibility-guidelines/impl/labelless-control) (レベル1: 必ず達成)
- [コピー&ペーストの許容](https://lifull.github.io/accessibility-guidelines/impl/allow-copy-paste) (レベル2: 可能な限り達成)
- [フォームコントロールのグループ化](https://lifull.github.io/accessibility-guidelines/impl/grouped-form-control) (レベル2: 可能な限り達成)
- [入力目的の特定](https://lifull.github.io/accessibility-guidelines/impl/identify-input-purpose) (レベル2: 可能な限り達成)
- [フォームコントロールの説明文](https://lifull.github.io/accessibility-guidelines/impl/form-control-description) (レベル3: できれば考慮)

### インタラクション

- [ズームの許容](https://lifull.github.io/accessibility-guidelines/impl/allow-zoom) (レベル1: 必ず達成)
- [フォーカスインジケーター](https://lifull.github.io/accessibility-guidelines/impl/focus-indicator) (レベル1: 必ず達成)
- [挿入されるコンテンツ](https://lifull.github.io/accessibility-guidelines/impl/inserted-content) (レベル1: 必ず達成)
- [ボタンの使用](https://lifull.github.io/accessibility-guidelines/impl/use-button) (レベル1: 必ず達成)
- [ホバーで表示されるコンテンツ](https://lifull.github.io/accessibility-guidelines/impl/content-on-hover) (レベル2: 可能な限り達成)
- [文脈に応じたフォーカス](https://lifull.github.io/accessibility-guidelines/impl/contextual-focus) (レベル2: 可能な限り達成)
- [Escapeキー操作](https://lifull.github.io/accessibility-guidelines/impl/escape-key) (レベル2: 可能な限り達成)
- [外部コンテンツおよびUIライブラリ](https://lifull.github.io/accessibility-guidelines/impl/external-content-and-library) (レベル2: 可能な限り達成)
- [隠されているコンテンツ](https://lifull.github.io/accessibility-guidelines/impl/hidden-content) (レベル2: 可能な限り達成)
- [WAI-ARIA](https://lifull.github.io/accessibility-guidelines/impl/wai-aria) (レベル2: 可能な限り達成)
- [背後のコンテンツ](https://lifull.github.io/accessibility-guidelines/impl/backside-content) (レベル3: できれば考慮)
- [ダウンイベントの使用](https://lifull.github.io/accessibility-guidelines/impl/down-event) (レベル3: できれば考慮)
- [ドラッグ操作の中断](https://lifull.github.io/accessibility-guidelines/impl/drag-operation-interruption) (レベル3: できれば考慮)
- [ステータスの通知](https://lifull.github.io/accessibility-guidelines/impl/status-announcement) (レベル3: できれば考慮)

5 changes: 3 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview"
"preview": "astro preview",
"generate-llms": "node ./scripts/generate-llms-txt.js"
},
"dependencies": {
"@astrojs/markdown-remark": "^2.1.3",
Expand Down
148 changes: 148 additions & 0 deletions scripts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# llms.txt Generator

このディレクトリには、LIFULL Accessibility Guidelines用のllms.txtファイルを生成するためのスクリプトが含まれています。

## 概要

llms.txtジェネレーターは、MDXファイルからアクセシビリティガイドラインの内容を抽出し、AI言語モデルが利用しやすい形式のファイルを生成します。

## ファイル構成

```text
scripts/
├── generate-llms-txt.js # メインスクリプト(エントリーポイント)
├── llms-generator.js # メインジェネレータークラス
├── config.js # 設定ファイル
├── logger.js # ログ機能
├── parsers/ # パーサーモジュール
│ ├── file-parser.js # ファイル操作ユーティリティ
│ ├── mdx-parser.js # MDXファイルパーサー
│ ├── component-parser.js # Astroコンポーネントパーサー
│ ├── code-block-parser.js # コードブロックパーサー
│ └── url-generator.js # URL生成ユーティリティ
└── generators/ # コンテンツ生成モジュール
└── content-generator.js # llms.txtコンテンツ生成
```

## 使用方法

### 基本的な使用方法

```bash
# package.jsonで定義されたスクリプトを使用
npm run generate-llms

# または直接実行
node scripts/generate-llms-txt.js
```

### プログラムからの使用

```javascript
const LlmsGenerator = require('./scripts/llms-generator');

// 基本的な使用
const generator = new LlmsGenerator();
await generator.generate();

// オプションを指定
const generator = new LlmsGenerator({
verbose: true, // 詳細なログを表示
silent: false // 静寂モード
});
await generator.generate();
```

## 生成されるファイル

- `llms.txt` - 簡易版(ガイドライン一覧とリンクのみ)
- `llms-full.txt` - 完全版(全コンテンツを含む)

## 設定

設定は `config.js` で管理されています:

```javascript
module.exports = {
// ファイルパス
paths: {
guidelines: '../src/content/guidelines',
pages: '../src/pages',
output: '../llms.txt',
outputFull: '../llms-full.txt'
},

// サイトメタデータ
metadata: {
title: 'LIFULL Accessibility Guidelines',
version: 'v3.0'
},

// その他の設定...
};
```

## 機能

### パーサー機能

- **MDXファイル解析**: フロントマターとコンテンツの分離
- **Astroコンポーネント処理**: Checkpoint、Cases、Case、Levelコンポーネントの解析
- **コードブロック抽出**: HTMLコード例の正確な抽出
- **日本語URL対応**: アンカーIDの生成で日本語文字をサポート

### コンテンツ生成

- **階層構造**: エリア(デザイン/実装)とカテゴリーによる整理
- **目次生成**: 完全版では自動的に目次を生成
- **レベル表示**: ガイドラインの重要度レベルを表示
- **URLリンク**: 各ガイドラインへの直接リンク

### エラーハンドリング

- **詳細なログ**: verbose モードで詳細な処理状況を表示
- **例外処理**: ファイル読み込みやパース処理のエラーを適切に処理
- **依存関係チェック**: 必要なnpmパッケージの自動インストール

## 開発・メンテナンス

### 新しいコンポーネントの追加

新しいAstroコンポーネントを処理に追加する場合:

1. `parsers/component-parser.js` に解析ロジックを追加
2. `config.js` に必要な設定を追加
3. テストを実行して動作確認

### 設定の変更

設定変更は `config.js` を編集してください。変更後は以下をテスト:

```bash
npm run generate-llms
```

### デバッグ

詳細なログを確認したい場合:

```javascript
const generator = new LlmsGenerator({ verbose: true });
await generator.generate();
```

## トラブルシューティング

### よくある問題

1. **依存関係エラー**: `npm install` を実行
2. **パスエラー**: `config.js` のパス設定を確認
3. **MDXパースエラー**: ファイルの構文を確認

### ログレベル

- **info**: 一般的な進行状況
- **verbose**: 詳細な処理状況(verbose モード時のみ)
- **warn**: 警告メッセージ
- **error**: エラーメッセージ
- **success**: 成功メッセージ
76 changes: 76 additions & 0 deletions scripts/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/**
* Configuration for llms.txt generation
*/

module.exports = {
// File paths
paths: {
guidelines: '../src/content/guidelines',
pages: '../src/pages',
output: '../llms.txt',
outputFull: '../llms-full.txt'
},

// Base URL for the site
baseUrl: 'https://lifull.github.io/accessibility-guidelines',

// Site metadata
metadata: {
title: 'LIFULL Accessibility Guidelines',
description: 'アクセシビリティに配慮したデザインと実装のためのガイドライン',
englishDescription: 'This file contains accessibility guidelines for designers and developers.',
version: 'v3.0'
},

// Pages to include in different versions
pages: {
full: ['introduction.mdx', 'usage.mdx', 'alternative-text.mdx', 'accessible-patterns.mdx'],
simplified: ['introduction.mdx', 'usage.mdx']
},

// Category name mappings
categoryNames: {
contents: 'コンテンツ',
'forms-and-interactions': 'フォーム・インタラクション',
visual: 'ビジュアル',
markup: 'マークアップ',
forms: 'フォーム',
interactions: 'インタラクション'
},

// Area name mappings
areaNames: {
design: 'デザイン',
impl: '実装'
},

// Level descriptions
levelDescriptions: {
1: '必ず達成',
2: '可能な限り達成',
3: 'できれば考慮'
},

// Type labels for examples
typeLabels: {
good: '✓ 良い例',
bad: '✗ 悪い例'
},

// Regular expressions for content cleaning
regex: {
imports: /import[\s\S]*?from\s+["'].*?["'];?\s*/g,
jsxComments: /\{\/\*[\s\S]*?\*\/\}/g,
backticks: /`([^`]+)`/g,
frontmatterTitle: /#### 「\{frontmatter\.title\}」とは/g,
checkpointHeader: /#### チェック項目/g,
referenceSection: /##### 参考情報[\s\S]*$/g,
multipleNewlines: /\n\s*\n\s*\n/g,
htmlTags: /<[^>]*>/g,
markdownHeaders: /#{1,6}\s*/,
japaneseChars: /[^\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF\w\s]/g,
spaces: /\s+/g,
dashes: /-+/g,
leadingTrailingDashes: /^-+|-+$/g
}
};
Loading