Making octogonal words Last Thursday user @SpookyGengar delighted us with his/her first challenge about Making Squared Words. What if we double the number of sides?

The challenge

Take a string as input in any reasonable format you need (string, char array...) and output an octogonal representation of the input (also in any reasonable format: string, list of strings, char matrix...) as in the next examples:

Input: golf
Output:

   golf
  o    l
 l      o
f        g
l        o
o        l
g        f
 o      l
  l    o
   flog


Input: HelloWorld
Output:

         HelloWorld
        e          l
       l            r
      l              o
     o                W
    W                  o
   o                    l
  r                      l
 l                        e
d                          H
l                          e
r                          l
o                          l
W                          o
o                          W
l                          o
l                          r
e                          l
H                          d
 e                        l
  l                      r
   l                    o
    o                  W
     W                o
      o              l
       r            l
        l          e
         dlroWolleH


Input: a
Output:

a


Input: ab
Output:

 ab
b  a
a  b
 ba


Input: code golf
Output:

        code golf
       o         l
      d           o
     e             g

   g                 e
  o                   d
 l                     o
f                       c
l                       o
o                       d
g                       e

e                       g
d                       o
o                       l
c                       f
 o                     l
  d                   o
   e                 g

     g             e
      o           d
       l         o
        flog edoc


Notes


Input will consist only of printable ASCII characters.
Leading and/or trailing whitespaces and newlines allowed as long as the octogonal shape is maintained.
This is code-golf, so may the sortest program/function for each language win!
Charcoal, 16 bytes (10 bytes noncompeting)

Ｆ⁸«✂θ⁰±¹↷¹Ａ⮌θθ»θ


Try it online! Link is to verbose version of code. Explanation:

Ｆ⁸«                 Repeat for each side of the octagon
   ✂θ⁰±    ¹        Print the input except the last character
        ↷¹          Rotate 45° clockwise
          Ａ⮌θθ      Reverse the input string
              »θ    Print the input again, to handle the length 1 case


Alternative length 1 fix, also 16 bytes: Verbose version.

ＰθＦ⁸«✂θ⁰±¹↷¹Ａ⮌θθ


A Charcoal bugfix means that the following 10-byte code now works: Verbose version.

Ｆ⁴«θ←↘⮌θ↖⟲