There is a record of creating the version to be posted first. In addition, it is a version that updates the article already posted on qiita. Code below
ruby post_final.rb post_final.org 
You can do something. In the first post, create a new one, and then write the id of items in org. If it exists, it will patch its id.
In addition, you can select'open',' teams'. default is'private'.
ruby post_final.rb post_final.org teams
What?
key is
-I made a package to export Qiita compliant Markdown from Org-mode
code
require "net/https"
require "json"
def get_title_tags(src)
  $conts = File.read(src)
  title =  $conts.match(/\#\+(TITLE|title|Title): (.+)/)[2] || "test"
  m = []
  tags = if m =  $conts.match(/\#\+(TAG|tag|Tag|tags|TAGS|Tags): (.+)/)
	   m[2].split(',').inject([]) do |l, c|
      l << {name: c.strip} #, versions: []}
    end
	 else
	   [{ name: "hoge"}] #, versions: [] }]
	 end
  p tags
  return title,tags
end
src = ARGV[0] || 'README.org'
title, tags = get_title_tags(src)
p title
p tags
system "emacs #{src} --batch -l ~/.emacs.d/site_lisp/ox-qmd -f org-qmd-export-to-markdown --kill"
lines = File.readlines(src.gsub('org','md'))
m = []
patch = false
if m = $conts.match(/\#\+qiita_id: (.+)/)
  qiita_id = m[1]
  patch = true
else
  qiita_id = ''
end
case ARGV[1]
when 'teams'
  qiita = 'https://nishitani.qiita.com/'
  access_token = ENV['QIITA_TEAM_WRITE_TOKEN']
  private = false
when 'open'
  qiita = 'https://qiita.com/'
  access_token = ENV['QIITA_WRITE_TOKEN']
  private = false
else
  qiita = 'https://qiita.com/'
  access_token = ENV['QIITA_WRITE_TOKEN']
  private = true
end
params = {
  "body": lines.join, #"#test",
  "private": private,
  "title": title,
  "tags": tags
}
if patch
  path = "api/v2/items/#{qiita_id}"
else
  path = 'api/v2/items'
end
p qiita+path
uri = URI.parse(qiita+path)
http_req = Net::HTTP.new(uri.host, uri.port)
http_req.use_ssl = uri.scheme === "https"
headers = {"Authorization" => "Bearer #{access_token}",
  "Content-Type" => "application/json"}
if patch
  res = http_req.patch(uri.path, params.to_json, headers)
else
  res = http_req.post(uri.path, params.to_json, headers)
end
p res.message
res_body = JSON.parse(res.body)
res_body.each do |key, cont|
  if key == 'rendered_body' or key == 'body'
    puts "%20s brabrabra..." % key
    next
  end
  print "%20s %s\n" % [key, cont]
end
system "open #{res_body["url"]}"
qiita_id =res_body["id"]
unless patch
  File.write(src,"#+qiita_id: #{qiita_id}\n"+$conts)
end
Well, please refactor.
If you want to put it in two places with open and teams, you will not know which is which. I wonder if it can be updated automatically around that point. .. ..
Recommended Posts