🚀 Content Core
Content Core は強力なAIベースのコンテンツ抽出および処理プラットフォームです。あらゆるソースからクリーンで構造化されたコンテンツを生成します。統一されたインターフェースと複数の統合オプションを通じて、ウェブサイトからのテキスト抽出、ビデオの文字起こし、ドキュメントの処理、AIによる要約生成などを行うことができます。
🚀 クイックスタート
content-core
をPythonプロジェクトに簡単に統合して、様々なソースからコンテンツを抽出、クリーニング、要約することができます。
import content_core as cc
result = await cc.extract("https://example.com/article")
summary = await cc.summarize_content(result, context="explain to a child")
✨ 主な機能
- 🎯 インテリジェントな自動検出:コンテンツの種類と利用可能なサービスに基づいて、最適な抽出方法を自動的に選択します。
- 🔧 スマートなエンジン選択:
- URL:Firecrawl → Jina → BeautifulSoupのフォールバックチェーン
- ドキュメント:Docling → 拡張されたPyMuPDF → シンプルな抽出のフォールバック
- メディア:OpenAI Whisperによる文字起こし
- 画像:複数のエンジンをサポートするOCR
- 📊 高度なPDF処理:品質フラグ、テーブル検出、数式のオプションOCRを備えた高度なPyMuPDFエンジン
- 🌍 複数の統合方法:CLI、Pythonライブラリ、MCPサーバー、Raycast拡張機能、macOSサービス
- ⚡ ゼロインストールオプション:
uvx
を使用することで、インストールなしですぐにアクセスできます。
- 🧠 AIによる処理:コンテンツのクリーニングと要約のためのLLM統合
- 🔄 非同期処理:
asyncio
を使用して効率的な処理を実現します。
📦 インストール
pip
を使用してContent Coreをインストールします。
pip install content-core
pip install content-core[docling]
pip install content-core
pip install content-core[docling]
あるいは、ローカルで開発する場合は、以下の手順を実行します。
git clone https://github.com/lfnovo/content-core
cd content-core
uv sync
💻 使用例
基本的な使用法
import content_core as cc
result = await cc.extract("https://example.com/article")
cleaned_text = await cc.clean("...messy text with [brackets] and extra spaces...")
summary = await cc.summarize_content("long article text", context="explain to a child")
高度な使用法
import asyncio
from content_core.extraction import extract_content
async def main():
text_data = await extract_content({"content": "This is my sample text content."})
print(text_data)
url_data = await extract_content({"url": "https://www.example.com"})
print(url_data)
video_data = await extract_content({"file_path": "path/to/your/video.mp4"})
print(video_data)
md_data = await extract_content({"file_path": "path/to/your/document.md"})
print(md_data)
doc_data = await extract_content({
"file_path": "path/to/your/document.pdf",
"document_engine": "docling",
"output_format": "html"
})
url_data = await extract_content({
"url": "https://www.example.com",
"url_engine": "firecrawl"
})
print(doc_data)
if __name__ == "__main__":
asyncio.run(main())
(詳細な例については、src/content_core/notebooks/run.ipynb
を参照してください。)
📚 ドキュメント
Content Coreライブラリの使用方法、AIモデルの設定やカスタマイズの詳細については、使用ドキュメント を参照してください。
🔧 技術詳細
MCPサーバー統合
Content Coreには、Model Context Protocol (MCP) サーバーが含まれており、Claude Desktopや他のMCP互換アプリケーションとのシームレスな統合を可能にします。MCPサーバーは、標準化されたプロトコルを通じてContent Coreの強力な抽出機能を公開します。
pip install content-core
uvx --from "content-core" content-core-mcp
claude_desktop_config.json
に追加します。
{
"mcpServers": {
"content-core": {
"command": "uvx",
"args": [
"--from",
"content-core",
"content-core-mcp"
]
}
}
}
詳細なセットアップ手順、設定オプション、および使用例については、MCPドキュメント を参照してください。
拡張されたPDF処理
Content Coreは、科学文献や複雑なPDFに対して大幅な改善を加えた最適化されたPyMuPDF抽出エンジンを備えています。
主な改善点
- 🔬 数式抽出:拡張された品質フラグにより、
<!-- formula-not-decoded -->
プレースホルダーが排除されます。
- 📊 自動テーブル検出:テーブルがLLMで消費可能なマークダウン形式に変換されます。
- 🔧 品質の高いテキストレンダリング:より良い合字、空白、および画像テキストの統合
- ⚡ オプションのOCR強化:数式が多いページに対する選択的なOCR (Tesseractが必要)
科学文献のための設定
数式が多い文書の場合は、OCR強化を有効にします。
extraction:
pymupdf:
enable_formula_ocr: true
formula_threshold: 3
ocr_fallback: true
from content_core.config import set_pymupdf_ocr_enabled
set_pymupdf_ocr_enabled(True)
OCR強化の要件
brew install tesseract
sudo apt-get install tesseract-ocr
注:OCRはオプションです。追加の設定なしで自動的に改善されたPDF抽出が行われます。
macOSサービス統合
Content Coreは、macOS Finderとの強力な右クリック統合を提供し、インストールなしで任意のファイルからコンテンツを抽出および要約することができます。最大限の柔軟性のために、クリップボードまたはTextEdit出力を選択できます。
利用可能なサービス
異なるワークフローのための4つの便利なサービスを作成します。
- コンテンツを抽出 → クリップボード:即座に貼り付けるためのクイックコピー
- コンテンツを抽出 → TextEdit:使用前に確認する
- コンテンツを要約 → クリップボード:クイックな要約のコピー
- コンテンツを要約 → TextEdit:見出し付きの整形された要約
クイックセットアップ
-
uvをインストール (まだインストールされていない場合):
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Automatorを使用してサービスを手動で作成 (5分でセットアップ)
使用方法
Finderでサポートされている任意のファイルを右クリック → サービス → オプションを選択します。
- PDF、Wordドキュメント:即座にテキストを抽出
- ビデオ、オーディオファイル:自動的に文字起こし
- 画像:OCRによるテキスト認識
- ウェブコンテンツ:クリーンなテキストを抽出
- 複数のファイル:バッチ処理をサポート
特徴
- ゼロインストール処理:
uvx
を使用して分離された実行を行います。
- 複数の出力オプション:クリップボードまたはTextEdit表示
- システム通知:完了時の視覚的なフィードバック
- 幅広い形式サポート:20種類以上のファイル形式をサポート
- バッチ処理:一度に複数のファイルを処理
- キーボードショートカット:上級ユーザー向けに割り当て可能なホットキー
コピーアンドペースト可能なスクリプトを含む完全なセットアップ手順については、macOSサービスドキュメント を参照してください。
Raycast拡張機能
Content Coreは、URLとファイルパスの両方をシームレスに処理するスマートな自動検出機能を備えた強力なRaycast拡張機能を提供します。Raycastインターフェースから直接コンテンツを抽出および要約し、アプリケーションを切り替える必要がありません。
クイックセットアップ
Raycastストアから (近日公開):
- Raycastを開き、「Content Core」を検索します。
luis_novo
による拡張機能をインストールします。
- 設定でAPIキーを構成します。
手動インストール:
- リポジトリから拡張機能をダウンロードします。
- Raycast → 「拡張機能をインポート」を開きます。
raycast-content-core
フォルダを選択します。
コマンド
- 🔍 コンテンツを抽出:完全なインターフェースを備えたスマートなURL/ファイル検出
- リアルタイムでURLとファイルパスを自動検出
- 複数の出力形式 (テキスト、JSON、XML)
- ファイルのドラッグアンドドロップサポート
- メタデータ付きのリッチな結果ビュー
- 📝 コンテンツを要約:カスタマイズ可能なスタイルでAIによる要約
- 9種類の異なる要約スタイル (箇条書き、エグゼクティブサマリーなど)
- 視覚的なフィードバックでソースタイプを自動検出
- ワンクリックでのスニペット作成とクイックリンク
- ⚡ クイック抽出:即座にクリップボードに抽出
- 入力 → Tab → ソースを貼り付け → Enter
- UIなし、コマンドバーから直接動作
- クイックワークフローに最適
特徴
- スマートな自動検出:URLとファイルパスを即座に認識
- ゼロインストール:
uvx
を使用してContent Coreを実行
- リッチな統合:キーボードショートカット、クリップボードアクション、Raycastスニペット
- すべてのファイルタイプ:ドキュメント、ビデオ、オーディオ、画像、アーカイブ
- 視覚的なフィードバック:アイコンでリアルタイムのタイプ検出
詳細なセットアップ、設定、および使用例については、Raycast拡張機能ドキュメント を参照してください。
Langchainとの連携
Langchain フレームワークと連携するユーザー向けに、content-core
は一連の互換性のあるツールを公開しています。これらのツールは src/content_core/tools
ディレクトリにあり、Langchainのエージェントやチェーン内で直接 content-core
の抽出、クリーニング、要約機能を利用することができます。
from content_core.tools import extract_content_tool, cleanup_content_tool, summarize_content_tool
from langchain.agents import initialize_agent, AgentType
tools = [extract_content_tool, cleanup_content_tool, summarize_content_tool]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("Extract the content from https://example.com and then summarize it.")
特定のツールの実装と使用方法の詳細については、src/content_core/tools
のソースコードを参照してください。
Docling統合
Content Coreは、豊富なドキュメント形式 (PDF、DOCX、PPTX、XLSX、マークダウン、AsciiDoc、HTML、CSV、画像) に対して、オプションのDoclingベースの抽出エンジンをサポートしています。
Doclingの有効化
Doclingは、ドキュメントを解析する際のデフォルトのエンジンではありません。使用しない場合は、エンジンを「simple」に設定する必要があります。
設定ファイルを介して
cc_config.yaml
またはカスタム設定で、以下のように設定します。
extraction:
document_engine: docling
url_engine: auto
docling:
output_format: markdown
Pythonでプログラム的に
from content_core.config import set_document_engine, set_url_engine, set_docling_output_format
set_document_engine("docling")
set_url_engine("firecrawl")
set_docling_output_format("html")
result = await cc.extract("document.pdf")
設定
設定 (外部サービスのAPIキー、ログレベルなど) は、環境変数または .env
ファイルを通じて管理できます。python-dotenv
を使用して自動的に読み込まれます。
例の .env
ファイル:
OPENAI_API_KEY=your-key-here
GOOGLE_API_KEY=your-key-here
# エンジン選択 (オプション)
CCORE_DOCUMENT_ENGINE=auto # auto, simple, docling
CCORE_URL_ENGINE=auto # auto, simple, firecrawl, jina
環境変数を使用したエンジン選択
MCPサーバーやRaycast拡張機能などのデプロイメントシナリオでは、環境変数を使用して抽出エンジンをオーバーライドすることができます。
CCORE_DOCUMENT_ENGINE
:ドキュメントエンジンを強制設定 (auto
, simple
, docling
)
CCORE_URL_ENGINE
:URLエンジンを強制設定 (auto
, simple
, firecrawl
, jina
)
これらの変数は、設定ファイルの設定よりも優先され、異なるデプロイメントシナリオに対して明示的な制御を提供します。
カスタムプロンプトテンプレート
Content Coreでは、コンテンツ処理のためのカスタムプロンプトテンプレートを定義することができます。デフォルトでは、ライブラリは prompts
ディレクトリにある組み込みのプロンプトを使用します。ただし、独自のプロンプトテンプレートを作成し、専用のディレクトリに保存することができます。カスタムプロンプトの場所を指定するには、.env
ファイルまたはシステム環境で PROMPT_PATH
環境変数を設定します。
カスタムプロンプトパスを含む例の .env
ファイル:
OPENAI_API_KEY=your-key-here
GOOGLE_API_KEY=your-key-here
PROMPT_PATH=/path/to/your/custom/prompts
プロンプトテンプレートが要求されると、Content Coreはまず PROMPT_PATH
で指定されたカスタムディレクトリを検索します (設定されていて存在する場合)。テンプレートがそこで見つからない場合は、デフォルトの組み込みプロンプトにフォールバックします。これにより、特定のプロンプトをオーバーライドしながら、他のプロンプトにはデフォルトのものを使用することができます。
開発
開発環境をセットアップするには、以下の手順を実行します。
git clone <repository-url>
cd content-core
uv venv
source .venv/bin/activate
uv sync --group dev
make test
make lint
make help
📄 ライセンス
このプロジェクトは MITライセンス の下でライセンスされています。詳細については LICENSE ファイルを参照してください。
コントリビューション
コントリビューションは大歓迎です!始める方法の詳細については、コントリビューションガイド を参照してください。