Machine Readiness
Stored receipt and evidence
20
65
0
0
0
Samples
No stored offer samples.
Samples
No stored action samples.
Samples
No stored product samples.
Document
# ===================================== # 🤖 robots.txt(SEO最強版 v2.0) # ===================================== # ======================================== # 全クローラー共通設定 # ======================================== User-agent: * # 管理・内部ディレクトリ Disallow: /admin/ Disallow: /config/ Disallow: /logs/ Disallow: /tmp/ Disallow: /cache/ Disallow: /api/ Disallow: /ajax/ Disallow: /includes/ Disallow: /vendor/ # 開発・テスト環境 Disallow: /test/ Disallow: /dev/ Disallow: /_dev/ Disallow: /staging/ # 認証・セキュリティ Disallow: /login Disallow: /logout Disallow: /auth/ Disallow: /.env Disallow: /.git/ # ファイル拡張子(正規表現非対応のため複数記述) Disallow: /*.log Disallow: /*.sql Disallow: /*.bak Disallow: /*.conf Disallow: /*.zip Disallow: /*.tar.gz # システムファイル Disallow: /error_log Disallow: /php_error.log Disallow: /debug.log # ======================================== # 重要: これらはクロール許可 # ======================================== # Allow: / ← 省略でOK(デフォルト許可) # Allow: /index.php ← 同上 # Allow: /video_view.php ← 同上 # Allow: /clusters.php ← 同上 # Allow: /all_videos.php ← 同上 # Allow: /favorites.php ← 同上 # ======================================== # サイトマップ(優先度順) # ======================================== Sitemap: https://ero-video.fun/sitemap.xml Sitemap: https://ero-video.fun/sitemap-trending_generator.php Sitemap: https://ero-video.fun/sitemap-clusters.php Sitemap: https://ero-video.fun/sitemap-videos.php # ======================================== # クロール効率化(重要ページ優先) # ======================================== # Crawl-delay: 0 ← Googlebotは無視するので不要 # ======================================== # 優先ドメイン指定 # ======================================== Host: ero-video.fun # ======================================== # 悪質Bot個別ブロック # ======================================== User-agent: AhrefsBot Disallow: / User-agent: MJ12bot Disallow: / User-agent: DotBot Disallow: / User-agent: Semrushbot Disallow: / User-agent: SemrushBot Disallow: / User-agent: Baiduspider Disallow: / User-agent: YandexBot Disallow: / User-agent: PetalBot Disallow: / User-agent: DataForSeoBot Disallow: /
Document
# エロファン (EroFan) - 高画質動画まとめサイト
## プロジェクト概要
多言語対応の高画質動画まとめサイト。日本語、英語、韓国語、中国語に対応。
## 技術スタック
- **言語**: PHP 8.3
- **データベース**: MySQL (Sakura Internet)
- **環境**: Macbook Air M-series
- **制約**: ターミナル使用不可(初期化レベルのトラブル)
- **デプロイ方法**: FTP経由のみ
## 重要な制約事項
⚠️ **ターミナルが使用不可**: 初期SQL設定時のトラブルにより、ターミナルが完全に使用不可能な状態。パソコン初期化しない限り復旧不可。
- すべての作業はFTP経由で実行
- サーバー側で実行可能なスクリプトでの作業が必須
## アーキテクチャ
### ファイル構成
```
/
├── index.php # メインページ(多言語対応・ランキング機能)
├── video_view.php # 動画視聴ページ
├── clusters.php # カテゴリクラスタページ
├── favorites.php # お気に入り機能
├── style.css # メインスタイル
├── core-functions.js # コア機能(検索・フィルター)
├── mobile-ui.js # モバイルUI制御
├── category-manager.js # カテゴリ管理
├── advanced-lazy-loading.js # 遅延読み込み
└── llms.txt # このファイル
```
### データベース構成
```sql
-- 接続情報
Host: mysql3107.db.sakura.ne.jp
Database: nightlifebest_videos
User: nightlifebest_videos
-- 主要テーブル
trending_videos (
id, video_id, title, description,
thumbnail_url, duration, total_views,
daily_views, last_updated, upload_date,
platform, embed_url
)
tags (id, tag_name)
video_tags (video_id, tag_id)
```
## コア機能
### 1. 多言語対応システム
- **サポート言語**: 日本語(ja), 英語(en), 韓国語(ko), 中国語(zh)
- **言語検出**: URL > セッション > ブラウザ > デフォルト(ja)
- **翻訳関数**: `t($key, $fallback, $params)`
- **URL構造**: `/?lang=en` (日本語時はlangパラメータ不要)
```php
// 言語切り替え例
$current_language = detectUserLanguage();
echo t('site-name', 'エロファン'); // 現在の言語で表示
```
### 2. ランキングシステム
- **期間別ランキング**:
- `latest`: 新着順
- `day`: 24時間ランキング
- `week`: 週間ランキング
- `month`: 月間ランキング
- `all_time`: 全期間ランキング
- **動的制限**: `getDynamicViewsLimit()` で検索語・期間により制限を調整
- **キャッシュ**: 現在は無効化(`CACHE_TTL`設定あり)
### 3. 検索機能
- **シノニム展開**: 類義語を自動展開して検索範囲を拡大
- **多言語検索**: 各言語のキーワードに対応
- **検索オプション**: 並び順・表示件数・期間フィルター
```php
$synonyms = [
'美女' => ['美人', 'かわいい', 'beautiful', '미녀', '美丽的女人'],
// ...
];
```
### 4. カテゴリシステム
- **動的カテゴリ取得**: `getCategoryVideosWithUrls()`
- **カテゴリキーワードマッピング**: 言語別キーワード対応
- **カテゴリ一覧**: `getAllCategories($language)`
### 5. SEO最適化
- **動的メタタグ**: 検索語・期間・ページ数に応じた最適化
- **構造化データ**: JSON-LD形式でVideoObject実装
- **Canonical URL**: 重複コンテンツ防止
- **hreflang**: 多言語SEO対応
## 主要関数リファレンス
### データ取得
```php
getLatestVideos($pdo, $limit, $search, $sort, $offset, $views_limit, $force_refresh)
getRankingVideos($pdo, $period, $limit, $views_limit, $force_refresh)
getAllTimeRankingVideos($pdo, $limit, $views_limit, $force_refresh)
getEnhancedSearchVideos($pdo, $search_query, $synonyms, $limit, $sort, $offset, $views_limit, $force_refresh)
getCategoryVideosWithUrls($category, $limit, $period, $force_refresh)
```
### ユーティリティ
```php
sanitizeOutput($str) # HTML出力のサニタイズ
formatDuration($duration_str) # 動画時間の整形
formatViewCount($count) # 再生数の整形(1.2K, 3.5M等)
timeAgo($datetime) # 相対時間表示(○分前等)
getThumbnailUrl($video) # サムネイルURL取得
getVideoUrl($video) # 動画視聴ページURL生成
```
### 多言語
```php
detectUserLanguage() # 言語自動検出
t($key, $fallback, $params) # 翻訳取得
generateLanguageLinks($current_params) # 言語切り替えリンク生成
getCategoryDisplayName($category, $lang) # カテゴリ名翻訳
```
### SEO
```php
generateOptimizedTitle($search, $period, $page)
generateOptimizedDescription($search, $period, $total, $page)
generateCanonicalUrl($search, $period, $page)
generateStructuredData($title, $description, $url, $videos)
```
## パフォーマンス最適化
### キャッシュ戦略(現在無効化中)
```php
define('CACHE_TTL', 60); # 短期キャッシュ(1分)
define('LONG_CACHE_TTL', 3600); # 長期キャッシュ(1時間)
// 完全キャッシュ無効化ヘッダー
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: -1');
```
### 遅延読み込み
- JavaScript: `advanced-lazy-loading.js`
- 画像: `loading=\"lazy\"` 属性
- CSS: 非同期読み込み
## セキュリティ
### 基本対策
```php
// 入力サニタイズ
$search_query = sanitizeSearchQuery($_GET['search']);
// 出力エスケープ
echo sanitizeOutput($video['title']);
// PDOプリペアドステートメント
$stmt = $pdo->prepare(\"SELECT * FROM videos WHERE id = ?\");
$stmt->execute([$id]);
```
### セキュリティヘッダー
```php
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: SAMEORIGIN');
header('X-XSS-Protection: 1; mode=block');
header('Referrer-Policy: strict-origin-when-cross-origin');
header('Permissions-Policy: geolocation=(), microphone=(), camera=()');
```
## 既知の問題・制約
1. **ターミナル使用不可**: すべてFTP経由での作業が必須
2. **キャッシュ無効化**: 現在はリアルタイム更新優先でキャッシュOFF
3. **データベース接続エラー処理**: フォールバックでサンプルデータ表示
## デプロイ手順(FTP限定)
### 1. ファイルアップロード
- FTPクライアント(FileZilla等)を使用
- すべてのPHP/JS/CSSファイルをアップロード
### 2. データベース設定確認
```php
// index.php内の接続情報を確認
$db_host = 'mysql3107.db.sakura.ne.jp';
$db_user = 'nightlifebest_videos';
$db_pass = 'aspireone1A';
$db_name = 'nightlifebest_videos';
```
### 3. パーミッション設定
- PHP実行: 755
- ディレクトリ: 755
- 静的ファイル: 644
### 4. 動作確認
- トップページ: `/`
- ランキング: `/?period=day`
- 検索: `/?search=美女`
- 多言語: `/?lang=en`
## トラブルシューティング
### 言語切り替えがリセットされる
```php
// セッション確認
error_log(\"Session lang: \" . $_SESSION['language']);
// 強制リセット
?reset_lang=true
```
### 月間ランキングが表示されない
```php
// 強制リフレッシュ
getRankingVideos($pdo, 'month', $limit, $dynamic_limit, true);
```
### データベース接続エラー
```php
// エラーログ確認
error_log(\"Database connection error: \" . $e->getMessage());
// サンプルデータモード確認
if (!$pdo) return getSampleData($limit);
```
## 開発時の注意点
### FTP作業専用スクリプトの作成が必要
ターミナルが使えないため、以下の作業はすべてPHPスクリプト化が必要:
- データベースマイグレーション
- バックアップ・リストア
- バッチ処理
- デバッグツール
### 推奨スクリプト例
```php
// db_migrate.php - FTP経由で実行可能
<?php
// SQLファイル読み込み・実行
$sql = file_get_contents('migration.sql');
$pdo->exec($sql);
echo \"Migration completed\";
?>
```
## 連絡先・リソース
- サイトURL: https://ero-video.fun
- データベースホスト: mysql3107.db.sakura.ne.jp
## 更新履歴
- 2025-01: 多言語対応実装
- 2025-01: ランキングシステム強化
- 2025-01: カテゴリ機能追加
- 2025-01: SEO最適化実装
---
このドキュメントは、LLMがプロジェクトを理解し、適切なサポートを提供するための情報源です。
Document
Not stored for this site.