---
title: KurocoでRSSを取得するにはどうしたら良いですか？
description: バッチ処理で定期的にRSSを取得し、Kurocoのコンテンツに追加or更新することで対応が可能です。
category: howto
---

import StructuredDataFaqs from '@site/src/components/StructuredDataFaqs';

<StructuredDataFaqs faqs={[
    { question: "KurocoでRSSを取得するにはどうしたら良いですか？", answer: "バッチ処理で定期的にRSSを取得し、Kurocoのコンテンツに追加or更新することで対応が可能です。" }
]} />

バッチ処理で定期的にRSSを取得し、Kurocoのコンテンツに追加or更新することで対応が可能です。

### RSSフィードの取得
バッチ処理に次のようなSmartyコードを記述すると、RSSフィードの内容を連想配列で取得できます。

```smarty
{get_file var='rss_xml' url='https://www.diverta.co.jp/RSS.rdf' save=false}{* RSSの内容を取得 *}
{xmltojson var='rss_json' xml=$rss_xml}{* XMLをJSONに変換 *}
{assign var='rss_feed' value=$rss_json|@json_decode}{* JSONを連想配列に変換 *}
```

:::tip
取得・変換したRSSの内容は以下の記述を追加してテストすることで確認できます。  
`test:{$rss_feed|@debug_print_var}`
:::

### Kurocoコンテンツの更新
複数のコンテンツを一括で更新する場合、
bulk_upsert APIを使うとリクエスト数・処理時間の削減が出来ますので、必要に応じてご利用ください。  

また、id_reference_allow_list のパラメータに設定した項目名をリクエストボディのtopics_idのフィールドに指定すると、
topics_idの代わりに任意の項目をキーとしてコンテンツを追加・更新できます。  
例えば、以下の例ではext_1が同じコンテンツが存在する場合、更新として処理されます。

```smarty
{* RSSデータをKurocoコンテンツのフォーマットに変換 *}
{assign_array var='body'      values=''}
{assign_array var='body.list' values=''}
{foreach from=$rss_feed.entry item='entry'}
    {assign_array var='topics' values=''}
    {assign       var='topics.topics_id' value='ext_1'}
    {assign       var='topics.subject'  value=$entry.title}
    {assign       var='topics.ext_1'    value=$entry.id}
    {assign       var='topics.ext_2'    value=$entry.updated}
    {assign var='body.list.' value=$topics}
{/foreach}

{* コンテンツの一括更新 *}
{api_internal
    var='response'
    status_var='status'
    endpoint='/rcms-api/1/topics/bulk_upsert'
    method='POST'
    queries=$body
    member_id=1}
```

## 関連ドキュメント
- [bulk_upsert APIを利用して、任意のCSVファイルをコンテンツにインポートする](/ja/docs/tutorials/bulk-upload-using-api/)
- [カスタム処理からKurocoのAPIを呼び出せますか？ > 例2. POSTメソッド (認証あり)](/ja/docs/faq/how-to-request-kuroco-api-from-smarty-function/#%E4%BE%8B2-post%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89-%E8%AA%8D%E8%A8%BC%E3%81%82%E3%82%8A)
- [カスタム処理でデバッグを目的としたログを出力できますか？](/ja/docs/faq/can-the-original-process-output-logs-for-debugging-purposes/)