{"id":5250,"date":"2026-08-30T12:10:41","date_gmt":"2026-08-30T03:10:41","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/turboagent-howto-2\/"},"modified":"2026-08-30T12:10:43","modified_gmt":"2026-08-30T03:10:43","slug":"turboagent-howto","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/server-tech\/minecraft\/turboagent-howto\/","title":{"rendered":"How to Use the Paper Plugin &#8220;TurboAgent&#8221;"},"content":{"rendered":"<p>TurboAgent (changed from twbridge on 12\/7) is a plugin that allows you to control the <br \/>\nMinecraft Java Edition (Paper server) from the Scratch-compatible block editor, TurboWarp.<\/p>\n<p>Its purpose is to reproduce the familiar &#8220;block coding \u00d7 agent operation&#8221; from Minecraft: Education Edition (MakeCode) <br \/>\nin a Java Edition Paper environment.<\/p>\n<h2>Preparing the Paper Server and Installing the Plugin<\/h2>\n<ol>\n<li>Prepare a Paper server<br \/>\nDownload the .jar file for the corresponding version from the official Paper website, launch it for the first time, and complete the basic setup.<\/li>\n<li>Place twbridge.jar into the plugins folder\n<ul>\n<li>Hangar (Official Distribution Page)<\/li>\n<li>GitHub Repository<\/li>\n<\/ul>\n<\/li>\n<li>Start the server<br \/>\nAfter starting, the plugins\/twbridge\/ folder and config.yml will be automatically generated.<\/li>\n<li>The following message will be output to the console.<\/li>\n<\/ol>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">&#x5B;TWBridge] WebSocket listening on ws:\/\/xx.xxx.xxx.xxx:8787\n&#x5B;TWBridge] Extension server running at http:\/\/xxx.xxx.xxx.xxx:8788\/tw\/twbridge.js<\/pre>\n<p>These two URLs will be used later on the TurboWarp side.<\/p>\n<h2>Configuring config.yml and Pairing<\/h2>\n<h3>Full Example of config.yml<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">ws:\n  bindAddress: &quot;0.0.0.0&quot;\n  port: 8787\n  requirePairing: true\n  maxMsgPerSecond: 30\n  maxMsgBytes: 8192\n  originWhitelist:\n    - &quot;*&quot;\nhttp:\n  enabled: true\n  bindAddress: &quot;0.0.0.0&quot;\n  port: 8788\n  path: &quot;\/tw\/twbridge.js&quot;\n  wsAddress: &quot;127.0.0.1&quot;\n  corsAllowOrigins:\n    - &quot;*&quot;\n  cacheSeconds: 60\npairing:\n  enabled: true\n  windowSeconds: 60\ndebug: false\n<\/pre>\n<h3>Description of config.yml Items<\/h3>\n<table>\n<thead>\n<tr>\n<th>Section<\/th>\n<th>Key<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>ws<\/strong><\/td>\n<td><code>bindAddress<\/code><\/td>\n<td>WebSocket listen address. <code>0.0.0.0<\/code> allows all NICs.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>port<\/code><\/td>\n<td>WebSocket listen port (specified in TurboWarp).<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>requirePairing<\/code><\/td>\n<td>Requires pairing operation before connection.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>maxMsgPerSecond<\/code><\/td>\n<td>Maximum number of messages sent per second.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>maxMsgBytes<\/code><\/td>\n<td>Maximum byte size per message.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>originWhitelist<\/code><\/td>\n<td>Allowed connection origins. <code>\"*\"<\/code> allows all.<\/td>\n<\/tr>\n<tr>\n<td><strong>http<\/strong><\/td>\n<td><code>enabled<\/code><\/td>\n<td>Enables the HTTP server that distributes the extension JS.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>port<\/code><\/td>\n<td>Port number for the extension distribution HTTP server.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>path<\/code><\/td>\n<td>Distribution path. Specify this URL in TurboWarp.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>wsAddress<\/code><\/td>\n<td>Default WebSocket address guided by the extension.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>corsAllowOrigins<\/code><\/td>\n<td>CORS allowed origins.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>cacheSeconds<\/code><\/td>\n<td>Cache duration in seconds for the extension JS.<\/td>\n<\/tr>\n<tr>\n<td><strong>pairing<\/strong><\/td>\n<td><code>enabled<\/code><\/td>\n<td>Enable\/disable the pairing function.<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>windowSeconds<\/code><\/td>\n<td>Acceptance window duration in seconds after the <code>\/twbridge pair<\/code> command.<\/td>\n<\/tr>\n<tr>\n<td><strong>debug<\/strong><\/td>\n<td>\u2014<\/td>\n<td>Enables debug log output.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How to Use WebSocket Pairing<\/h2>\n<ol>\n<li>Enable pairing.<br \/>\nEnsure that <code>requirePairing: true<\/code> and <code>pairing.enabled: true<\/code> are specified in the settings above.<\/li>\n<li>Run the following in the Paper server console:<br \/>\n<code>\/twbridge pair<\/code><br \/>\nExample:<br \/>\n<code>[TWBridge] Pairing window opened for 60 seconds.<\/code><\/li>\n<li>Execute the &#8220;Connect&#8221; block from TurboWarp within this 60-second window.<br \/>\nIf successful, the following will appear on the Paper side:<br \/>\n[TWBridge] New client paired: 192.168.0.xxx<\/li>\n<li>Devices that have been successfully paired once will automatically be allowed to connect from then on.<br \/>\nTo add a new device, run \/twbridge pair again.<\/li>\n<li>If you want to disable pairing for development or testing, configure it as follows to allow immediate connection without authentication. (Use only for testing within a LAN.)<\/li>\n<\/ol>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">ws:\n    requirePairing: false\npairing:\n    enabled: false<\/pre>\n<h2>Loading Custom JS in TurboWarp Desktop<\/h2>\n<ol>\n<li>Launch TurboWarp Desktop.<\/li>\n<li>Select \u2699\ufe0f (gear icon) at the bottom right \u2192 &#8220;Add Extension&#8221; \u2192 &#8220;Specify URL&#8221;.<\/li>\n<li>Enter the extension URL displayed when starting the Paper server.<br \/>\n<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\">\n<tbody>\n<tr>\n<td style=\"width: 100%;\">\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">http:\/\/192.168.0.xxx:8788\/tw\/twbridge.js<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<li><span style=\"font-size: 1.4rem;\">If blocks in the &#8220;twbridge&#8221; or &#8220;Minecraft&#8221; categories are added, the loading is successful.<\/span><\/li>\n<\/ol>\n<h2>How to Use Block Code<\/h2>\n<h3 data-start=\"3457\" data-end=\"3474\">Basic Configuration from Connection to Disconnection<\/h3>\n<p data-start=\"3476\" data-end=\"3503\">You can execute commands by assembling blocks like this.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Send command (say Hello from twbridge!)]\n&#x5B;Disconnect]<\/pre>\n<p>In the Paper server chat,<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">&#x5B;Server] Hello from twbridge!<\/pre>\n<p>If this appears, communication is successful.<\/p>\n<h3>WebSocket Connection and Disconnection<\/h3>\n<p data-start=\"163\" data-end=\"317\"><strong data-start=\"163\" data-end=\"169\">Purpose<\/strong>: Connects TurboWarp Desktop to twbridge on the Paper server.<br data-start=\"214\" data-end=\"217\" \/><strong data-start=\"217\" data-end=\"223\">Prerequisite<\/strong>: Matches <code data-start=\"224\" data-end=\"236\">ws.port<\/code> in <code data-start=\"239\" data-end=\"248\">config.yml<\/code> (e.g., 8787). If <code data-start=\"263\" data-end=\"285\">requirePairing: true<\/code>, run <code data-start=\"293\" data-end=\"309\">\/twbridge pair<\/code> first.<\/p>\n<h3 data-start=\"319\" data-end=\"339\">Example: Connect \u2192 Check Status \u2192 Disconnect<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Check if connected]\n&#x5B;Disconnect]\n<\/pre>\n<ul data-start=\"409\" data-end=\"525\">\n<li data-start=\"409\" data-end=\"456\">\n<p data-start=\"411\" data-end=\"456\">For &#8220;Connect&#8221;, enter <code data-start=\"420\" data-end=\"446\">ws:\/\/&lt;Server IP or Host&gt;:&lt;Port&gt;<\/code>.<\/p>\n<\/li>\n<li data-start=\"457\" data-end=\"499\">\n<p data-start=\"459\" data-end=\"499\">&#8220;Check if connected&#8221; is a boolean reporter (display method depends on the extension).<\/p>\n<\/li>\n<li data-start=\"500\" data-end=\"525\">\n<p data-start=\"502\" data-end=\"525\">Close with &#8220;Disconnect&#8221; once communication testing is finished.<\/p>\n<\/li>\n<\/ul>\n<h3>Sending Minecraft Commands<\/h3>\n<p data-start=\"551\" data-end=\"611\"><strong data-start=\"551\" data-end=\"557\">Purpose<\/strong>: Executes arbitrary Minecraft commands on the Paper server side.<br data-start=\"591\" data-end=\"594\" \/><strong data-start=\"594\" data-end=\"600\">Prerequisite<\/strong>: Must be connected.<\/p>\n<h3 data-start=\"613\" data-end=\"643\">Example: Run <code data-start=\"619\" data-end=\"625\">\/say<\/code> (Minimal example of Connect \u2192 Send \u2192 Disconnect)<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Send command (say Hello from twbridge!)]\n&#x5B;Disconnect]\n<\/pre>\n<p data-start=\"737\" data-end=\"764\">Success if the following appears in the Paper server chat.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Server] Hello from twbridge!\n<\/pre>\n<ul data-start=\"812\" data-end=\"910\">\n<li data-start=\"812\" data-end=\"856\">\n<p data-start=\"814\" data-end=\"856\">Commands other than <code data-start=\"814\" data-end=\"820\">\/say<\/code> may yield different results depending on server settings and permissions.<\/p>\n<\/li>\n<li data-start=\"857\" data-end=\"910\">\n<p data-start=\"859\" data-end=\"910\">The general procedure is the same when sending multiple commands sequentially (operational techniques such as waiting are omitted in this article).<\/p>\n<\/li>\n<\/ul>\n<h3>Spawning and Despawning Agents<\/h3>\n<p data-start=\"939\" data-end=\"999\"><strong data-start=\"939\" data-end=\"945\">Purpose<\/strong>: Summons or dismisses an agent (working robot) near the player.<br data-start=\"979\" data-end=\"982\" \/><strong data-start=\"982\" data-end=\"988\">Prerequisite<\/strong>: Must be connected.<\/p>\n<h3 data-start=\"1001\" data-end=\"1031\">Example: Summon Agent \u2192 Check \u2192 Dismiss \u2192 Disconnect<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Summon agent]\n&#x5B;Dismiss agent]\n&#x5B;Disconnect]\n<\/pre>\n<h3>Moving the Agent<\/h3>\n<p>v1.1.1: Added Up\/Down<\/p>\n<p>Moves the agent forward, backward, left, right, up, or down by 1 block units.<br \/>\nThe distance (number of blocks) can be specified numerically.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Summon agent]\n&#x5B;Move agent (forward) (3) blocks]\n&#x5B;Move agent (right) (2) blocks]\n&#x5B;Move agent (up) (1) blocks]\n&#x5B;Disconnect]\n<\/pre>\n<ul>\n<li>Movement directions can be chosen from &#8220;Forward, Backward, Right, Left, Up, Down&#8221;.<\/li>\n<li>Distance can be adjusted by changing the number of blocks.<\/li>\n<li>The direction depends on the agent&#8217;s rotation orientation.<\/li>\n<\/ul>\n<h3>Rotating the Agent<\/h3>\n<p>v1.1.0: Added Rotation Feature<\/p>\n<p>Rotates the agent left or right on the spot.<br \/>\nRotation is in 90-degree increments and is reflected in subsequent movement directions.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Summon agent]\n&#x5B;Rotate agent (right)]\n&#x5B;Move agent (forward) (2) blocks]\n&#x5B;Disconnect]\n<\/pre>\n<ul>\n<li>You can choose from &#8220;Right&#8221; or &#8220;Left&#8221;.<\/li>\n<li>Rotation updates the agent&#8217;s internal orientation.<\/li>\n<li>This changes the direction of &#8220;Move forward&#8221;.<\/li>\n<\/ul>\n<h3>Enabling Agent Inventory Slots<\/h3>\n<p>Enables a slot for the agent.<br \/>\nThis puts it in a state where it can hold items.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Summon agent]\n&#x5B;Enable agent slot &amp;amp;amp;amp;lt;number&amp;amp;amp;amp;gt;]\n&#x5B;Disconnect]\n<\/pre>\n<ul>\n<li>Specifies the slot number for the agent to hold in its hand.<\/li>\n<li>Blocks held in the hand can be placed using the block placement code block.<\/li>\n<\/ul>\n<h3>Setting Blocks in Agent Inventory Slots<\/h3>\n<p data-start=\"1154\" data-end=\"1185\">Sets the specified block in the agent&#8217;s slot.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Connect (ws:\/\/192.168.0.xxx:8787)]\n&#x5B;Summon agent]\n&#x5B;Enable agent slot]\n&#x5B;Set slot (1) to block (minecraft:stone)]\n&#x5B;Disconnect]\n<\/pre>\n<ul>\n<li>Slot numbers start from 1 (with a maximum of 27).<\/li>\n<li>Specify the block ID (e.g., stone, glass) as a string.<\/li>\n<\/ul>\n<h3>Agent Block Placement (Forward, Backward, Left, Right, Up, Down)<\/h3>\n<p>v1.1.0: Added Block Placement Feature<\/p>\n<p>The agent can now place &#8220;blocks set in the inventory slot&#8221; in any direction: forward, backward, left, right, up, or down.<\/p>\n<p>The coordinates of the placed block change depending on the agent&#8217;s orientation and position.<br \/>\nPlacement directions can be chosen from the following:<\/p>\n<ul>\n<li>Forward<\/li>\n<li>Backward<\/li>\n<li>Right<\/li>\n<li>Left<\/li>\n<li>Up<\/li>\n<li>Down<\/li>\n<\/ul>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;Enable agent slot (1)]\n&#x5B;Set slot (1) with 64 stone blocks]\n&#x5B;Have agent place block (forward)]\n<\/pre>\n<ul>\n<li>Forward \/ Backward \/ Right \/ Left depend on the agent&#8217;s current &#8220;orientation&#8221;.<\/li>\n<li>Example: After rotating right, the direction of &#8220;forward&#8221; also changes.<\/li>\n<li>Up \/ Down places blocks vertically based on the position where the agent is standing.<\/li>\n<li>Block placement requires prior execution of Enabling Slot and Setting Block in Slot.<\/li>\n<\/ul>\n<h2>Troubleshooting<\/h2>\n<table>\n<thead>\n<tr>\n<th>Symptom<\/th>\n<th>Checkpoints<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cannot connect<\/td>\n<td>&#8211; Are you using the <strong>Desktop version<\/strong> of TurboWarp?- Check the IP address and port number.- Are ports (8787\/8788) blocked by a firewall?<\/td>\n<\/tr>\n<tr>\n<td>Cannot load extension<\/td>\n<td>&#8211; Check if the URL is correct.- Is <code>http.enabled<\/code> set to <code>true<\/code>?<\/td>\n<\/tr>\n<tr>\n<td>Pairing fails<\/td>\n<td>&#8211; Did you connect within 60 seconds after running <code>\/twbridge pair<\/code>?<\/td>\n<\/tr>\n<tr>\n<td>Commands do not reflect<\/td>\n<td>&#8211; Is the connection state maintained?- Executing commands other than <code>\/say<\/code> may require permissions.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Summary &#038; Future Expansion Plans<\/h2>\n<p data-start=\"4293\" data-end=\"4375\">twbridge is a minimal plugin to bring the appeal of the education edition\u2014<br data-start=\"4304\" data-end=\"4307\" \/>&#8220;<strong data-start=\"4308\" data-end=\"4325\">controlling Minecraft with blocks<\/strong>&#8220;\u2014<br data-start=\"4336\" data-end=\"4339\" \/>into the Java Edition Paper server environment.<\/p>\n<p data-start=\"4377\" data-end=\"4416\">Currently, it only has basic connection and agent generation functions, but we plan to add the following in the future.<\/p>\n<table>\n<thead>\n<tr>\n<th>Item<\/th>\n<th>Purpose \/ Overview<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Agent Movement, Rotation, Block Placement \/ Destruction<\/td>\n<td>Add action blocks close to MakeCode, enabling tasks within the world (movement, orientation change, placement, destruction).<\/td>\n<\/tr>\n<tr>\n<td>Status Retrieval Blocks (Coordinates, Orientation, etc.)<\/td>\n<td>Retrieve information such as position, orientation, and surrounding blocks to make it easier to build conditional branches and automation logic.<\/td>\n<\/tr>\n<tr>\n<td>Independent Agent Operation via Threading<\/td>\n<td>Process each agent with a separate thread + independent timer, allowing multiple different actions to proceed concurrently.<\/td>\n<\/tr>\n<tr>\n<td>wss (Secure WebSocket) Support<\/td>\n<td>Enable secure connection from HTTPS environments and browser-based TurboWarp, expanding operational options.<\/td>\n<\/tr>\n<tr>\n<td>Enhancement of Connection Logs and Monitoring Functions<\/td>\n<td>Make it easier to track connected clients and operation history, facilitating management and troubleshooting during classes and experiments.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Related Links<\/h2>\n<h3>Block Code Plugin Related<\/h3>\n<ol>\n<li><a href=\"https:\/\/donguri3.net\/server-tech\/makecode-free-alt-java-scratch-turbowarp-mcpq\/\">Reproducing the Minecraft: Education &#8220;Block Coding \u00d7 Agent (Working Robot)&#8221; Experience in Java Edition Minecraft<\/a><\/li>\n<\/ol>\n<h3>PDCA Related<\/h3>\n<ol>\n<li><a href=\"https:\/\/donguri3.net\/server-tech\/minecraft-pdca-education\/\">Learning the PDCA Cycle through Minecraft \u2014 Fostering Thinking Skills While Having Fun<\/a><\/li>\n<li><a href=\"https:\/\/donguri3.net\/server-tech\/whiteboard-plugin-paper-minecraft\/\">Running the PDCA Cycle in Minecraft! The Story of Creating a Whiteboard Plugin to Learn with Children<\/a><\/li>\n<\/ol>\n<h3>Paper Server Related<\/h3>\n<ol>\n<li><a href=\"https:\/\/donguri3.net\/server-tech\/minecraft-paper-server-setup\/\">How to Build a Minecraft Server: A Paper Server Construction Guide for Learning with Children<\/a><\/li>\n<li><a href=\"https:\/\/donguri3.net\/server-tech\/papermc-hangar-github-actions-quickshare\/\">Until \u201cAutomatically\u201d Publishing PaperMC Plugins with GitHub Actions<\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TurboAgent (changed from twbridge on 12\/7) is a plugin that allows you to control the Minecraft Java Edition ( [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2339,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=2347","footnotes":""},"categories":[1168],"tags":[51,52,935,915,836,876,881,918,917,936,930,10,179,934,865,933,278],"class_list":["post-5250","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-minecraft","tag-git","tag-https","tag-javaminecraft","tag-makecode","tag-minecraft","tag-papermc","tag-pdca","tag-scratch","tag-turbowarp","tag-twbridge","tag-websocket","tag-server","tag-179","tag-934","tag-865","tag-ict","tag-278","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=5250"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5250\/revisions"}],"predecessor-version":[{"id":5254,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5250\/revisions\/5254"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/2339"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=5250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=5250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=5250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}