生のテキストを洗練された SEO フレンドリーなコンテンツに変換することは、コンテンツリッチな Web アプリケーションを構築する多くの .NET 開発者にとって日々の課題です。GroupDocs.Rewriter Cloud SDK for .NET は、意味を保ちながら文をリライトする強力な API を提供します。この ASP.NET Core MVC との統合に関するステップバイステップ ガイドでは、ライブラリのセットアップ、認証情報の構成、コントローラ内でのリライトロジックの実装、そして Razor ビューへの結果のレンダリング方法を示します。
ユースケース要件
ユーザー生成の記事、製品説明、またはマーケティングコピーを生成する企業は、手動で編集せずに可読性を向上させる必要があることがよくあります。このようなシナリオの要件は次のとおりです:
- Web フォームから直接リアルタイムでテキストを書き換えます。
- サーバー側で API 資格情報を安全に取り扱います。
- 既存の ASP.NET Core MVC パイプラインとシームレスに統合します。
汎用の文字列‑操作コードはすぐにエラーが起きやすく、スケールしないため、専用のドキュメント書き換えライブラリが不可欠です。
ジョブに適した GroupDocs.Rewriter Cloud SDK for .NET の選択
GroupDocs.Rewriter Cloud SDK for .NET は、複数の言語をサポートし、カスタマイズ可能なリライトモードと高性能処理を提供する REST ベースの API を提供します。そのユースケースに合致する主な機能は次のとおりです:
- RewriteModeEnum.Rewrite - 入力テキストの自然言語リライトを生成します。
- DI‑friendly client - ASP.NET Core のサービスコンテナにシングルトンとして登録できます。
- Strong typing and async support - 現代の .NET 非同期パターンに自然に適合します。
ステップバイステップガイドで ASP.NET Core MVC との統合方法を示し、これらの機能が要件にどのようにマッピングされるかを解説しています。詳細な API 情報については、公式ドキュメント と API リファレンス をご覧ください。
ASP.NET Core MVC と統合するためのステップバイステップ ガイドの実装
このステップバイステップガイドは、ASP.NET Core MVC との統合手順を、必要な構成ステップごとに案内します。
SDK パッケージをインストールする
プロジェクトに NuGet パッケージを追加します。
dotnet add package GroupDocs.Rewriter-Cloud
バイナリはダウンロードページからもダウンロードできます。
リライタ資格情報の構成を追加
AppSid と AppKey を構成に配置します。以下のスニペットは簡単のためメモリ内に追加します。
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
DI に Rewriter API クライアントを登録する
SDK クライアントはシングルトンとして登録されているため、コントローラーに注入できます。
builder.Services.Configure<RewriterSettings>(builder.Configuration.GetSection("GroupDocsRewriter"));
builder.Services.AddSingleton<IRewriterApi>(sp =>
{
var settings = sp.GetRequiredService<IOptions<RewriterSettings>>().Value;
var config = new Configuration
{
AppSid = settings.AppSid,
AppKey = settings.AppKey
};
return new RewriterApi(config);
});
MVC コントローラとビュー モデルを作成する
コントローラは元のテキストを受け取り、Rewriter API を呼び出し、書き換えられた結果を返します。
public class RewriterController : Controller
{
private readonly IRewriterApi _rewriterApi;
public RewriterController(IRewriterApi rewriterApi)
{
_rewriterApi = rewriterApi;
}
[HttpGet]
public IActionResult Index()
{
return View(new RewriterViewModel());
}
[HttpPost]
public async Task<IActionResult> Index(RewriterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var rewriteRequest = new RewriteRequest
{
Text = model.InputText,
Language = "en",
TargetLanguage = "en",
RewriteMode = RewriteModeEnum.Rewrite
};
RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);
model.OutputText = response?.Result?.Text ?? string.Empty;
return View(model);
}
}
付属のビュー モデルは入力文字列と出力文字列を保持します。
public class RewriterViewModel
{
[Required]
[Display(Name = "Original Text")]
public string InputText { get; set; } = string.Empty;
[Display(Name = "Rewritten Text")]
public string OutputText { get; set; } = string.Empty;
}
テキスト入力と出力のための Razor ビューを構築する
Razor ページはシンプルなフォームを表示し、利用可能な場合は書き換えられたテキストを表示します。
@model RewriterViewModel
@{
ViewData["Title"] = "Text Rewriter";
}
<h2>@ViewData["Title"]</h2>
<form asp-action="Index" method="post" class="form-horizontal">
<div class="form-group">
<label asp-for="InputText" class="control-label"></label>
<textarea asp-for="InputText" class="form-control" rows="6"></textarea>
<span asp-validation-for="InputText" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Rewrite</button>
</div>
</form>
@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
<hr />
<h4>Rewritten Text</h4>
<textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
ASP.NET Core MVCでのドキュメントリライトの完全動作例
以下の例には、ソリューションを実行するために必要な完全なソースファイルが含まれています。
// ---------------------------------------------------
// Program.cs
// ---------------------------------------------------
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using GroupDocs.Rewriter.Cloud.Sdk.Api;
using GroupDocs.Rewriter.Cloud.Sdk.Client;
using GroupDocs.Rewriter.Cloud.Sdk.Model.Requests;
using GroupDocs.Rewriter.Cloud.Sdk.Model;
using System.Threading.Tasks;
var builder = WebApplication.CreateBuilder(args);
// Add configuration for GroupDocs Rewriter credentials
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
builder.Services.Configure<RewriterSettings>(builder.Configuration.GetSection("GroupDocsRewriter"));
// Register GroupDocs Rewriter API client in DI
builder.Services.AddSingleton<IRewriterApi>(sp =>
{
var settings = sp.GetRequiredService<IOptions<RewriterSettings>>().Value;
var config = new Configuration
{
AppSid = settings.AppSid,
AppKey = settings.AppKey
};
return new RewriterApi(config);
});
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Rewriter}/{action=Index}/{id?}");
app.Run();
// ---------------------------------------------------
// RewriterSettings.cs
// ---------------------------------------------------
public class RewriterSettings
{
public string AppSid { get; set; } = string.Empty;
public string AppKey { get; set; } = string.Empty;
}
// ---------------------------------------------------
// Models/RewriterViewModel.cs
// ---------------------------------------------------
using System.ComponentModel.DataAnnotations;
public class RewriterViewModel
{
[Required]
[Display(Name = "Original Text")]
public string InputText { get; set; } = string.Empty;
[Display(Name = "Rewritten Text")]
public string OutputText { get; set; } = string.Empty;
}
// ---------------------------------------------------
// Controllers/RewriterController.cs
// ---------------------------------------------------
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
public class RewriterController : Controller
{
private readonly IRewriterApi _rewriterApi;
public RewriterController(IRewriterApi rewriterApi)
{
_rewriterApi = rewriterApi;
}
[HttpGet]
public IActionResult Index()
{
return View(new RewriterViewModel());
}
[HttpPost]
public async Task<IActionResult> Index(RewriterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Build request for the Rewriter API
var rewriteRequest = new RewriteRequest
{
Text = model.InputText,
Language = "en", // source language
TargetLanguage = "en", // target language (same for rewriting)
RewriteMode = RewriteModeEnum.Rewrite // choose rewrite mode
};
// Call the API
RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);
// Populate the view model with the rewritten text
model.OutputText = response?.Result?.Text ?? string.Empty;
return View(model);
}
}
// ---------------------------------------------------
// Views/Rewriter/Index.cshtml
// ---------------------------------------------------
@model RewriterViewModel
@{
ViewData["Title"] = "Text Rewriter";
}
<h2>@ViewData["Title"]</h2>
<form asp-action="Index" method="post" class="form-horizontal">
<div class="form-group">
<label asp-for="InputText" class="control-label"></label>
<textarea asp-for="InputText" class="form-control" rows="6"></textarea>
<span asp-validation-for="InputText" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Rewrite</button>
</div>
</form>
@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
<hr />
<h4>Rewritten Text</h4>
<textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
注意: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや設定値を実際の環境に合わせて更新し、必要な依存関係がすべて正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメントをご参照いただくか、サポートチームにお問い合わせください。
cURL を使用した REST API 経由のドキュメント書き換えの実行
以下は、GroupDocs Rewriter REST エンドポイントを使用して同じ書き換え操作を実行する簡単な cURL ワークフローです。
認証してアクセストークンを取得
curl -X POST "https://api.groupdocs.cloud/v1/auth/token" \
-H "Content-Type: application/json" \
-d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
レスポンスは、今後の呼び出しで使用する access_token を返します。
ソーステキストをアップロード(大きなファイルの場合はオプション)
curl -X POST "https://api.groupdocs.cloud/v1/storage/file/upload" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@input.txt"
リライト操作を実行する
curl -X POST "https://api.groupdocs.cloud/v1/rewriter/rewrite" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Your original text goes here.",
"language": "en",
"targetLanguage": "en",
"rewriteMode": "Rewrite"
}'
JSON のレスポンスには、result.text フィールドに書き換えられたテキストが含まれています。
結果をダウンロード (ファイルとして保存した場合)
curl -X GET "https://api.groupdocs.cloud/v1/storage/file/download?path=output.txt" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o rewritten.txt
リクエスト パラメータとレスポンス フォーマットの詳細については、公式 API ドキュメントをご覧ください。
最後の考え
GroupDocs.Rewriter Cloud SDK for .NET を ASP.NET Core MVC プロジェクトに統合するのは、このステップバイステップ ガイドに従えば簡単です。ライブラリは自然言語のリライトという重い処理を担当し、UI とビジネスロジックに集中できるようにします。AppSid と AppKey を安全に保管し、評価には一時ライセンスを使用し、本番環境ではフルライセンスにアップグレードすることを忘れないでください。コードと cURL のサンプルが手元にあれば、任意の .NET Web アプリケーションにインテリジェントなテキストリライト機能を追加できます。
よくある質問
ASP.NET Core MVC と統合するステップバイステップ ガイドは、API のエラー応答をどのように処理しますか?
コントローラの例では、API を呼び出す前に ModelState.IsValid をチェックし、RewriteResponse を取得します。API がエラーを返した場合、response オブジェクトは null となり、ビューには空の出力が表示されます。詳細なエラー処理については、公式ドキュメント を参照してください。
プレーンテキスト以外の DOCX や PDF などのドキュメントも同じアプローチで書き換えることはできますか?
はい。Rewriter API はサポートされている形式から抽出された生テキストを受け付けます。まず GroupDocs.Parser または GroupDocs.Conversion を使用してテキストを抽出し、取得したテキストを書き換えエンドポイントに渡すことができます。これらの SDK はすべて GroupDocs 製品ファミリーに掲載されています。
高トラフィックのウェブサイトで rewrite 操作を非同期で実行することは可能ですか?
もちろんです。コントローラは await _rewriterApi.RewriteAsync(...) を使用しており、完全に非同期であり、ASP.NET Core の非同期パイプラインと共にスケールします。これは、ASP.NET Core MVC との統合に関するステップバイステップ ガイドで示されたパターンに適合しています。
テスト用の一時ライセンスはどこで取得できますか?
一時ライセンスは一時ライセンスページから入手できます。購入を確定せずに SDK を評価できます。
